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

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

Просмотров:
3057
Рейтинг:
(48)
Опубликован:
2012.09.13 16:53
Обновлен:
2012.09.13 17:22
\MQL5\Include\ \MQL5\Scripts\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Класс CTradeStatistics содержит расчеты всех показателей из перечисления ENUM_STATISTICS.

В данном классе все показатели кроме просадок по эквити можно рассчитать на основании истории торговли.

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

Пример использования вне тестера

Расчет всех показателей выполняется вызовом функции CTradeStatistics::Calculate(). После успешного выполнения этой функции, результат доступен через вызов многочисленных методов, имена которых созвучны с названиями статистических показателей. 

Пример кода:

CTradeStatistics m_stat;

if(m_stat.Calculate()) PrintFormat("LR Correlation: %.2f",m_stat.LRCorrelation());
else Print(m_stat.GetLastErrorString());

Результат:

2012.09.13 08:52:19 TradeStatistics (EURUSD,H1) LR Correlation: 0.97

 

Для вывода сразу всех показателей в журнал можно использовать функцию CTradeStatistics::PrintStatistics().

if(m_stat.Calculate()) PrintStatistics();

Простой пример работы с классом можно найти в скрипте TradeStatistics.mq5.

Для более наглядного отображения результатов расчета создана панель TradeStatisticsPanel. 

Пример использования в тестере

Для корректно расчета просадок по эквити необходимо воспользоваться функцией CTradeStatistics::CalculateEquityDD().

Пример кода:

#include <CTradeStatistics.mqh>
CTradeStatistics m_stat;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   m_stat.CalculateEquityDD(CALC_INIT);

   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   m_stat.CalculateEquityDD(CALC_DEINIT);

   if(m_stat.Calculate())m_stat.PrintStatistics();

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   m_stat.CalculateEquityDD(CALC_TICK);

  }

Важно отметить, что получить достоверные значения статистических показателей можно не только в конце тестирования по событию OnTester() или OnDeinit() но и в любой точке программы. Обновлять расчеты можно, например, по событию OnTrade(), как это показано в следующем примере:

void OnTrade()
  {
//--- block repeated requests at same sec.
   static datetime time_on_trade;
   if(time_on_trade==TimeTradeServer())return;
   time_on_trade=TimeTradeServer();

//--- update statistics
   if(!m_stat.Calculate())Print(m_stat.GetLastErrorString());

  }

BidAskChannel BidAskChannel

Индикатор BidAskChannel предназначен для учёта спреда в тенях свечек.

Squize_MA Squize_MA

Индикатор Squize_MA представляет пересечение двух мувингов с разными периодами усреднения плюс к этому на график добавлены условные границы флета.

TradeStatisticsPanel TradeStatisticsPanel

Панель для отображения статистических показателей, рассчитанных на основании истории сделок.

CSelectFile CSelectFile

Класс графического интерфейса выбора файла.