Блокировка трала при походе к тейку

 

Коллеги, вопрос такой назрел. 

Есть трейлинг-стоп. Который проверяет изменение цены каждый тик.

Когда цена близко подходит к уровню тейк профита, вылетает ошибка, что нельзя модифицировать стоп лосс.

За это отвечает MODE_FREEZELEVEL

Но беда в том, что у дилера MODE_FREEZELEVEL и MODE_STOPLEVEL нулевые. 


Такой фиговый трал пушит на серв впустую. Какое решение сделать, чтобы не спамить?

Думал вот как:

1. Брать спред, умножать его на 1,5, или 2. Не помогло. Помножать на 3 становится уже критично, так как позиция становится брошена и не сопровождается тралом. Если спред по инструменту большой, то совсем грустно.

2. Если вылетает ошибка, то Sleep. Но использование этой функции в это случае больше похоже на жуткий костыль.

Какие еще идеи могут быть? 

 

Если речь именно про видимый трал (т. е. реально отправлять Stop Loss на сервер), то единственный вариант 1 - умножать на 3.

Другой вариант - сделать виртуальный трал. Для него никакие Stop Level и Freeze Level не страшны. Разве что реквоты. Но для Stop Loss также вероятно проскальзывание.

Ну и самый радикальный способ - поменять тип счета или ДЦ, чтобы Freeze Level и Stop Level были реально 0. Мне наиболее правильным видится именно такой способ.

 
Nikita Chernyshov:

...

2. Если вылетает ошибка, то Sleep. Но использование этой функции в это случае больше похоже на жуткий костыль.

Какие еще идеи могут быть? 

Сделайте не жуткий костыль. Например, создайте глобальную переменную, привязанную к ордеру... 

 
Dmitry Fedoseev #:

Сделайте не жуткий костыль. Например, создайте глобальную переменную, привязанную к ордеру... 

Не понял логики идеи. Что дальше с ней делать?

 
Nikita Chernyshov #:

Не понял логики идеи. Что дальше с ней делать?

При получении ошибки модификации, создать глобальную переменную. 

Если у ордера есть глобальная переменная, то больше его не модифицировать.