<HELP> for explanation

Блог им. gagarin

Сможет кто помочь с LUA

Ребята есть код робота честно скачен с инета. Робот на основе пересечений 2 мувингов.
 

--Параметры:
p_classcode=«SPBFUT» --Код класса
p_seccode=«EDZ5» --Код инструмента
p_account="     " --Код счета
p_clientcode="          " --Клиенткий код
p_count=2 --Размер позиции
p_spread=0,001 --Проскальзывание

is_run = true
count = 0


function main()
while is_run do
sleep(2000)
robot()
end
end

function robot()
local N1=getNumCandles(«MA1»)
local N2=getNumCandles(«MA2»)
local N=getNumCandles(«Price»)
t1,n1,i1=getCandlesByIndex(«MA1», 0, N1-3, 2)
t2,n2,i2=getCandlesByIndex(«MA2», 0, N2-3, 2)
t,n,i=getCandlesByIndex(«Price», 0, N-1, 1)

--сигнал на продажу (первый мувинг пересекает втрой сверху вниз
if t1[0].close>t2[0].close and t1[1].close<t2[1].close then
Trade(«S»,count+p_count,t[0].close-p_spread)
end

--сигнал на покупку (первый мувинг пересекает второй снизу вверх
if t1[0].close<t2[0].close and t1[1].close>t2[1].close then
Trade(«B»,p_count-count,t[0].close+p_spread)
end

end

function Trade(a_oper,a_count,a_price)
if a_count>0 then
t = {
[«CLASSCODE»]=p_classcode,
[«SECCODE»]=p_seccode,
[«ACTION»]=«NEW_ORDER»,
[«ACCOUNT»]=p_account,
[«CLIENT_CODE»]=p_clientcode,
[«TYPE»]=«L»,
[«OPERATION»]=a_oper,
[«QUANTITY»]=tostring(a_count),
[«PRICE»]=tostring(a_price),
[«EXPIRY_DATE»]=«GTS»,
[«TRANS_ID»]=«1»
}
res=sendTransaction(t)
message(«Количество до »..tostring(count).." количество сделки "..tostring(a_count).." тип операции"..a_oper,1)
if a_oper==«B» then
count=count+a_count
else
count=count-a_count
end
message(«Количество после »..tostring(count),1)
end
end

function OnStop(stop_flag)
is_run=false
stop_flag=1
end


Но кога загружаю в квик вылазиет ошибка. Кто поможет?

Сможет кто помочь с LUA 

 

создай папку в Квике LuaIndicators… в неё кидай скрипты… у тебя корневая папка стоит на рабочем столе… это неправильно
avatar

svyatoslavf

svyatoslavf, Друг, все сделал все ровно такая ошибка.
avatar

gagarin

надо код тогда проверять… скорее всего там косяк… сам пока не в теме
avatar

svyatoslavf

29 строка это какая?
avatar

Karim

Karim, 29- if t1[0].close>t2[0].close and t1[1].close
avatar

gagarin

Не определен массив t1. Разбирайся с функцией getCandlesByIndex(«MA1», 0, N1-3, 2) почему она не заполняет массив.
avatar

Karim

Karim, Возможно забыли указать идентификатор графика или неверный номер линии
avatar

Karim

Не так свечи в LUA добываются.
нужно задать источник данных, откуда берутся свечки:
function main()
ds = CreateDataSource(«SPBFUT»,p_seccode, INTERVAL_M10);
ds:SetUpdateCallback(cb)
local size = ds:Size()
local Open = ds:O(size)
local Open_1 = ds:O(size-1)

.......
end

function cb(index)
end
avatar

AlexShul

AlexShul, Друг подскажи пожалуйста куда вставлять код
avatar

gagarin


Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

Залогиниться

Зарегистрироваться
....все тэги
Регистрация
UPDONW