Обсуждение статьи "Библиотека для простого и быстрого создания программ для MetaTrader (Часть X): Совместимость с MQL4 - События открытия позиции и активации отложенных ордеров" - страница 6

 
Sam Zabil:
Здравствуйте. Работу вы конечно затеяли большую и нужную. За что вам огромное человеческое спасибо! Но есть вопрос. Советник который вы используете для тестов при работе на счете модифицирует все ордера и позиции невзирая на маджики и различия валютных пар. Т.е. ставишь его евробакс а при этом другая сова стоит на другой валюте и держит там свои ордера и позиции. нажимаешь на вашем советнике модификацию профита или стопа и но тянет не только евробакс, а всё что есть в терминале. Не кошерно как то. Спасибо за понимание. 

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

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

 
Alexey Viktorov:

Артём я воспроизвёл повторно эту ситуёвину.

Скриптом закрыт все вчера открытые позиции. Никаких отложек на счёте не ставил, а вчерашние все закрыты. Появились записи об удалении отложек. И не одной. При этом трижды была запись "Такое событие уже есть в списке".

Потом я поставил ещё три позиции и опять закрыл их скриптом. Всё повторилось. Три позиции закрыто ... три попытки удалить отложку которая уже в истории.

Хоть ты и не любишь логи, но я всёже вставлю прямо из закладки "Эксперты".

В момент открытия USDJPY (нижняя строка записей) открытые позиции и отложенные ордера отсутствовали.

Воспроизвёл, нашёл, исправил.

В методе Refresh() класса CEventCollection нужно дописать в строке 233 (строка может иметь иной номер, так как у меня всё в постоянной разработке):

//--- Если событие в истории счёта
   if(is_history_event)
     {
      //--- Если увеличилось количество исторических ордеров (MQL5, MQL4)
      if(new_history_orders>0 #ifdef __MQL4__ && new_market_pendings<0 #endif )
        {
         //--- Получаем список только удалённых отложенных ордеров
         CArrayObj* list=this.GetListHistoryPendings(list_history);
         if(list!=NULL)
           {
Это исправление войдёт в статью 12
 
Спасибо. Дописал. Номер строки не изменился.
 
Alexey Viktorov:
Спасибо. Дописал. Номер строки не изменился.

Добро

 

Я в другую строку пишу.

Спасибо Вам, Артем, за такой замечательный и познавательный цикл статей

 
Aleksei Mikhanoshin:

Я в другую строку пишу.

Спасибо Вам, Артем, за такой замечательный и познавательный цикл статей

Пожалуйста, Алексей. Мы ж вродь на "Ты" давно... 

 
Всем спасибо за ответы. Я прекрасно понимаю предназначение этого эксперта. Мне просто понравилась панель. А свой вопрос я кстати решил путем сортировки листов позиций и ордеров по маджику. Честно просто лень было сразу вникать в код. 
 
Sam Zabil:
Всем спасибо за ответы. Я прекрасно понимаю предназначение этого эксперта. Мне просто понравилась панель. А свой вопрос я кстати решил путем сортировки листов позиций и ордеров по маджику. Честно просто лень было сразу вникать в код. 

Ну вот и хорошо.

Действительно, уже сейчас можно получать все списки, а из них любой объект. И списки можно сортировать как нужно и фильтровать по любому из значений. Для этого используется CSelect() для полученного списка - примеры есть в методах классов библиотеки.

В итоге будет организован простой доступ, выбор и фильтрация. Пока только идёт создание необходимой базы данных.

 
Задумка хорошая. Но по моему она уже реализована fxsaber'ом.
 
Sergey Seriy #:
Задумка хорошая. Но по моему она уже реализована fxsaber'ом.

Вы можете пользоваться работами fxsaber