Библиотеки: MultiTester - страница 44

 

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

Тестируем 'CopyTicks'

fxsaber, 2024.02.26 12:41

Если CopyTicks подвисает на 60 секунд и возвращает ошибку 4403, попробуйте поменять точку доступа к серверу. Даже если до нее пинг менее выгодный.

В этом смысле опасен автоматический выбор точки доступа терминалом.

Без запуска этого индикатора (один экземпляр на весь Терминал) больше не оставляю боевой Терминал, где идет работа с CopyTicks.

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

#property indicator_chart_window
#property indicator_plots 0

input int inIntervalAlert = 5; // Error timeout interval (sec)
input int inMaxPoints = 5;     // Number of first server points

int OnCalculate( const int rates_total, const int prev_calculated, const int, const double &[] )
{
  static ulong StartTime = GetTickCount64();
  const ulong CurrTime = GetTickCount64();
  
  if (!prev_calculated)
  {
    Alert("Restarted!");
    
    StartTime = CurrTime;
  }
  else if (CheckCopyTicks() != ERR_HISTORY_TIMEOUT)
    StartTime = CurrTime;
  else if (CurrTime - StartTime > (ulong)inIntervalAlert * 1000)
  {
    static int Pos = 0;
    
    const int ServerPoint = Pos++ % inMaxPoints;
        
    Alert("CopyTicks error (timeout > " + (string)(CurrTime - StartTime) +
          " ms). Trying (" + (string)Pos + ") to switch to the " +
          (string)(ServerPoint + 1) + "/" + (string)inMaxPoints + " server point.");

    MTTESTER::SetServerPoint(ServerPoint);
  }

  return(rates_total);
}

int CheckCopyTicks( const string Symb = NULL )
{
  MqlTick Tick;
  MqlTick Ticks[];
  
  ResetLastError();
  
  if (SymbolInfoTick(Symb, Tick))
    CopyTicks(Symb, Ticks, COPY_TICKS_ALL, Tick.time_msc - 1000000, 1);
    
  return(_LastError);
}


2024.10.29 16:07:24.802 CopyTicksHelper (EURUSD,M1)     Alert: CopyTicks error (timeout > 5015 ms). Trying (8) to switch to the 3/5 server point.
2024.10.29 16:07:25.909 CopyTicksHelper (EURUSD,M1)     Alert: Restarted!


Индикатор заставляет выходить из соответствующей timeout-ошибки сразу все запущенные советники/скрипты. И они тогда продолжают штатно работать.

 
fxsaber #:

Без запуска этого индикатора (один экземпляр на весь Терминал) больше не оставляю боевой Терминал, где идет работа с CopyTicks.



Индикатор заставляет выходить из соответствующей timeout-ошибки сразу все запущенные советники/скрипты. И они тогда продолжают штатно работать.

Приведите пожалуйста реальные случаи, когда в советнике нужно постоянно работать с  CopyTicks. Я реально использую только в OnInit(), чтобы получить немного исторических тиков для запуска цифровых фильтров. В MQL4 приходилось ждать несколько минут, пока буфера не заполнятся.

 
Alexey Volchanskiy #:

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

Не пропускать (и не задваивать) тики на Реале, как это происходит в Тестере. Советник на Реале получает ровно ту же последовательность ценовых данных, что получит в Тестере, когда в будущем решите прогнать его на прошедшем интервале.

 

I must be a complete idiot or missing something.

If I have an EA which I would like to run a single non-visual test (not-optimization) of each day for a year...So Each day is tested with the hardcoded parameters how would I do It? Could someone please write a short tutorial like.

1. Download library - Install Instructions

2. Write this code to select your EA by name in your ea and such and such a file.

3. Select your start and end dates here 

4. Specify Period and length of each back test here.

5. Add these additional codes to make everything function correctly get your #includes in the right place etc

6. Specify and save results to csv for each daily backtest.

Etc etc etc

I am lost on how to implement this soslution which seems like this library is specifically built for   @fxsaber  I have read all your short examples and gone over the code in each file and cant seem to find any documentation that describes use cases or a step by step guide anywhere could you please help me figure this out?


Thanks for coding what we all wanted and needed your a legend love some of your comments like "!Did" when someone is asking you to fix something 

 
CheckInputs - нахождение аварийных проходов при Оптимизации советника
CheckInputs - нахождение аварийных проходов при Оптимизации советника
  • www.mql5.com
Во время Оптимизации советника некоторые проходы могут завершаться аварийно. Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий Новая версия платформы MetaTrader 5
 

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

Библиотеки: MultiTester

fxsaber, 2022.12.12 13:20

Иногда нужно на работающих терминалах выполнить одно и то же. Автоматизация этого действа ниже на примере.

В итоге одним нажатием собрали данные со всех терминалов. Благодаря MTTESTER::RunEX5 - запускает EX5 на требуемом терминале (portable).

Применение.

МультиТерминальный скрипт.
МультиТерминальный скрипт.
  • www.mql5.com
Здесь будет представлен новый вид MQL5-программ - мультитерминальный скрипт: скрипт, который сам запускается на всех открытых MT5-терминалах. Пример. Первым таким скриптом стал CustomReport по причине
 

Скрипт показывает, какие из запущенных терминалов portable.

#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/ru/code/26132
  
void OnStart()
{
  HANDLE Handles[];
  
// Бежим по всем терминалам
  for (int i = MTTESTER::GetTerminalHandles(Handles, false); (bool)i--;)
    Print("\"" + MTTESTER::GetTerminalPath(Handles[i]) +
          "\" - " +(MTTESTER::IsPortable(Handles[i]) ? "portable." : "NOT portable."));
}
 

Hi 

I need  running a script(located in \MQL5\Scripts\) by click on an object created by an indicator (located in \MQL5\Indicators\)(not by Hotkeys).

I have tried to use MTTESTER::RunEX5   but there are lots of basic errors. What am I doing wrong?

I have past "MultiTester_Example1" and "MultiTester_Example2" in \MetaQuotes\Terminal\D..5\MQL5\Experts\fxsaber\MultiTester

I have past "MultiTester.mqh" and all other .mqh files in \MetaQuotes\Terminal\D..5\MQL5\Include\fxsaber\MultiTester

these are the errors I have received

in EX1:

'sinput' - unexpected token Ex1.mq5 3 1

'=' - illegal assignment use Ex1.mq5 3 23

'sinput' - unexpected token Ex1.mq5 4 1

'=' - illegal assignment use Ex1.mq5 4 23

'sinput' - unexpected token Ex1.mq5 5 1

'=' - illegal assignment use Ex1.mq5 5 24

'sinput' - unexpected token Ex1.mq5 6 1

'=' - illegal assignment use Ex1.mq5 6 31


in EX2:

event handling function not found Ex2.mq5 1 1


in MultiTester.mqh:

expression not boolean TesterSettings.mqh 104 37

expression not boolean TesterSettings.mqh 118 39

'SetTesterSettings' - undeclared identifier MultiTester.mqh 43 13

')' - expression expected MultiTester.mqh 43 31

'SetTesterSettings' - undeclared identifier MultiTester.mqh 51 10

')' - expression expected MultiTester.mqh 51 28


in Task.mqh:

file 'C:\Users\...\...\....\...\Terminal\D0...75\MQL5\Include\fxsaber\TesterCache\TesterCache.mqh' not found Task.mqh 5 11

'TESTERCACHE' - declaration without type Task.mqh 80 38

.

.

.

   see template instantiation 'MTTESTER::TASK::GetMaxFitnessPos<unknown>' Task.mqh 244 29


 
Asa Social #:

I need  running a script(located in \MQL5\Scripts\) by click on an object created by an indicator (located in \MQL5\Indicators\)(not by Hotkeys).

Смотрите пример здесь.

I have tried to use MTTESTER::RunEX5   but there are lots of basic errors. What am I doing wrong?

Некомпилируемый код технически не может быть опубликован в Кодобазе. Проблема на вашей стороне.
Библиотеки: Expert - Попробуйте использовать ChartApplyTemplate. Запустите советник на всех чартах, где уже есть запущенный советник.
Библиотеки: Expert - Попробуйте использовать ChartApplyTemplate. Запустите советник на всех чартах, где уже есть запущенный советник.
  • 2017.08.28
  • Automated-Trading
  • www.mql5.com
После этого задать ему нормальное значение через ChartSetInteger. Если же нужно еще и советник запустить на том же чарте. а оттуда запускать на нужном уже нам чарте советник. Библиотека работает без DLL - полностью удовлетворяет требованиям Маркета
 

portable-ограничение снято.