Здравствуйте!
Имею три работающих скрипта на 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 |