Скорее всего проблема была в том, что робот "просчитывался" до того как в с сервера были получены необходимые данные. После добавления проверок условий типа
Код
local N=getNumCandles("Si_price")
t,n,i=getCandlesByIndex("Si_price", 0, N-3, 3)
if ((N>1) and (type(t) =='table') )then ..
Добрый день! Ситуация следующая: виртуальный сервер, на нем QUIK, включил скрипт на Lua. На следующий день, после переподключения QUIK скрипт останавливается с ошибкой attempt to index? (a nil value) на строке проверки условия
Код
if ((my_position==0)and(ind==0)and(t[1].close > tt1[0].close)) then
...
end
точнее на проверке условия (t[1].close > tt1[0].close) (пробовал вынести это условие на отдельную строку, ошибка возникает при проверке именно этого условия).
t[1].close - цена закрытия предыдущей полностью сформировавшейся свечи (5М) tt1[0].close - предпредыдущее значение индикатора PriceChannel(upper) Заказываю последние свечи: t,n,i=getCandlesByIndex("Si_price", 0, N-3, 3), таким образом t[2].close - текущая цена, t[1].close -цена закрытия предыдущей свечи, t[0].close - цена закрытия предпредыдущей свечи.
До переподключения (т.е. всю ночь и до 9:55 (пробовал переподключаться и в 10:16) ) скрипт был запущен, после переподключения QUIK - выключается с ошибкой attempt to index? (a nil value).
скрипт QPILE-подобный, т.е. пересчитывается каждые 1.5 секунды:
Код
function main()
to_log("main_started"
--message("connection state is " .. tostring(isConnected()), 3)
while is_run do
stime=getSTime() or tonumber(os.date("%H%M%S")
if ((stime>100030 and stime<184500) or (stime>190030 and stime<235000)) then --не считаем вне сессии
if (isConnected()) then
sleep(1500)
robot()
end
if (isConnected()~=1) then
to_log("not connected"
end
end
end
end