Блог им. gagarin
--Параметры:
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
Но кога загружаю в квик вылазиет ошибка. Кто поможет?
нужно задать источник данных, откуда берутся свечки:
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