Вот такого рода код.
Может быть я был не прав засунув что-то в функции обратного вызова?
Может быть я был не прав засунув что-то в функции обратного вызова?
Код |
---|
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 |