<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

svyatoslavf

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

Karim

Karim, 29- if t1[0].close>t2[0].close and t1[1].close
Не определен массив 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, Друг подскажи пожалуйста куда вставлять код

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

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

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