Очень нужна ваша помощь в написании функции - страница 2

 
traderEvgen:

Возможно Ваш вариант подойдет. Можно при открытие новой пари создавать объект класса и вызывать метод, который будет открывать эти позиции, в класе можно сделать две переменные с тикетами ордеров. Потом этот объект заносить в список, и при модификации брать цикл по списку и оттуда уже получать тикеты разных пар сделок 

Для тестера пойдет
 

вот набросал небольшой примерчик для работы с ордерами по тикету, может натолкнет на какие мысли

//+------------------------------------------------------------------+
//|                                                       test_3.mq4 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

int event_1; // событие для ордера 1
int event_2; // событие для ордера 2
int ticket1; // тикет ордера 1
int ticket2; // тикет ордера 2
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   event_1=Event(ticket1);
   event_2=Event(ticket2);
  }
//+------------------------------------------------------------------+
int Event(int tiket)
  {
   if(tiket<=0)return(0);
   if(OrderSelect(tiket,SELECT_BY_TICKET))
     {
      if(StringFind(OrderComment(),"sl")>=0)return(1);// ордер закрыт по стоплоссу.
      if(StringFind(OrderComment(),"tp")>=0)return(2);// ордер закрыт по тейк профиту.
      if(OrderCloseTime()!=0)return(3);// ордер закрыт вручную или по условию
      return(0);
     }
  }
//+------------------------------------------------------------------+
 
Sergey Gritsay:

вот набросал небольшой примерчик для работы с ордерами по тикету, может натолкнет на какие мысли

А если понадобится третья пара? Если потребуется работа не только в тестере?
 
Dmitry Fedoseev:
А если понадобится третья пара?
Ну тогда хранить тикеты в глобальных переменных терминала, или все таки писать классы
 
Dmitry Fedoseev:
Для тестера пойдет

а для реального счета ?

может что-то пойти не так ? 

 
Sergey Gritsay:
Ну тогда хранить тикеты в глобальных переменных терминала, или все таки писать классы
не не, надо выкатывать виндовуз апи
 
traderEvgen:

а для реального счета ?

может что-то пойти не так ? 

Перезапуск терминала, или советника и данные будут потеряны.
 
Dmitry Fedoseev:
не не, надо выкатывать виндовуз апи
для чего win api ?
 
traderEvgen:
для чего win api ?
Ну как.. чтобы совет солидно так и значимо выглядел
 
Dmitry Fedoseev:
Перезапуск терминала, или советника и данные будут потеряны.

а это проблема. 

А при перезапуске терминала глобальные переменные сохраняются ?  Раньше на работал с ними ((

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