Как мониторить факт срабатывания отложенного ордера? - страница 2

 
Viktar Dzemikhau:

Можно и так. Можно вообще проверять изменение количества ордеров или позиций, но как-бы это костыль.

У меня не проверяется изменение количества. 

Появилась необходимость мониторить момент, когда отработает ордер т.е. когда он станет рыночным.

При выставлении отложенного (из советника) устанавливаем флаг order_exist_stop (флаг открытой позиции order_exist сброшен (можно position_exist)). Когда срабатывает отложенный, появляется позиция, а флага открытой позиции нет. Задача выполнена.

//--- проверка установленных ордеров
   if(!order_exist && my_Position.Select(Symbol()) && my_Position.Symbol()==Symbol())
   {
      pos_price = my_Position.PriceOpen();
      if(my_Position.PositionType() == POSITION_TYPE_BUY)   trend = trend_up;
      else                                                  trend = trend_dn;
      
      if(order_exist_stop)
      {
         if(trend == trend_up)   Comment("Сработал отложенный ордер на покупку.\nВзял под контроль...");
         else                    Comment("Сработал отложенный ордер на продажу.\nВзял под контроль...");
         order_exist_stop   = false;
         order_exist        = true;
      }
      else
      {
         if(trend == trend_up)   Comment("Найден ордер на покупку.\nВзял под контроль...");
         else                    Comment("Найден ордер на продажу.\nВзял под контроль...");
      }
   }
 
Сергей Таболин:

У меня не проверяется изменение количества. 

При выставлении отложенного (из советника) устанавливаем флаг order_exist_stop (флаг открытой позиции order_exist сброшен (можно position_exist)). Когда срабатывает отложенный, появляется позиция, а флага открытой позиции нет. Задача выполнена.

А в общем виде? Когда может быть несколько отложек? И позиций тоже несколько, на хедж счете?

 
Andrey Barinov:

А в общем виде? Когда может быть несколько отложек? И позиций тоже несколько, на хедж счете?

Я на хедже не работаю, поэтому и не задумывался над этим...

 
Сергей Таболин:

Я на хедже не работаю, поэтому и не задумывался над этим...

На нетто тоже можно ставить несколько отложек и доливать/отливать от позиции. Я про то и говорю, что Ваше решение подходит только для конкретной Вашей задачи, с одной отложкой.

 
Andrey Barinov:

На нетто тоже можно ставить несколько отложек и доливать/отливать от позиции. Я про то и говорю, что Ваше решение подходит только для конкретной Вашей задачи, с одной отложкой.

Понял Вас. На нетте, если есть позиция, то срабатывание других отложек приводит к изменению объёма позиции, к полному её закрытию, перевороту... Отследить этот момент тоже совершенно не сложно.

 
Сергей Таболин:

Понял Вас. На нетте, если есть позиция, то срабатывание других отложек приводит к изменению объёма позиции, к полному её закрытию, перевороту... Отследить этот момент тоже совершенно не сложно.

это называется "костыль"

 
Andrey Barinov:

это называется "костыль"

Честно говоря не вижу разницы в проверке объёма позиции или в ловле этого в OnTradeTransaction()

На мой взгляд контролировать позицию проще )) 

Но спорить не буду, ибо этот вопрос не рассматривал в виду отсутствия необходимости.

 
Сергей Таболин:

Я на хедже не работаю, поэтому и не задумывался над этим...

А нужно задумываться. Ведь когда проектируешь интерфейс, он должен быть расширяем и максимально охватывать круг задач. Есс-но, без лишнего. Но не под одну задачу писать, что бы потом, если что, писать опять и опять..
 
Viktar Dzemikhau:
А нужно задумываться. Ведь когда проектируешь интерфейс, он должен быть расширяем и максимально охватывать круг задач. Есс-но, без лишнего. Но не под одну задачу писать, что бы потом, если что, писать опять и опять..

Возможно. Но я пишу исключительно для себя и хедж не использую. Так что для меня это лишнее )

 
Vladimir Karputov:

Какой  суппорт? Если сами не научитесь думать -никто не научит :) .


Пример, как ловить появление позиции - ловим транзакцию TRADE_TRANSACTION_DEAL_ADD (Добавление сделки в историю. Осуществляется в результате исполнения ордера или проведения операций с балансом счета), далее ловим сделку с типом DEAL_ENTRY_IN (Вход в рынок), страхуемся - это должна быть именно сделка DEAL_TYPE_BUY (Покупка) или DEAL_TYPE_SELL (Продажа)

Всё, мы словили момент, когда гарантированно появилась позиция. И никаких ордеров! Только сделки!

А может не будет об этом? Я столько тем находил, созданных Vladimir Karputov'ым, с примитивными вопросами и нормально.. И в этом ничего нет зазороного. У каждого бывают подобные моменты. У меня бывает иногда и.. у любого здесь присутствующего случается от перегрузки заскоки. Но это же не значит, что никто здесь не думает? Я вчера первый раз об этом призадумался т.к. раньше не было причин использовать подобную возможность.

Тем более, мы с тобой знакомы уже не первый год и я знаю, что ты этим занимаешься уже больше чем я. У меня несколько лет был опыт в другой сфере, хотя тоже программирование. А с этой цепочкой .. ордера, позиции и сделки.. нужно всё понять. Не всё сразу.

На данный момент, есть нестыковка логическая, если говорить о OnTradeTransaction() в присутствии TRADE_TRANSACTION_REQUEST. Этот тип полуячается, возвращает признак того, что произолшла какая-то операция(сделка) и всё. Как по мне, это лишнее. Проще проверять конкретно.. сработал тип такой-то, тогда делаем то-то и всё..

Причина обращения: