Виталий
Виталий личный блог
18 октября 2016, 10:46

Автоматизация QUIK - Сигнал начала нового таймфрейма

Тут уже проскочило пару постов на тему автоматизации. За что авторам спасибо.
У меня же вопрос и задача такая (к знатокам LUA).

Есть скрипт взят отсюда (https://quik2dde.ru/viewtopic.php?id=79)
-- подключить библиотеку w32
local w32 = require("w32")

-- функция проигрывания файла
-- вызов: PaySoundFile("имя файла")
function PaySoundFile(file_name)
  w32.mciSendString("CLOSE QUIK_MP3") 
  w32.mciSendString("OPEN \"" .. file_name .. "\" TYPE MpegVideo ALIAS QUIK_MP3")
  w32.mciSendString("PLAY QUIK_MP3")
end


Необходимо добавить в скрипт, чтобы звуковой файл проигрывался с заданным интервалом всю торговую сессию? (каждые 15,60,240минут)
Буду благодарен и не только я, если «добавите в рецепт свои пряности». Главное чтобы заработало.
Спасибо.
17 Комментариев
  • Karim
    18 октября 2016, 12:24
    s = getInfoParam («SERVERTIME») 
    if tonumber(string.sub(s,4,5)) == 0 then
        PaySoundFile(file_name)
    end

    Будет запускаться каждый час. По аналогии напишите остальные.
      • Karim
        18 октября 2016, 13:19
        Виталий, Ну почитайте хотя бы мануал по QLua, или погуглите. Там все есть. tonumber() — преобразовать строку в число
  • Чёрный кот
    18 октября 2016, 12:43
    Нового бара, а не таймфрейма)
  • Сергей Гаврилов
    18 октября 2016, 14:02
    Ответьте на тупой вопрос: а как эта функция определит, что час уже прошел и надо вызываться?
    • Karim
      18 октября 2016, 17:16
      Сергей Гаврилов, У начала каждого часа минуты равны 0.
      • Сергей Гаврилов
        18 октября 2016, 17:23
        Karim, вопрос не в этом… Функцию нужно вызвать… Что-то я таймера или какого другого периодического события в коде не наблюдаю..
        • Karim
          18 октября 2016, 19:32
          Сергей Гаврилов, Ну я уж не стал весь код приводить. Вопрос был, что добавить в скрипт, а не как его написать.

          function main()
           IsRun = true
           while IsRun do
            s = getInfoParam («SERVERTIME») 
            if tonumber(string.sub(s,4,5)) == 0 then
               PaySoundFile(file_name)
            end
            sleep(1000)
           end
          end

  • Karim
    20 октября 2016, 11:39
    function main()
     IsRun = true
     begin = true
     while IsRun do
      s = getInfoParam («SERVERTIME») 
      if tonumber(string.sub(s,4,5)) == 0 and begin then
         PaySoundFile(file_name)
         begin = false
      end
      if tonumber(string.sub(s,4,5)) == 1 then     
         begin = true
      end
      sleep(1000)
     end
    end

    Как то так. Проверять нет времени. 
    Если не программист, то есть два варианта. Либо стать им и написать самому, либо нанять.
      • Karim
        25 октября 2016, 16:52
        Попробуй так:

          if tonumber(string.sub(s,4,5))%15 == 0 and begin then
             PaySoundFile(file_name)
             begin = false
          end

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн