Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Продавай свои разработки в Маркете. Это безопасно!
Михаил
1024
Михаил 2012.01.19 10:02 
как узнать как закрылись два последних ордера? или как закрылся последний и предпоследний ордер? как это реализовать на MQL?
Актер
2301
Актер 2012.01.19 10:17  

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

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;
    }
}
Комбинатор
15918
Комбинатор 2012.01.19 10:17  

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

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

OnGoing:

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

Код не будет работать онлайн.
Актер
2301
Актер 2012.01.19 10:20  
TheXpert:

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

У меня работает)
Комбинатор
15918
Комбинатор 2012.01.19 10:23  
OnGoing:
У меня работает)
Угу. Зайдите во вкладку история и фильтраните... по профиту скажем. Потом проверьте свой код на работоспособность.
Михаил
1024
Михаил 2012.01.19 10:25  
у меня такая задача. на начало дня нужно узнать как закрылись два ордера в предыдущем дне. в результате анализа снова открыть два ордера.
Актер
2301
Актер 2012.01.19 10:26  
TheXpert:
Угу. Зайдите во вкладку история и фильтраните... по профиту скажем. Потом проверьте свой код на работоспособность.
Ну в таком случае MODE_HISTORY вообще не работает хотите сказать? Думаю не должно быть таких коллизий в МТ.
Актер
2301
Актер 2012.01.19 10:31  
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;
    }
}
Комбинатор
15918
Комбинатор 2012.01.19 10:32  
OnGoing:
Ну в таком случае MODE_HISTORY вообще не работает хотите сказать? Думаю не должно быть таких коллизий в МТ.
А проверить?
Михаил
1024
Михаил 2012.01.19 10:35  
OnGoing:

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


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

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

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

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий