как узнать как закрылись два последних ордера?

 
как узнать как закрылись два последних ордера? или как закрылся последний и предпоследний ордер? как это реализовать на MQL?
 

Последний ордер закрылся по профиту/лосю:

if(ord>OrdersTotal()) signals();
ord = OrdersTotal();

...

void signals()
{
  int df = OrdersHistoryTotal()-1;
  if(OrderSelect(df,SELECT_BY_POS,MODE_HISTORY))
    {
      double ocp = OrderClosePrice();
      if(ocp==OrderTakeProfit()) PlaySound("tp_profit.wav");
      if(ocp==OrderStopLoss()) PlaySound("loss.wav");
      return;
    }
}
 

Вначале найти два ордера, затем узнать как они закрылись. Ваш кэп (с).

Или у вас с чем-то конкретным проблемы?

OnGoing:

Последний ордер закрылся по профиту/лосю:

Код не будет работать онлайн.
 
TheXpert:

... Код не будет работать онлайн.

У меня работает)
 
OnGoing:
У меня работает)
Угу. Зайдите во вкладку история и фильтраните... по профиту скажем. Потом проверьте свой код на работоспособность.
 
у меня такая задача. на начало дня нужно узнать как закрылись два ордера в предыдущем дне. в результате анализа снова открыть два ордера.
 
TheXpert:
Угу. Зайдите во вкладку история и фильтраните... по профиту скажем. Потом проверьте свой код на работоспособность.
Ну в таком случае MODE_HISTORY вообще не работает хотите сказать? Думаю не должно быть таких коллизий в МТ.
 
dmmikl86:
у меня такая задача. на начало дня нужно узнать как закрылись два ордера в предыдущем дне. в результате анализа снова открыть два ордера.

Если нужны только два ордера, то так (если больше, то перебор циклом). Вместо "PlaySound" делаете что Вам нужно.

signals(1);
signals(2);
....

void signals(int n)
{
  int df = OrdersHistoryTotal()-n;
  if(OrderSelect(df,SELECT_BY_POS,MODE_HISTORY))
    {
      double ocp = OrderClosePrice();
      if(ocp==OrderTakeProfit()) PlaySound("tp_profit.wav");
      if(ocp==OrderStopLoss()) PlaySound("loss.wav");
      return;
    }
}
 
OnGoing:
Ну в таком случае MODE_HISTORY вообще не работает хотите сказать? Думаю не должно быть таких коллизий в МТ.
А проверить?
 
OnGoing:

Если нужны только два ордера, то так (если больше, то перебор циклом). Вместо "PlaySound" делаете что Вам нужно.


на сколько я знаю для такого способа, "ордера в истории" должны быть отсортированы по цене закрытия. а если у тебя работает несколько экспертов, то по такому алгоритму можно выбрать два последних "чужих ордера"
 
TheXpert:
А проверить?

Нет, возможно. Я к тому, что тогда получается вообще история ордеров в МТ работает некорректно? Это больше вопрос уже к разработчикам.

Но думаю даже в этом случае можно выйти из положения, фильтрануть обратно по времени и делов-то)

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