HistorySelect и его принцип работы

 

Функции HistorySelect и HistoryDealSelect - пересоздают список и при параллельной работе роботов они будут сталкиваться с тем, что не получат свойства ордера или сделки в истории из того, что список изменен? 

HistoryDealSelect - в принципе бесполезная функция, т.к. при вызове любого свойства требуется тикет HistoryDealGetString(Dticket,DEAL_SYMBOL). Если только проверить на наличие, но список он не изменяет. В справке написано это:

HistoryDealSelect

"Функция HistoryDealSelect() очищает в mql5-программе список сделок, доступных для обращений, и копирует в него одну единственную сделку, если выполнение HistoryDealSelect() завершилось успешно."

Есть статья по определению позиции при неттинговом учете для конкретного робота (магик). Тогда еще обратил внимание на то, что в коде сначала создается буфер всех тикетов сделок. И далее идет проверка на то, что количество их не изменилось при вызове HistorySelect. Нелогично. Вот код и пояснение:

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

do
     {
      if(HistorySelect(0,TimeCurrent()))
        {
         History_Total_Deals=HistoryDealsTotal();
         prHistory_Deals(DTicketbuf,History_Total_Deals);//Просто копирует тикеты в массив
        }
      HistorySelect(0,TimeCurrent());  
     }
   while(History_Total_Deals!=HistoryDealsTotal());
//------------------------------------------------------------------
 
void  Cmagic::prHistory_Deals(ulong &buf[],int HTD)
  {
   ArrayResize(buf,HTD);
   for(int t=0;t<HTD;t++)
     {
      buf[t]=HistoryDealGetTicket(t);
     }
  }
Использование ORDER_MAGIC для торговли разными экспертами на одном инструменте
Использование ORDER_MAGIC для торговли разными экспертами на одном инструменте
  • www.mql5.com
В статье раскрываются вопросы кодирования информации с помощью магик-идентификатора, а также разделения, совмещения и синхронизации автоторговли разных экспертов. Статья будет интересна не только начинающим, но и уже бывалым, т.к. в ней рассматриваются вопросы виртуальной позиции, что может помочь в реализации сложных систем синхронизации разных советников и разнообразных стратегий.
 
Таблицы советников независимы.