Вот такого рода код.
Может быть я был не прав засунув что-то в функции обратного вызова?
Может быть я был не прав засунув что-то в функции обратного вызова?
| Код |
|---|
fut = "SIU5" --торгуемый фьючерс
range = 200
lots = 1 --количество торгуемых лотов
ID = 1 --Айди транзакций
totalnet = 0 --начальный размер позиции
dofile("transaction.lua")
dofile("candle.lua")
function OnAllTrade(AllTrades)
if AllTrades.sec_code == fut then
Price = AllTrades.price
posa = chemp(Price, range)
Class = AllTrades.class_code
end
end
function OnFuturesClientHolding(fut_pos)
if fut_pos.sec_code == fut then
totalnet = fut_pos.totalnet
PrintDbgStr("Changed position size to "..tostring(position))
end
end
function OnStop()
is_run = 0
end
function main()
while is_run == 1 do
if position > posa then
--ВЫХОДИМ ИЗ ЛОНГА; КОЛИЧЕСТВО В ЗАЯВКЕ = lots + totalnet
Qty = lots + totalnet
OrderSell (Price, ID, Class, Qty, fut)
ID = ID + 1
position = -1
PrintDbgStr("Перевернулись в шорт по цене "..tostring(Price))
elseif position < posa then
--ВЫХОДИМ ИЗ ШОРТА; КОЛИЧЕСТВО В ЗАЯВКЕ С УЧЁТОМ РАЗМЕРА ОСТАТКА ПО СЧЁТУ
Qty = lots - totalnet
OrderBuy (Price, ID, Class, Qty, fut)
ID = ID + 1
position = 1
PrintDbgStr("Перевернулись в лонг по цене "..tostring(Price))
end
sleep(100)
end
end
|