程序库: 多功能测试仪 - 页 44

 

关于交易、自动交易系统和测试交易策略的论坛

测试 "CopyTicks

fxsaber, 2024.02.26 12:41 pm

如果 CopyTicks 挂起 60 秒并返回错误 4403,请尝试更改服务器的访问点。即使 ping 到它的结果不太理想。

从这个意义上说,终端自动选择接入点是危险的。

如果不启动该指标(整个终端只有一个实例),我就不会离开战斗终端,因为在战斗终端中正在进行 CopyTicks 工作。

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

#property indicator_chart_window
#property indicator_plots 0

input int inIntervalAlert = 5; // 错误超时间隔(秒)
input int inMaxPoints = 5;     // 第一个服务器点的数量

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!


该指标会让所有正在运行的智能交易系统/脚本立即退出相应的超时错误。然后它们继续正常工作。

 
fxsaber #:

如果不运行该指标(整个终端只有一个实例),我就不会离开战斗终端,因为在战斗终端中正在进行 CopyTicks 的工作。



该指标会强制所有正在运行的智能交易系统/脚本立即退出相应的超时错误。然后它们继续正常工作。

请告诉我您需要在 Expert Advisor 中一直使用CopyTicks 的 真实案例。我确实只在 OnInit() 中使用它来获取一些历史刻度点以运行数字过滤器。在 MQL4 中,我必须等待几分钟缓冲区才会满。

 
Alexey Volchanskiy #:

请告诉我 Expert Advisor 需要一直使用CopyTicks 的 真实案例。

在 Real 上不要跳过(也不要重复) CopyTicks,就像在 Tester 中一样。当您决定将来在过去的时间间隔上运行 Expert Advisor 时,Real 上的 Expert Advisor 将接收与 Tester 中完全相同的价格数据序列。

 

我一定是个大白痴,或者遗漏了什么。

如果我有一个 EA,我想在一年内每天运行一次非可视化测试(非优化)......那么每天都用硬编码参数进行测试,我该怎么做呢? 有人能写一个简短的教程吗?

1.下载库 - 安装说明

2.编写这段代码,在您的 EA 和这样那样的文件中按名称选择您的 EA。

3.在此选择开始和结束日期

4.在此指定每次回溯测试的周期和长度。

5.添加这些附加代码,以确保一切运行正常。

6.6. 指定并将每次每日回溯测试的结果保存为 csv 文件。

等等等等

我已经阅读了您的所有简短 示例 ,并查看了每个文件中的代码,但似乎找不到任何描述用例的文档或逐步指南,您能帮我弄明白吗?


感谢您编写了我们都想要和需要的代码,您是一位传奇人物,我喜欢您的一些评论,比如当有人要求您修复某些问题时,您会说"!做了"。

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

关于交易、自动交易系统和测试交易策略的论坛

库:MultiTester

fxsaber, 2022.12.12 13:20

有时您需要在工作终端上做同样的事情。自动化此操作的示例如下。

因此,只需单击一下即可从所有终端收集数据。感谢MTTESTER::RunEX5- 在所需终端(便携式)上运行 EX5。

应用程序。

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

脚本会显示哪些正在运行的终端是可移植的。

#include <fxsaber\MultiTester\MTTester.mqh> //https://www.mql5.com/zh/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."));
}
 

您好

我需要通过点击一个指标(位于 \MQL5\ Indicators\创建的对象来 运行一个脚本 (位于\MQL5\ Scripts \(而不是通过热键)。

我试着使用 MTTESTER::RunEX5 但出现了很多基本错误。我做错了什么?

我在 "MultiTester "中输入了 "MultiTester_Example1 "和 "MultiTester_Example2"。

我已经把 "MultiTester.mqh "和其他所有 .mqh 文件都放在了 MultiTester 中。

这些是我收到的错误

在 EX1:

sinput' - unexpected token Ex1.mq5 3 1

'=' - 非法使用赋值 Ex1.mq5 3 23

sinput' - 意外标记 Ex1.mq5 4 1

'=' - 非法赋值使用 Ex1.mq5 4 23

sinput' - 意外标记 Ex1.mq5 5 1

'=' - 非法赋值使用 Ex1.mq5 5 24

sinput' - 意外标记 Ex1.mq5 6 1

'=' - 非法赋值使用 Ex1.mq5 6 31


在 EX2:

事件处理函数未找到 Ex2.mq5 1 1


在 MultiTester.mqh:

expression not boolean TesterSettings.mqh 104 37

expression not boolean TesterSettings.mqh 118 39

'SetTesterSettings' - 未声明标识符 MultiTester.mqh 43 13

')'- 预期表达式 MultiTester.mqh 43 31

SetTesterSettings' - 未声明标识符 MultiTester.mqh 51 10

')'- 预期表达式 MultiTester.mqh 51 28


在 Task.mqh:

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

TESTERCACHE' - 声明没有类型 Task.mqh 80 38

.

.

.

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


 
Asa Social #:

我需要通过点击一个由指标(位于 \MQL5\Indicators)创建的对象来 运行一个脚本(位于 \MQL5\Scripts)(而不是通过热键)。

请看这里 的示例。

我尝试使用 MTTESTER::RunEX5 但出现了很多基本错误。我做错了什么?

从技术上讲,未编译的代码不能在 Codebase 中发布。问题出在您自己身上。
Библиотеки: Expert - Попробуйте использовать ChartApplyTemplate. Запустите советник на всех чартах, где уже есть запущенный советник.
Библиотеки: Expert - Попробуйте использовать ChartApplyTemplate. Запустите советник на всех чартах, где уже есть запущенный советник.
  • 2017.08.28
  • Automated-Trading
  • www.mql5.com
После этого задать ему нормальное значение через ChartSetInteger. Если же нужно еще и советник запустить на том же чарте. а оттуда запускать на нужном уже нам чарте советник. Библиотека работает без DLL - полностью удовлетворяет требованиям Маркета
 

关于交易、自动交易系统和测试交易策略的论坛

库:MultiTester

fxsaber, 2022.12.12 13:20

MTTESTER::RunEX5- 在所需终端(便携式) 上运行 EX5。

删除了便携限制。