У меня возникает проблема по утрам. При запущенном скрипте. Если скрипт запустить потом или перезапустить скрипт, устроить дисконект, выключить Квик никаких проблем нет. Только утро и все!
Функция create(time_can) выполняется для всех свечей графика, а должна выполняться только для новой свечи.
Функция create(time_can) выполняется для всех свечей графика, а должна выполняться только для новой свечи.
Код |
---|
is_run = true Class_Code = "SPBFUT" Sec_Code="RIM5" TF=INTERVAL_M30 old_can=20150422100 -- время последней обработанной свечи function main() read_param_file() -- считываем время свечи из файла ds = CreateDataSource(Class_Code, Sec_Code, TF) sleep(200) while is_run do sleep(1000) if isConnected()==1 and getInfoParam("SERVERTIME")~=nil then sleep(1000) local n_last_candle=ds:Size() local t_last_candle=tonumber(ds:T(n_last_candle).year..Chisla(ds:T(n_last_candle).month)..Chisla(ds:T(n_last_candle).day)..Chisla(ds:T(n_last_candle).hour)..Chisla(ds:T(n_last_candle).min)) if tonumber(t_last_candle)~=tonumber(old_can) then local p_new_candles=new_candle(n_last_candle) -- получение новых свечей for i=n_last_candle-p_new_candles, n_last_candle do time_can=tostring(ds:T(i).year)..Chisla(ds:T(i).month)..Chisla(ds:T(i).day)..Chisla(ds:T(i).hour)..Chisla(ds:T(i).min) create(time_can) -- действия над свечами end old_can=t_last_candle save_time(old_can) --сохранение в файл времени последней свечи end end end ds:Close() end -- функция возвращает кол-во новых свечей от текущей function new_candle(n_last_candle) local p_new_candles=0 for i=0,n_last_candle-1 do if tonumber(old_can)<tonumber(tostring(ds:T(n_last_candle-i).year)..Chisla(ds:T(n_last_candle-i).month)..Chisla(ds:T(n_last_candle-i).day)..Chisla(ds:T(n_last_candle-i).hour)..Chisla(ds:T(n_last_candle-i).min)) then p_new_candles=i else break end end return p_new_candles end function OnStop(stop_flag) is_run=false stop_flag=1 end |