Помогите пожалуйста.
Задача такая: стоят стопы и тейки на определенных высотах. График до них не доходит, но при определенных условиях, нужно войти в позицию.
Если просто поставить заявку на вход по текущей цене, она не выставляется, т.к. идет превышение по ГО.
Значит надо сначала снять предыдущие заявки.
Использую оператор trans:killAllOrdersByClient
Но если после этого сразу поставить новую заявку, то все равно она не ставится, т.к. старые заявки удаляются не мгновенно, и ГО опять не хватает.
Я пробовал написать функцию, которая перебирает все существующие заявки и проверяет их статус, до тех пор, пока у них статус не станет "отменен", но проблем в том, что этот цикл.
Но проблема в том, что когда запускается этот цикл, то квик почему-то полностью подвисает, и такое ощущение, что даже перестает видеть изменения в состоянии заявок.
Вот так выглядит цикл:
В массиве waiting_ordernum_todel собраны все заявки, удаления которых надо дождаться
while #waiting_ordernum_todel > 0 do
for i = 1, #waiting_ordernum_todel do
if waiting_ordernum_todel[i] ~= nil then
local stop_orders_now = getItem("stop_orders",waiting_ordernum_todel[i][2])
-- если заявка НЕ активна то убираем ожидание
if CheckBit(stop_orders_now.flags,0) ~= 1 then
-- message_my ("Снялась заявки "..tostring_my (waiting_ordernum_todel[i]))
waiting_ordernum_todel[i] = nil
else
if waiting_ordernum_todel[i] ~= nil then
message_my ("WaitDeletingStops: еще активен стоп №"..waiting_ordernum_todel[i][2]..": "..tostring_my (stop_orders_now))
end
end
end
end
if #waiting_ordernum_todel > 0 then
message_my ("WaitDeletingStops: sleep 100")
sleep (100)
WaitDeletingStops (hist_zap_full)
end
end
Вопрос к знающим людям, почему так происходит? Почему терминал "забывает" обрабатывать связь с сервером и видеть изменения в заявках?
Задача такая: стоят стопы и тейки на определенных высотах. График до них не доходит, но при определенных условиях, нужно войти в позицию.
Если просто поставить заявку на вход по текущей цене, она не выставляется, т.к. идет превышение по ГО.
Значит надо сначала снять предыдущие заявки.
Использую оператор trans:killAllOrdersByClient
Но если после этого сразу поставить новую заявку, то все равно она не ставится, т.к. старые заявки удаляются не мгновенно, и ГО опять не хватает.
Я пробовал написать функцию, которая перебирает все существующие заявки и проверяет их статус, до тех пор, пока у них статус не станет "отменен", но проблем в том, что этот цикл.
Но проблема в том, что когда запускается этот цикл, то квик почему-то полностью подвисает, и такое ощущение, что даже перестает видеть изменения в состоянии заявок.
Вот так выглядит цикл:
В массиве waiting_ordernum_todel собраны все заявки, удаления которых надо дождаться
while #waiting_ordernum_todel > 0 do
for i = 1, #waiting_ordernum_todel do
if waiting_ordernum_todel[i] ~= nil then
local stop_orders_now = getItem("stop_orders",waiting_ordernum_todel[i][2])
-- если заявка НЕ активна то убираем ожидание
if CheckBit(stop_orders_now.flags,0) ~= 1 then
-- message_my ("Снялась заявки "..tostring_my (waiting_ordernum_todel[i]))
waiting_ordernum_todel[i] = nil
else
if waiting_ordernum_todel[i] ~= nil then
message_my ("WaitDeletingStops: еще активен стоп №"..waiting_ordernum_todel[i][2]..": "..tostring_my (stop_orders_now))
end
end
end
end
if #waiting_ordernum_todel > 0 then
message_my ("WaitDeletingStops: sleep 100")
sleep (100)
WaitDeletingStops (hist_zap_full)
end
end
Вопрос к знающим людям, почему так происходит? Почему терминал "забывает" обрабатывать связь с сервером и видеть изменения в заявках?