Здравствуйте!
Имею три работающих скрипта на Lua, которые периодически (раз в пару дней кто-нибудь из них точно) "засыпают" - перестают выдавать проверочные сообщения, но на другие "раздражители" реагируют. (фото 2 - нормальная работа, фото 1 - "засыпание")
Основная проблема в том, что, если сделка случается в таком состоянии скрипта, она всегда заканчивается кучей сообщений с ошибками (типа: Не могу снять стоп-заявку. Пришел статус 4. и подобными). Хотя в нормальном состоянии скрипта сделки проходят корректно.
Сам скрипт достаточно большой - вот самое парадоксальное место: как видно на фото скрипт игнорирует сообщение каждые 15 минут, но реагирует на закрытие торгового дня !
обе функции так и стоят рядом, в корне основного потока. Ни на какие дополнительные условия не завязаны.
Буду признателен за любую помощь в решении этой загадки
Имею три работающих скрипта на Lua, которые периодически (раз в пару дней кто-нибудь из них точно) "засыпают" - перестают выдавать проверочные сообщения, но на другие "раздражители" реагируют. (фото 2 - нормальная работа, фото 1 - "засыпание")
Основная проблема в том, что, если сделка случается в таком состоянии скрипта, она всегда заканчивается кучей сообщений с ошибками (типа: Не могу снять стоп-заявку. Пришел статус 4. и подобными). Хотя в нормальном состоянии скрипта сделки проходят корректно.
Сам скрипт достаточно большой - вот самое парадоксальное место: как видно на фото скрипт игнорирует сообщение каждые 15 минут, но реагирует на закрытие торгового дня !
обе функции так и стоят рядом, в корне основного потока. Ни на какие дополнительные условия не завязаны.
Буду признателен за любую помощь в решении этой загадки
| Код |
|---|
--===============================================
if Here == 0 then --- сообщение каждые 15 минут. с запомнеными параметрами
Here = math.floor(os.clock())
elseif math.floor(os.clock()) == Here + 900 then
Here = math.floor(os.clock())
message ("SBER. I`m here! every 15 min", 1)
message("StartUP - "..tostring(StartUP), 1)
message("tp[0].open - "..tostring(tp[0].open), 1)
message("StartDOWN - "..tostring(StartDOWN), 1)
sleep(50)
end
--===============================================
-- проверка TIME
local Time = integer
dt = os.date() -- системная функция времени/даты
ddt = string.sub(dt, 10, 14) -- берем нужные графы
if ddt == "18:44" then Time = 1 -- тут ставим время выхода из позиций LastOpenBarIndex = DS:Size()
while Time == 1 do
to_log("trade day ends ".." close "..tostring(count).." lot(s)")
message ("SBER trade day ends ".." close "..tostring(count).." lot(s)",1)
if count > 0 then
Trade("S",count,lastPrice-p_spread)
count = 0
stv.SetVar("count", 0)
if SP == 1 then
Rem_ST_TP(ST_orderNum)
end
end
if count < 0 then
Trade("B",math.abs(count),lastPrice+p_spread)
count = 0
stv.SetVar("count", 0)
if SP == 1 then
Rem_ST_TP(ST_orderNum)
end
end
Time = 0
sleep(900000) -- 15 минут спим,чтобы недопустить вход до конца торг. сессии
end
elseif ddt == "10:00" then
LastOpenBarIndex = DS:Size()
end
|