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

 
你好,非常有用的东西,你们还有一个投资组合测试器,可以将报告添加到其中,也是非常有用的东西,但我有个想法--你们不打算将这两个工具结合起来,制作一个自动投资组合优化器吗?这样,优化的结果 将立即作为投资组合的一部分进行评估,结果相同--这样就不会出现缩水等相关问题,整个投资组合的目标函数是夏普(Sharpe)或恢复因子,还有额外的过滤器,例如交易次数。这将减少大量的人工工作和时间,现在优化的结果需要人工组合成一个投资组合,当有数百个投资组合时....。
 
如何从该库中获取特定运行的输入参数?TESTERCACHE Cache; Cache[i] inputs
 

您好!

去年 12 月,我运行了你们的库,并对 100 多个自定义字符进行了优化。

今天我再次尝试运行,但测试人员日志中唯一的错误是 "优化无法启动"。我更新了程序库。

我试着在不同的符号上运行,试着运行您的 MultiTester_example,试着使用 Metatrader 5 的不同版本、不同的优化设置,试着在普通的移动平均智能交易系统上运行,但还是出现了这个错误,我没有找到更详细的日志。请问是否有人遇到过类似情况?如何修复?

 
Jekamajor #:

测试人员日志中唯一的错误是 "无法启动优化"。

手动启动优化的响应是什么?
 
fxsaber #:
手动运行优化有什么反应?


手动优化启动、执行、终止均 无错误。日志截图。上图是通过简单移动平均法启动优化,下图是通过库以相同参数启动优化。

 
Jekamajor #:

下面是使用相同参数但通过图书馆进行的启动。

为什么该智能交易系统在测试器中运行?它被抛向终端图表,而不是测试器。

 
fxsaber #:

为什么该智能交易系统在测试器中运行?它被抛向终端图表,而不是测试器。

是的,确实如此!我已经忘记如何启动它一年了。把它拖到图表上就能启动并运行了。非常感谢你的帮助!
 
请提供一个示例,说明如何编写多个顺序优化的代码,以获取不同的输入参数。
 
Soroush Kheradmand #:
请提供一个示例,说明如何为采用不同输入参数的多个顺序优化编写代码。

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

#define _CS(A) ((!IsStopped()) && (A))
#define  PAUSE 200

void Run( const string Settings )
{
  while (_CS(!MTTESTER::IsReady()))
    Sleep(PAUSE);

  MTTESTER::CloseNotChart();
    
  if (_CS(MTTESTER::SetSettings2(Settings)))
    MTTESTER::ClickStart(false);

  while (_CS(!MTTESTER::IsReady()))
    Sleep(PAUSE);
}

void OnStart()
{
  string Settings[] = {"[Tester]\n" +
                       "Expert=Input_String_Example_Alternative.ex5\n" +
                       "Symbol=EURUSD\n" +
                       "Period=M1\n" +
                       "Optimization=2\n" +
                       "Model=4\n" +
                       "FromDate=2023.01.01\n" +
                       "ToDate=2024.01.01\n" +
                       "ForwardMode=0\n" +
                       "Deposit=1000000000\n" +
                       "Currency=USD\n" +
                       "ProfitInPips=1\n" +
                       "Leverage=100\n" +
                       "ExecutionMode=0\n" +
                       "OptimizationCriterion=6\n" +
                       "[TesterInputs]\n" +
                       "inAmount=1||1||1||10||N\n" +
                       "inCount=2||2||1||20||N\n" +
                       "inPeriod=3||3||1||30||N\n" +
                       "inKoef=4.56||4.56||0.456000||45.600000||N\n" +
                       "inLog=7.89||7.89||0.789000||78.900000||N\n" +
                       "inFlag=true||false||0||true||N"
                      };

  for (uint i = ArraySize(Settings); (bool)i--;)
    Run(Settings[i]);
}

测试仪设置通过 CTRL+C/V 保存。您可以将它们保存到单独的文件中,然后用其中的数据填充上述源代码中的Settings[] 数组。

 

有什么简单的方法可以将数据转换成数组吗?我需要添加 20 个集合文件,每个 108 行,那么要手动添加""+""2160 行才能使它们成为一个数组?

亲自加载集合文件会是我的首选,"D:/\MT5Tester2\MQL5\Profiles\Tester\MTester\MT5 v1.14 bat XU BB+ENV+RSI.set "等等等等,但我只是个凡人,不知道如何编写这些东西的代码。 你的 EA 非常酷,但要命 :D

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

#define _CS(A) ((!IsStopped()) && (A))
#define  PAUSE 200

void Run( const string Settings )
{
  while (_CS(!MTTESTER::IsReady()))
    Sleep(PAUSE);

  MTTESTER::CloseNotChart();
    
  if (_CS(MTTESTER::SetSettings2(Settings)))
    MTTESTER::ClickStart(false);

  while (_CS(!MTTESTER::IsReady()))
    Sleep(PAUSE);
}

void OnStart()
{
  string Settings[] = {[Tester]
                        Expert=MT5 White Rabbit v1.14.ex5
                        Symbol=XAUUSD
                        Period=M5
                        Optimization=2
                        Model=4
                        FromDate=2023.02.01
                        ToDate=2024.10.01
                        ForwardMode=0
                        Deposit=20000
                        Currency=USD
                        ProfitInPips=0
                        Leverage=100
                        ExecutionMode=200
                        OptimizationCriterion=6
                        [TesterInputs]
                        OnTester=------------ On Tester ------------
                        MinTrades=60||120||1||1200||N
                        MaxEquityDrawdown=3.0||20.0||2.000000||200.000000||N
                        CustomMax=------------ Custom Max ------------
                        EA_Expires=2024.12.25
                        Enable_Buy=true||false||0||true||N
                        Enable_Sell=true||false||0||true||N
                        TRADE_TIMES=------------ TIME SETTINGS ------------
                        StartTime_1=1||1||3||10||N
                        Stop_Time_1=9||9||4||21||Y
                        Monday=true||false||0||true||N
                        Tuesday=true||false||0||true||N
                        Wednesday=true||false||0||true||N
                        Thursday=true||false||0||true||N
                        Friday=false||false||0||true||Y
                        Weekend=false||false||0||true||N

                        // 下一组
                        [Tester]
                        Expert=MT5 White Rabbit v1.14.ex5
                        Symbol=XAUUSD
                        Period=M5
                        Optimization=2
                        Model=4
                        FromDate=2023.02.01
                        ToDate=2024.10.01
                        ForwardMode=0
                        Deposit=20000
                        Currency=USD
                        ProfitInPips=0
                        Leverage=100
                        ExecutionMode=200
                        OptimizationCriterion=6
                        [TesterInputs]
                        OnTester=------------ On Tester ------------
                        MinTrades=60||120||1||1200||N
                        MaxEquityDrawdown=3||20.0||2.000000||200.000000||N
                        CustomMax=------------ Custom Max ------------
MultiTester
MultiTester
  • www.mql5.com
Множественные прогоны/оптимизации в Тестере.