Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

TradesID - библиотека для MetaTrader 5

Просмотров:
2368
Рейтинг:
(17)
Опубликован:
2021.03.29 15:51
Обновлен:
2024.03.23 16:21
\MQL5\Scripts\fxsaber\ \MQL5\Include\fxsaber\TradesID\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Торговые сделки и исполненные ордера (включая удаленные после частичного исполнения) имеют идентификатор POSITION_ID, который позволяет сопоставить соответствующую запись в торговой истории с интересующей торговой позицией (текущей или закрытой).


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


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


Пример.

    // Вычисление суммарных балансовых операций двумя способами.
    
    #include <fxsaber\TradesID\TradesID.mqh> // Быстрая работа с POSITION_ID
    
    TRADESID TradesID; // Объект для работы с историей.
    
    void OnStart()
    {
      // Получили сделки с нулевым POSITION_ID 
      if (HistorySelectByPosition(0))
      {
        double Deposit = 0;
        
        // и пробежались по ним.
        for (int i = HistoryDealsTotal() - 1; i >= 0; i--)
          Deposit += HistoryDealGetDouble(HistoryDealGetTicket(i), DEAL_PROFIT);
          
        Print(Deposit);
      }
      
      double Deposit = 0;
      
      ulong Deals[]; // Тикеты сделок.
      
      // Получили сделки с нулевым POSITION_ID и пробежались по ним.
      for (int i = TradesID.GetDealsByID(0, Deals) - 1; i >= 0; i--)  
        Deposit += HistoryDealGetDouble(Deals[i], DEAL_PROFIT);    
    
      Print(Deposit);  
    }

    В этом примере показано, как происходит работа с библиотекой.


    Суть.

    Внутри произведена классификация тикетов по POSITION_ID. Соответственно, доступ к так преобразованной информации очень быстрый.


    Производительность.

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

    Stop Loss based on N High Low Stop Loss based on N High Low

    Советник-утилита. Ищет самую большую и самую маленькую цены на заданном количестве баров. По найденным ценам выставляет Стоп лосс

    Similar Candle Similar Candle

    Индикатор ищет подобные свечи

    iBands Pattern V iBands Pattern V

    Паттерн V на индикаторе iBands (Bollinger Bands, BB)

    Two Hull moving average Two Hull moving average

    На основе кода ( Hull moving average ) - в одном окне два индикатора 'Hull moving average' и буфер Arrow в месте пересечения индикаторов