文章 "自适应交易系统以及它们在 MetaTrader 5 客户端中的运用"

 

新文章 自适应交易系统以及它们在 MetaTrader 5 客户端中的运用已发布:

本文推荐一种由很多策略组成的自适应系统,每种策略执行其自己的虚拟交易操作。实际交易依据当时最赚钱策略的信号进行。归功于使用面向对象的方法、标准库中用于处理数据的类和交易类,系统的架构看起来很简单并且可扩展;现在,您可以轻松地创建和分析包含数以百计的交易策略的自适应系统。

世界上数以百万计的交易者使用 MetaQuotes Software Corp 开发的交易平台。导致成功的关键因素是以多年经验为基础的技术卓越性和最佳软件解决方案。

很多人已经用新的 MQL5 语言预测新的机会。其关键特点是高性能和使用面向对象编程的可能性。此外,随着在 MetaTrader 5 客户端中出现多货币策略测试程序,很多交易者已经获得独特的工具来开发、学习和使用复杂的交易系统。

Automated Trading Championship 2010(2010 年自动交易锦标赛)将在今年秋天开赛;数以千计采用 MQL5 编写的交易机器人将参赛。在比赛期间获得最高利润的 EA 交易程序将获胜。但是哪种策略会是最有效的一个呢?

MetaTrader 5 客户端的策略测试程序允许查找一组最佳参数,系统使用这些参数能够在指定时间段内赚取最大利润。但是在实时交易中行吗?在"Contest of Expert Advisors inside an Expert Advisor"(在一个 EA 交易程序内的若干 EA 交易程序的竞争)一文中考虑了使用几个策略的虚拟交易的想法,该文包含这个想法在 MQL4 中的实施。

在本文中,我们将说明,由于使用面向对象编程、标准库中用于处理数据的类交易类,自适应策略的创建和分析在 MQL5 已经容易多了。

图 1. 十个 EA 交易程序的帐户资产净值曲线图

作者:MetaQuotes Software Corp.

 
谢谢。这是篇好文章。会为我节省很多时间。
 
是的,好文章,我可以利用它。
 

无需多言,谢谢

输入我的交易策略。

谁能告诉我如何处理这个错误?

创建指标时出错 4002

虽然实际错误代码 4002 是

ERR_WRONG_INTERNAL_PARAMETER 4002 客户端终端函数 内部调用 参数错误。

还是仅仅因为我在终端工作时间之外启动了智能交易系统才会出现这种情况?

如何避免在创建指标时出错?还有很多问题(......)。

如果不是太难的话,请告诉我如何解决这个问题。在代码的哪个位置查找此错误?至少要有大致的参考点。

当然,答案就在表面,但问题是我不是程序员。


附注:仔细想想,当我在


double CSampleStrategy::StrategyPerformance() 中将变量 avdeals 的类型由 int 改为 double 后,错误先是消失了。

但后来又发生了,EA 也崩溃了。

 
请提供源代码。您可以通过本网站上的 servicedex 进行操作。
 

在 CAdaptiveStrategy 类中,我尝试只交易随机指标:

// 创建 5 个交易策略 CStrategyStoch(随机交易)
// 初始化它们,设置参数
// 并添加到 m_all_strategies 容器中
    for(int i=0; i<5; i++)
     {
      CStrategyStoch *t_StrategyStoch;
      t_StrategyStoch=new CStrategyStoch;
      if(t_StrategyStoch==NULL)
        {
         delete m_all_strategies;
         printf("创建 t_StrategyStoch 类型的对象时出错");
         return(-1);
        }
      //设置每个策略的周期
      int Kperiod=2+i*5;
      int Dperiod=2+i*5;
      int Slowing=3+i;
      // 策略初始化
      t_StrategyStoch.Initialization(Kperiod,Dperiod,Slowing,true);
      // 设置战略信息
      string s=IntegerToString(Kperiod)+"/"+IntegerToString(Dperiod)+"/"+IntegerToString(Slowing);
      t_StrategyStoch.SetStrategyInfo(_Symbol,"[Stoch_"+s+"]",100+i," Stochastic "+s);
      // 将策略对象添加到对象数组 m_all_strategies 中
      m_all_strategies.Add(t_StrategyStoch);
     }
我禁用了其他策略,但测试器中的图表还是一样。据我所知,这是策略连接和断开的地方吗?
 

文章很好,但纯属猜测。比方说,展示了MQL5 的能力

很明显,在已经滞后的指标上进行交易(它们都是这样的),并在一定时期内选择最好的指标(更多滞后指标),并不能帮助您实现任何目标。

 

令人印象深刻的文章。

谢谢。我喜欢这个新的 mql5 论坛,它似乎正在成为 一门科学。

您的文章很棒,是我多年来一直在寻找的东西,感谢您间接地帮助了我。


我还要提醒你,在包含文件 CSampleStrategy 中有一个(逻辑上无关紧要的)错误、

//+------------------------------------------------------------------+
//| The StrategyPerformance function of effectiveness of strategy    |
//+------------------------------------------------------------------+ 
double CSampleStrategy::StrategyPerformance()
  {
//returns the effectiveness of strategy
/in this case it's the difference between the amount 

最后一个原始文件的注释中只有一个斜线,这在编译 mq5 expert 时产生了大约 13 个错误。


这是一篇非常棒的文章,结合 mql5 最近几个月的许多其他文章知识,可以对高级专家顾问进行非常有趣的

高级专家顾问的实验。


我想知道是否有可能改进这篇文章的策略,例如通过在代码中添加文件的可能性

来存储和调用额外的结果......幻想不会停止。

再次感谢您。

 

注:它还向我生成了一个 "内部错误 #55"。

无法创建 ex5。有帮助吗??

 
forexistence:

我还需要提醒的是,在包含文件 CSampleStrategy 中存在一个(逻辑上无关紧要的)错误、

最后一个原始文件的注释中只有一个斜线,这在编译 mq5 expert 时产生了大约 13 个错误。


谢谢。更正后的版本重新附在文章后面。
 

感谢您提供的更正版本。

我认为:即使这篇文章非常有趣,想法非常好,代码也非常简洁,有很多优点、

即使这只是一个 EA 示例,但发布的整个 EA 对策略测试人员 并不友好。

我指的是下载版无法在终端设置输入参数。

既然包含文件不能有输入参数变量,那么如何 "输入 "该 EA 的许多包含文件中的许多变量呢?

的许多变量进行 "输入"?