помогите советом - как запрограммировать ожидания снятия стоп заявки?

Страницы: 1
RSS
помогите советом - как запрограммировать ожидания снятия стоп заявки?
 
Помогите пожалуйста.

Задача такая: стоят стопы и тейки на определенных высотах. График до них не доходит, но при определенных условиях, нужно войти в позицию.
Если просто поставить заявку на вход по текущей цене, она не выставляется, т.к. идет превышение по ГО.
Значит надо сначала снять предыдущие заявки.
Использую оператор 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

Вопрос к знающим людям, почему так происходит? Почему терминал "забывает" обрабатывать связь с сервером и видеть изменения в заявках?
 
Ошибся в коде, внизу этой сроки WaitDeletingStops (hist_zap_full) нет, это я уже пробовал зациклить запуск сам в себе.  
 
Странное дело, на почту мне приходит много уведомлений, что в этой теме кто-то что-то ответил, а в самой теме ничего нет. Это какой-то глюк форума?
 
Цитата
Sergey Denegin написал:
Странное дело, на почту мне приходит много уведомлений, что в этой теме кто-то что-то ответил, а в самой теме ничего нет. Это какой-то глюк форума?
В этой ветке был написан ряд вирусных рекламных сообщений, не имеющих отношения к предметной области.
Данные сообщения были удалены.  
 
понял, спасибо
 
Цитата
local stop_orders_now = getItem("stop_orders",waiting_ordernum_todel[i][2])
Вы уверены, что это waiting_ordernum_todel[i][2] номер строки?
Я бы проверил, что получается в stop_orders_now.

И я бы проверил #waiting_ordernum_todel  

while #waiting_ordernum_todel > 0 do
--
--
--
message("#waiting_ordernum_todel ="..tostring(#waiting_ordernum_todel));
sleep(1000);
end;
Страницы: 1
Читают тему (гостей: 3)
Наверх