gagarin
gagarin личный блог
17 сентября 2015, 20:49

Сможет кто помочь с 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 

10 Комментариев
  • svyatoslavf
    17 сентября 2015, 21:01
    создай папку в Квике LuaIndicators… в неё кидай скрипты… у тебя корневая папка стоит на рабочем столе… это неправильно
  • svyatoslavf
    17 сентября 2015, 21:18
    надо код тогда проверять… скорее всего там косяк… сам пока не в теме
  • Karim
    17 сентября 2015, 21:32
    29 строка это какая?
  • Karim
    17 сентября 2015, 21:39
    Не определен массив t1. Разбирайся с функцией getCandlesByIndex(«MA1», 0, N1-3, 2) почему она не заполняет массив.
    • Karim
      17 сентября 2015, 22:02
      Karim, Возможно забыли указать идентификатор графика или неверный номер линии
  • AlexShul
    18 сентября 2015, 05:02
    Не так свечи в 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

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн