Анализ результатов тестов и оптимизации в тестере стратегий MetaTrader 5 - страница 19

 
Ilya Malev #:
как это предполагается согласно Вашей формуле.

Ask вычисляется на основе значения Point из заголовков hcc-файла для каждого дня. Брокер может каждый день менять Digits, информация об этом будет храниться в hcc-файле.

При этом пользователь эту информацию получить не может через CopyRates в терминале.

 
fxsaber #:
При этом пользователь эту информацию получить не может через CopyRates в терминале.
Спасибо за информацию
 

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



А Вы как считаете?


А не отображать ситуацию, когда там реально 1 месяц реальных тиков есть на сервере, и остальные 6 лет - пусто. То есть нет реальных тиков. Инструмент XAUUSD H1, советник стандартный Moving Average (max risk 0.00001, нач депо 1000000) с 2019.01.08 по 2025.12.01, реальные тики). Сервер MetaQuotes-Demo

 
Это означает, что нельзя ориентироваться на показатель "Качество истории" при простом прогоне любого теста в режиме "Каждый тик на основе реальных тиков", чтобы хоть как-то определить реальное качество доступной потиковой истории на данном торговом сервере / типе счета брокера. А необходимо делать самостоятельные детальные проверки перед тестом с помощью стороннего софта. Неужели никому не интересно?
 
Ilya Malev #:
необходимо делать самостоятельные детальные проверки перед тестом
Да.
 

Как можно из советника в тестере понять используемый режим моделирования?

 

 
Ilya Malev #:

Как можно из советника в тестере понять используемый режим моделирования?

Штатными средствами - никак. В книге был предложен обходной способ.
Учебник по MQL5: Генерация тиков в тестере / Автоматизация торговли
Учебник по MQL5: Генерация тиков в тестере / Автоматизация торговли
  • www.mql5.com
Наличие обработчика OnTick в эксперте не является обязательным для того, чтобы его можно было подвергнуть проверке в тестере. Советник может...
 
Ilya Malev #:

Как можно из советника в тестере понять используемый режим моделирования? 

#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/ru/code/26132

int OnInit()
{
  string Settings;
  
  const int Model = MTTESTER::GetSettings(Settings) ? (int)MTTESTER::GetValue(Settings, "Model") : -1;
  
  Print(Model);
  
  return(INIT_FAILED);
}

По аналогии все остальные значения Тестера достаются.


Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2017.11.23 00:21

// Возвращает true только в случае, если выбран (в тестере) режим по реальным тикам
// Перед использованием должен быть хотя бы один OnTick вызван тестером
bool IsRealTicks( void )
{
  MqlTick Tick;
  
  return(SymbolInfoTick(_Symbol, Tick) && (Tick.volume || !(Tick.flags & TICK_FLAG_LAST)));
}


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

// Советник будет тестироваться только в режиме по реальным тикам
void OnTick()
{
  static bool IsRemove = true;
  
  if (IsRemove)
  {
    IsRemove = MQLInfoInteger(MQL_TESTER) && !IsRealTicks();
    
    if (IsRemove)
    {
      Print("Real ticks mode is needed!");
      
      ExpertRemove();
      
      return;
    }
  }
  
  //........
}
Как это сделать в OnInit (без OnTick) - не знаю.

 
Правильно ли я понимаю, что проверка достаточности маржи у открываемого отложенного ордера, в режиме "Только цены открытия", производится по цене открытия бара, следующего за баром активации этого ордера, в то время как в режиме Все тики/Реальные тики, эта проверка производится в момент пересечения текущей ценой цены открытия этого ордера внутри бара, на котором он реально открывается? Таким образом, если при срабатывании этого ордера "на своем месте" внутри того бара, где он сработал, происходит событие "no money", но на уровне открытия следующего за ним бара ТФ, соответствующего ТФ теста в режиме "Только цены открытия", события "no money"/"margin call" не происходит, то тест в режиме "Только цены открытия" проходит "на ура", а тот же тест в режиме "Все тики"/"Реальные тики" запарывается с ошибкой "no money"?
 
Ilya Malev "Open Price Only" происходит по цене открытия бара, следующего за баром активации этого ордера, а в режиме All Tick/Real Tick эта проверка происходит в момент, когда текущая цена пересекает цену открытия этого ордера внутри бара, на котором он фактически открыт? Таким образом, если событие "нет денег" происходит при срабатывании этого ордера "на своем месте" внутри бара, на котором он сработал, но событие "нет денег"/"margin call" не происходит на уровне открытия следующего бара ТФ, соответствующего ТФ теста в режиме "Только цены открытия", то тест в режиме "Только цены открытия" проходит успешно, а тот же тест в режиме "Все тики"/"Реальные тики" проваливается с ошибкой "нет денег"?

Это один из вариантов, но основная проблема заключается в том, что в режиме "Только цены открытия" у вас есть только цены открытия. Поэтому ваши симулированные сделки совершаются только по открытым ценам. В общем, все ужасно смещено. Вот почему этот режим рекомендуется использовать только тем советникам, которые явно контролируют цену открытия бара.

Лично я никогда не использовал режим Open Prices Only и, скорее всего, никогда не буду - особенно когда режим M1 OHLC работает практически так же быстро.