文章 "自适应交易系统以及它们在 MetaTrader 5 客户端中的运用" - 页 2 1234 新评论 Brett Luedtke 2010.09.17 08:20 #11 将文档翻译成英文是否很麻烦?我一直很欣赏好的文档。很棒的文章,感谢你的贡献 。 Rashid Umarov 2010.09.17 08:48 #12 Lugner:将文档翻译成英文是否很麻烦?我一直很欣赏好的文档。很好的文章,感谢您的贡献 。 我们将尽快翻译所附文档。 forexistence 2010.09.19 20:29 #13 要使用输入参数(变量),只需在类声明之前声明它们,并按照类(包含)的调用路径进行操作即可。类(包括)的调用路径。 Automated-Trading 2010.09.20 13:46 #14 Lugner:将文档翻译成英文是否很麻烦?我一直很欣赏好的文档。很棒的文章,感谢您的贡献 。 谢谢。文档已经翻译完毕。 Automated-Trading 2010.09.21 15:13 #15 AM2:在 CAdaptiveStrategy 类中,我尝试只交易随机指标: 我禁用了其他策略,但测试器中的图表还是一样。据我所知,这是策略连接和断开的地方吗? 是的,策略在 CAdaptiveStrategy::Expert_OnInit() 函数中连接。为了方便起见,最好使用 Expert Advisor 的调试版本,它增加了将结果保存到文件的功能。通过文件 direction_res.txt,您可以知道在实际交易中使用了哪些策略的哪些信号。使用由指定的 5 种随机指标组成的自适应策略(欧元兑美元 H1,测试时间为 2010 年初至 2010 年 9 月 1 日)时,会得到以下结果: Roger Flatt 2010.09.21 16:09 #16 这可能是我很久很久以来读到的关于程序化/机器人交易的最发人深省的文章。非常感谢! 基于这种新的热情,我对 Eugene 的工作进行了一些调整。[抱歉--至少我也会分享想法 ;-) ]。 我改编了一个现有的 EA(不幸的是,还不是面向对象的),用于 1.多个时间尺度:M1, M3, M5, M10, M20, M30, H1 2.多个快速 MA:3,5,7,9,11 3.多个慢速 MA:17、27、37、47 等 97、107、117 等 在 foreach(周期)-foreach(快速)-foreach(慢速)循环中附加到 M1 tick。每个刻度都会计算是否需要检查 "虚拟 "交易,并在必要时 "执行",保持逻辑/虚拟盈亏平衡。 结果非常令人惊喜,也非常积极... 现在需要优化的地方包括删除短时间段(如 M1、M3)[因为更长的时间段最终会'赢'],以及确定多久清除一次 "运行中的盈亏 "计数器,以便检测 "快速改进 "的参数 集。 我还必须将我最喜欢的交易 EA 与这项工作连接起来(添加 ADX/RSI/MACD/RVI 检查等),这样它就能始终使用最佳的、获胜的快速/慢速 MA 对,并具有良好的市场、资金、头寸和交易管理逻辑。 再次感谢、 T. Discussion of article "Adaptive 基于交易模块创建多个 EA 交易 forexistence 2010.09.22 21:16 #17 量子、 显然,如果我想添加更多的买入和卖出条件(或买入和卖出条件对/组合),除了仍然有天赋的 if(buy_condition_1 && buy_condition_2) new_state=SIGNAL_OPEN_LONG; if(sell_condition_1 && sell_condition_2) new_state=SIGNAL_OPEN_SHORT;CStrategyMA.mqh.中的示例外,显然还可以 以触发其他机会 new_state=SIGNAL_CLOSE_SHORT; //和 new_state=SIGNAL_CLOSE_LONG; 在 CStrategyMA.mqh 文件中添加这些组合没有逻辑意义,但对于每个新条件或条件对/组合 的条件,都应专用于另一个 include/class 文件、 对吗? 我的意思是,举例来说,如果我想添加这些条件:// 购买条件 3:全新 MA bool buy_condition_3=(m_values[0+5]>m_values[1+7]) && (m_values[1+5]>m_values[2+7]); // 买入条件 4:之前的 OPEN 价格高于 MA bool buy_condition_4=(p_open>m_values[1]); // 出售条件 3:新 MA bool sell_condition_3=(m_values[0+5]<m_values[1+7]) && (m_values[1+5]<m_values[2+7]); // 买入条件 4:之前的 OPEN 价格低于 MA bool sell_condition_4=(p_open<m_values[1]); 和 if(buy_condition_3 && buy_condition_4) new_state=SIGNAL_OPEN_LONG; if(sell_condition_3 && sell_condition_4) new_state=SIGNAL_OPEN_SHORT; if((GetSignalState()==SIGNAL_OPEN_SHORT) && (buy_condition_3 || buy_condition_4)) new_state=SIGNAL_CLOSE_SHORT; if((GetSignalState()==SIGNAL_OPEN_LONG) && (sell_condition_3 || sell_condition_4)) new_state=SIGNAL_CLOSE_LONG;可以添加到 CStrategyMA.mqh中的 子类中,而不会影响自适应系统的核心系统。 自适应系统的核心系统,换句话说,只要继续正确地将这个包含文件 CStrategyMA.mqh 与 CAdaptiveStrategy.mqh和 CSampleStrategy.mqh 的互动,同时考虑到逻辑核心中的新条件(示例中的 3 和 4)?的逻辑核心?或者,对于条件 3 和 4,我应该重写并添加一个文件,例如 CStrategyMA3and4.mqh?是否有可能在同一个 CStrategyMA.mqh 文件中添加这些条件并使其正常工作?也许我自己就能回答,而且我有点笨,但我也想征求您的意见。 谢谢 Sergey 2010.09.23 02:00 #18 Automated-Trading:是的,策略在 CAdaptiveStrategy::Expert_OnInit() 函数中连接。为方便起见,最好使用 Expert Advisor 的调试版本,因为该版本增加了将结果保存到文件的功能。您可以通过 Direction_res.txt 文件了解在实际交易中使用了哪些策略信号。使用由上述 5 种随机指标组成的自适应策略(欧元兑美元 H1,测试时间为 2010 年初至 2010 年 9 月 1 日),结果如下: 从图表上看,您又得到了一个简单的优化模型,即使其中部分优化是自动进行的,但自适应模型是指在策略运行过程中,有一个计算块可以根据市场调整进入和退出,而初始化中的参数根本不重要。在这种情况下,只有相对于平衡线的净值线将被均衡化,因为在获利平仓的 分布发生变化的情况下,这种系统仍将重新计算新值并确定新的获利区域,因此将重建获利参数并保留净值订单组: 附加的文件: TesterGraph.gif 8 kb Automated-Trading 2010.09.23 11:45 #19 亲爱的 Forexistence、您已经回答了您的问题:)您是对的,如果您想修改交易条件,有两种方法,一种是在策略 CStrategyMA 中添加新条件(但我们将得到与初始策略不同的新策略),另一种方法是创建一个新类(例如 CStrategyMA34),并在其中添加额外的买入/卖出条件。当然,您应该在新策略中包含文件,并将这些新策略添加到 CAdaptiveStrategy 类的 Expert_OnInit函数 中:#include <CStrategyMA3and4.mqh> int CAdaptiveStrategy::Expert_OnInit() { ..... --- adding new strategies for(int i=0; i<10; i++) { CStrategyMA34 *t_StrategyMA34; t_StrategyMA34=new CStrategyMA34; if(t_StrategyMA34==NULL) { delete m_all_strategies; Print("Error of creation of object of the CStrategy3and4 type"); return(-1); } int period=3+i*10; t_StrategyMA34.Initialization(period,true); t_StrategyMA34.SetStrategyInfo(_Symbol,"[MA34_"+IntegerToString(period)+"]",period,"Moving Averages with new conditions "+IntegerToString(period)); m_all_strategies.Add(t_StrategyMA34); } ..... }第二种方法更好,您可以添加许多策略及其变体。没有必要删除 CStrategyMA 类实例(如果有的话),我们不会在它们的沙盒中查看它们的结果。市场将帮助我们确定 m_all_strategies 中包含的策略列表中的最佳策略。 Quantum 2010.09.23 12:13 #20 dasmen: 从图表中可以看出,您所使用的又是一个优化模型,即使其中部分优化是自动进行的,但调整模型是指在策略运行过程中,有一个计算模块可以根据市场调整进入和退出,而初始化中的参数根本不重要。在这种情况下,只有相对于平衡线的净值线将被均衡化,因为在盈利平仓分配发生变化的情况下 - 这种系统仍将重新计算新值并确定新的盈利区域,因此将重建盈利参数并保留净值订单组:这篇文章使用了数学中的自适应策略概念和应用,实际上是一种实施管理 选择的系统。 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
将文档翻译成英文是否很麻烦?我一直很欣赏好的文档。很棒的文章,感谢你的贡献 。
将文档翻译成英文是否很麻烦?我一直很欣赏好的文档。很好的文章,感谢您的贡献 。
要使用输入参数(变量),只需在类声明之前声明它们,并按照类(包含)的调用路径进行操作即可。
类(包括)的调用路径。
将文档翻译成英文是否很麻烦?我一直很欣赏好的文档。很棒的文章,感谢您的贡献 。
在 CAdaptiveStrategy 类中,我尝试只交易随机指标:
我禁用了其他策略,但测试器中的图表还是一样。据我所知,这是策略连接和断开的地方吗?是的,策略在 CAdaptiveStrategy::Expert_OnInit() 函数中连接。为了方便起见,最好使用 Expert Advisor 的调试版本,它增加了将结果保存到文件的功能。通过文件 direction_res.txt,您可以知道在实际交易中使用了哪些策略的哪些信号。
使用由指定的 5 种随机指标组成的自适应策略(欧元兑美元 H1,测试时间为 2010 年初至 2010 年 9 月 1 日)时,会得到以下结果:
这可能是我很久很久以来读到的关于程序化/机器人交易的最发人深省的文章。非常感谢!
基于这种新的热情,我对 Eugene 的工作进行了一些调整。[抱歉--至少我也会分享想法 ;-) ]。
我改编了一个现有的 EA(不幸的是,还不是面向对象的),用于
1.多个时间尺度:M1, M3, M5, M10, M20, M30, H1
2.多个快速 MA:3,5,7,9,11
3.多个慢速 MA:17、27、37、47 等 97、107、117 等
在 foreach(周期)-foreach(快速)-foreach(慢速)循环中附加到 M1 tick。每个刻度都会计算是否需要检查 "虚拟 "交易,并在必要时 "执行",保持逻辑/虚拟盈亏平衡。
结果非常令人惊喜,也非常积极...
现在需要优化的地方包括删除短时间段(如 M1、M3)[因为更长的时间段最终会'赢'],以及确定多久清除一次 "运行中的盈亏 "计数器,以便检测 "快速改进 "的参数 集。
我还必须将我最喜欢的交易 EA 与这项工作连接起来(添加 ADX/RSI/MACD/RVI 检查等),这样它就能始终使用最佳的、获胜的快速/慢速 MA 对,并具有良好的市场、资金、头寸和交易管理逻辑。
再次感谢、
T.
量子、
显然,如果我想添加更多的买入和卖出条件(或买入和卖出条件对/组合),除了仍然有天赋的
CStrategyMA.mqh.中的示例外,显然还可以
以触发其他机会
new_state=SIGNAL_CLOSE_SHORT; //和 new_state=SIGNAL_CLOSE_LONG;在 CStrategyMA.mqh 文件中添加这些组合没有逻辑意义,但对于每个新条件或条件对/组合
的条件,都应专用于另一个 include/class 文件、
对吗?
我的意思是,举例来说,如果我想添加这些条件:
和
可以添加到 CStrategyMA.mqh中的 子类中,而不会影响自适应系统的核心系统。
自适应系统的核心系统,换句话说,只要继续正确地将这个包含文件 CStrategyMA.mqh 与 CAdaptiveStrategy.mqh
和 CSampleStrategy.mqh 的互动,同时考虑到逻辑核心中的新条件(示例中的 3 和 4)?
的逻辑核心?
或者,对于条件 3 和 4,我应该重写并添加一个文件,例如 CStrategyMA3and4.mqh?
是否有可能在同一个 CStrategyMA.mqh 文件中添加这些条件并使其正常工作?
也许我自己就能回答,而且我有点笨,但我也想征求您的意见。
谢谢
是的,策略在 CAdaptiveStrategy::Expert_OnInit() 函数中连接。为方便起见,最好使用 Expert Advisor 的调试版本,因为该版本增加了将结果保存到文件的功能。您可以通过 Direction_res.txt 文件了解在实际交易中使用了哪些策略信号。
使用由上述 5 种随机指标组成的自适应策略(欧元兑美元 H1,测试时间为 2010 年初至 2010 年 9 月 1 日),结果如下:
亲爱的 Forexistence、
您已经回答了您的问题:)
您是对的,如果您想修改交易条件,有两种方法,一种是在策略 CStrategyMA 中添加新条件(但我们将得到与初始策略不同的新策略),另一种方法是创建一个新类(例如 CStrategyMA34),并在其中添加额外的买入/卖出条件。
当然,您应该在新策略中包含文件,并将这些新策略添加到 CAdaptiveStrategy 类的 Expert_OnInit函数 中:
第二种方法更好,您可以添加许多策略及其变体。
没有必要删除 CStrategyMA 类实例(如果有的话),我们不会在它们的沙盒中查看它们的结果。
市场将帮助我们确定 m_all_strategies 中包含的策略列表中的最佳策略。
从图表中可以看出,您所使用的又是一个优化模型,即使其中部分优化是自动进行的,但调整模型是指在策略运行过程中,有一个计算模块可以根据市场调整进入和退出,而初始化中的参数根本不重要。在这种情况下,只有相对于平衡线的净值线将被均衡化,因为在盈利平仓分配发生变化的情况下 - 这种系统仍将重新计算新值并确定新的盈利区域,因此将重建盈利参数并保留净值订单组:
这篇文章使用了数学中的自适应策略概念和应用,实际上是一种实施管理 选择的系统。