Как выяснить тикет оставшегося ордера?

 

Здравствуйте, товарищи! 

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

Советник при некоторой прибыли закрывает половину объема ордера. Потом два варианта. Либо по стоплоссу, либо по тейку.

пишу код

if(OrderSelect(tickett,SELECT_BY_TICKET,MODE_HISTORY) && OrderCloseTime()>0)

      {

      if(OrderClosePrice()==  OrderStopLoss()) Print(1);

      if(OrderClosePrice()==OrderTakeProfit()) Print(2);

      }

 Если по стоплоссу находит, Профит - нет. Как это сделать правильно?

 

Ну, думал, что если цена закрытия ордера равна цене стоплосса, то этот ордер закрылся по СЛ, и тоже для ТП.

Пробовал по прибыли сравнивать, все равно тот же результат. 

 
Maksim Garkin:

Здравствуйте, товарищи! 

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

Советник при некоторой прибыли закрывает половину объема ордера. Потом два варианта. Либо по стоплоссу, либо по тейку.

пишу код

if(OrderSelect(tickett,SELECT_BY_TICKET,MODE_HISTORY) && OrderCloseTime()>0)

      {

      if(OrderClosePrice()==  OrderStopLoss()) Print(1);

      if(OrderClosePrice()==OrderTakeProfit()) Print(2);

      }

 Если по стоплоссу находит, Профит - нет. Как это сделать правильно?

1. Если ищете ордер в истории, естественно у него будет OrderCloseTime()>0, зачем это проверять?

2. МОжет, сделать нечеткое сравнение? Например

if(MathAbs(OrderClosePrice() - OrderTakeProfit()) >= 0.0001) Print(2);

 


 
Maksim Garkin:

Здравствуйте, товарищи! 

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

Советник при некоторой прибыли закрывает половину объема ордера. Потом два варианта. Либо по стоплоссу, либо по тейку.

пишу код

if(OrderSelect(tickett,SELECT_BY_TICKET,MODE_HISTORY) && OrderCloseTime()>0)

      {

      if(OrderClosePrice()==  OrderStopLoss()) Print(1);

      if(OrderClosePrice()==OrderTakeProfit()) Print(2);

      }

 Если по стоплоссу находит, Профит - нет. Как это сделать правильно?

1. В комментарии ордера пишется тикет ордера с остатком объёма.

2. Выбор ордера по тикету не зависит от того закрыт он или нет, поэтому MODE_HISTORY писать необязательно.

3. Если ордер закрывался по тейку или стопу и проскользил чуток, то условие не будет выполнено.

 
Alexey Viktorov:

3. Если ордер закрывался по тейку или стопу и проскользил чуток, то условие не будет выполнено.


Я и писал, четкое сравнение не годится.
 
Alexey Volchanskiy:

Я и писал, четкое сравнение не годится.
Я не видел, мы писали одновременно, только ты чуток пошустрей:)))
 
Alexey Viktorov:
Я не видел, мы писали одновременно, только ты чуток пошустрей:)))
Ок, шоколадная медаль пополам ))
 
Alexey Volchanskiy:
Ок, шоколадная медаль пополам ))
Вообще работать перестало )) Верните медаль обратно ;)
 
Maksim Garkin:
Вообще работать перестало )) Верните медаль обратно ;)

Надо померить проскальзывание у брокера, сразу все станет ясно. У меня только что скрипт для этого в кодобазе опубликовали, меряйте на здоровье ) 

https://www.mql5.com/ru/forum/76821 

Скрипты: OpenOrderTime
Скрипты: OpenOrderTime
  • www.mql5.com
Скрипт измеряет время открытия и закрытия рыночного ордера и записывает их в файл. - - Категория: статьи и техническая библиотека по автоматическому трейдингу
 
Sergey Chalyshev:
Все смешалось в кучу, кони люди мухи котлеты. 
Вы сначала определитесь для какого терминала, мт4 или мт4?


мт4 

 
Sergey Chalyshev:
Все смешалось в кучу, кони люди мухи котлеты. 
Вы сначала определитесь для какого терминала, мт4 или мт4?

А как их отличить?
Причина обращения: