После срабатывания стопзаявки, запоминаем номер созданной заявки, по этому номеру путем перебора таблицы сделок находим нашу. Запоминаем цену исполнения сделки. Иногда все срабатывает как надо, а иногда скрипт подвешивает квик. Логи иногда заканчиваются строкой "стопзаявка исполнена", а иногда "запомнили номер заявки".
Кусочек скрипта:
if bit.band(stop_order.flags,0x2)==0x0 and bit.band(stop_order.flags,0x1)==0x0 then
to_log(tostring(SECCODE).." Cтоп-заявка № "..tostring(NO).." исполнена.")
if stop_order.linkedorder > 0 then
OrderNum_CLOSE = stop_order.linkedorder;
to_log(tostring(SECCODE).." Запоминаем номер созданной стоп-заявкой заявки - № "..tostring(OrderNum_CLOSE))
while Run and close_pos == 0 do
for i=0,getNumberOf("trades")-1 do
local trade = getItem("trades", i);
if trade.order_num == OrderNum_CLOSE then
EPSL = trade.price
to_log(tostring(SECCODE).." Цена исполнения стоп-заявки - "..tostring(EPSL))
close_pos = 2
break;
end;
end;
sleep(100);
end
end
end
Кусочек скрипта:
if bit.band(stop_order.flags,0x2)==0x0 and bit.band(stop_order.flags,0x1)==0x0 then
to_log(tostring(SECCODE).." Cтоп-заявка № "..tostring(NO).." исполнена.")
if stop_order.linkedorder > 0 then
OrderNum_CLOSE = stop_order.linkedorder;
to_log(tostring(SECCODE).." Запоминаем номер созданной стоп-заявкой заявки - № "..tostring(OrderNum_CLOSE))
while Run and close_pos == 0 do
for i=0,getNumberOf("trades")-1 do
local trade = getItem("trades", i);
if trade.order_num == OrderNum_CLOSE then
EPSL = trade.price
to_log(tostring(SECCODE).." Цена исполнения стоп-заявки - "..tostring(EPSL))
close_pos = 2
break;
end;
end;
sleep(100);
end
end
end