Обсуждение статьи "Работа с таймсериями в библиотеке DoEasy (Часть 58): Таймсерии данных буферов индикаторов" - страница 2

 
Alexander:

В експерте TestDoEasyPart56 в функции void OnInitDoEasy() в самый ее конец, я вставил такой код, чтобы

получить коллекцию исторических ордеров с даты D'2020.12.11 10:00' по текущую. И у меня ни одного

ордера не выдал этот код.

В том месте где я Принтую  Print(list_positions.Total()); у меня выдает "0".

OnInitDoEasy() не предназначен для работы внутри него. Эта функция нужна для правильной инициализации библиотеки. Работайте в OnTick
 
Artyom Trishkin:
OnInitDoEasy() не предназначен для работы внутри него. Эта функция нужна для правильной инициализации библиотеки. Работайте в OnTick

Вставил в onTick() ничего не изменилось:

//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- Обработка события NewTick в библиотеке
   engine.OnTick(rates_data);

//--- Если работа в тестере
   if(MQLInfoInteger(MQL_TESTER))
     {
      engine.OnTimer(rates_data);   // Работа в таймере
      engine.EventsHandling();      // Работа с событиями
     }
   
//--- Если установлен флаг трейлинга
   if(trailing_on)
     {
      //TrailingPositions();          // Трейлинг позиций
     // TrailingOrders();             // Трейлинг отложенных ордеров
     }
     CArrayObj* list_positions=engine.GetListHistoryOrders();
           // list_positions=CSelect::ByOrderProperty(list_positions,ORDER_PROP_SYMBOL,Symbol(),EQUAL);
            list_positions=CSelect::ByOrderProperty(list_positions,ORDER_PROP_TIME_CLOSE,D'2020.12.10 10:00',MORE);
            //--- Выбираем позиции с прибылью болше нуля
            list_positions=CSelect::ByOrderProperty(list_positions,ORDER_PROP_PROFIT,0,MORE);
            if(list_positions!=NULL)
              {Print("OK1");
               //--- Сортируем список по прибыли 
               //list_positions.Sort(SORT_BY_ORDER_PROFIT);
               list_positions.Total();
               Print(list_positions.Total());
               //--- Получаем индекс позиции с наибольшей прибылью
               int index=CSelect::FindOrderMax(list_positions,ORDER_PROP_PROFIT);
               if(index>WRONG_VALUE)
                 {Print("index= ",index);
                  COrder* position=list_positions.At(index);
                  if(position!=NULL)
                    {
                     //--- Получаем тикет позиции с наибольшей прибылью и закрываем позицию по тикету
                     Print("OK");
                     Print(engine.GetListDeals());
                    }
                 }
              }
  }
 
Alexander:

Вставил в onTick() ничего не изменилось:

В каждом советнике в примерах есть блок кода для выбора и закрытия позиций с наибольшим профитом. Можно сделать по аналогии. Я не могу даже глянуть - с мобильного.
 
Artyom Trishkin:

Что вам мешает самому написать и забрать сию медаль?

Я не претендую. Пусть Вам достанется. Вы заслужили  ;)

 
Aleksey Mavrin:

Я не претендую. Пусть Вам достанется. Вы заслужили  ;)

Спасибо. И мне не нужна. Оставим другим.

 

Жаль, но пока нет сильной стороны сообщества программистов на МТ5 как взаимное улучшение кода и создание справки, для публичных, работ. Кто пишет справки к примеру всегда улучшает свое понимание кода.

Может это и к лучшему!. Думаю все же осилить все статьи из цикла DoEasy. Дошел до 34 статьи, скажу тот еще остросюжетный кодобоевик)). Походу чтения думаешь что плохо что нет диаграммы построения, сего программного искусства, но думаю может и к лучшему, что надо хоть немного думать.


Выводов из статей очень много, особенно для программистов любителей, каких большинство трейдеров новадайс. Спасибо! надеюсь будут еще.

Как в MetaTrader 5 быстро разработать и отладить торговую стратегию
Как в MetaTrader 5 быстро разработать и отладить торговую стратегию
  • www.mql5.com
Скальперские автоматические системы по праву считаются вершиной алгоритмического трейдинга, но при этом они же являются и самыми сложными для написания кода. В этой статье мы покажем, как с помощью встроенных средств отладки и визуального тестирования строить стратегии, основанные на анализе поступающих тиков. Для выработки правил входа и...
 

Блин, что все эту справку так просят. Вон к СБ есть типо справка, и что? Ею пользуюсь только если конкретное название метода забываю, чуть быстрее чем описание класса открыть)

В СБ в таймсериях есть метод меняющий размер буфера. Без него работа с тайм серией ограничена, а про это в справке ни слова, про умолчательные значения тоже.

Так зачем такая справка ущербная, если есть код.

В любом случае для начала серьёзного использования надо пробежаться по коду, начав с интерфейсов и далее.

Поэтому не отвлекайте Артёма на справку, пусть занимается тем что получается)

 
Aleksey Mavrin:

Блин, что все эту справку так просят. Вон к СБ есть типо справка, и что? Ею пользуюсь только если конкретное название метода забываю, чуть быстрее чем описание класса открыть)

В СБ в таймсериях есть метод меняющий размер буфера. Без него работа с тайм серией ограничена, а про это в справке ни слова, про умолчательные значения тоже.

Так зачем такая справка ущербная, если есть код.

В любом случае для начала серьёзного использования надо пробежаться по коду, начав с интерфейсов и далее.

Поэтому не отвлекайте Артёма на справку, пусть занимается тем что получается)

Работы все же крупные и нужно иметь справку и прописку на гитхабе.

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