У меня возникает проблема по утрам. При запущенном скрипте. Если скрипт запустить потом или перезапустить скрипт, устроить дисконект, выключить Квик никаких проблем нет. Только утро и все!
Функция 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
|