Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 2507
- Рейтинг:
- Опубликован:
- 2021.03.29 15:51
- Обновлен:
- 2024.03.23 16:21
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Торговые сделки и исполненные ордера (включая удаленные после частичного исполнения) имеют идентификатор 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](https://c.mql5.com/i/code/expert.png)
Советник-утилита. Ищет самую большую и самую маленькую цены на заданном количестве баров. По найденным ценам выставляет Стоп лосс
![Similar Candle](https://c.mql5.com/i/code/indicator.png)
Индикатор ищет подобные свечи
![iBands Pattern V](https://c.mql5.com/i/code/expert.png)
Паттерн V на индикаторе iBands (Bollinger Bands, BB)
![Two Hull moving average](https://c.mql5.com/i/code/indicator.png)
На основе кода ( Hull moving average ) - в одном окне два индикатора 'Hull moving average' и буфер Arrow в месте пересечения индикаторов