符合逻辑,很有趣......但我很久以前就放弃了智能交易系统中不必要的功能(时间表、新闻和其他外部功能)。
还有一个更漂亮的解决方案--通过终端变量设置智能交易系统的模式更为方便。在 Expert Advisor(智能交易系统)的参数中会给出几个变量名,它会使用这些变量的值来确定自己的方向。
我们的想法是将这些技巧隐藏在辅助模块中。用户对交易系统进行正式描述,交易引擎就会为他完成其他一切工作。
顺便说一句,"交易模式 "只是建议的 EA 逻辑组织的结果。如果您用四个动作来描述 EA 的交易逻辑,那么交易模式就会自己出现。如果您学会了如何使用这四种操作来编写交易系统,那么编写智能交易系统 的速度就会提高数倍,错误数量也会趋于零--这已经经过多次测试。
我们的想法是将这些技巧隐藏在辅助模块中。用户对交易系统进行正式描述,剩下的就由交易引擎代劳了。
顺便说一下,"交易模式 "只是建议的 EA 逻辑组织的结果。如果您用四个动作来描述 EA 的交易逻辑,交易模式就会自己出现。如果您学会了如何在这四个操作的帮助下编写 TS,那么编写 EA 的速度就会提高数倍,错误数量也会趋于零--这已经经过多次测试。
不可否认,贸易模式会出现。但最好是从外部通过外部手段设置这些模式。这样一来,EA 就会 "留下 "不必要的代码,不管你怎么看,它都会消耗资源(计算、开发、支持等)。但是,你得到的不是 EA,而是一种 "购物中心",你可以用一个遥控器控制几只猫头鹰。
一般来说,它们是从外部设置的。例如,您可以创建一种可视化的交易模式。即使在 Win32 系统上也可以实现。也可以将交易模式作为参数设置。引擎本身不具备任何交易模式。正因为如此,才实现了您所写的目标:策略独立于附加组件和扩展程序 --您可以使用它们,也可以不使用,只需简单编写和描述即可,必要时还可以使用。
不可否认,贸易模式会出现。但最好是从外部通过外部手段设置这些模式。这样一来,EA 就会 "留下 "不必要的代码,不管你怎么看,它都会消耗资源(计算、开发、支持等)。但你得到的不是 EA,而是一种 "交易综合体",你可以通过一个遥控器控制几只猫头鹰。
你凭什么认为这样更好?你的方法太恶心了!告诉我更多关于你有多现实以及你不使用测试器的信息。
你会得到很多决定 EA 工作结果的功能,但这些功能无法在测试器中进行检查。
所有改变 EA 工作的功能都应通过 EA 属性窗口进行管理。
文章很好,后续呢?赶快翻译出来吧!
刚刚开始了解它。我想得到 XML 策略的说明--哪里有什么。至少还有一些 XML 文件。在我看来,档案中缺少这些内容。
谢谢。
刚刚开始了解它。我想得到 XML 策略的说明--哪里有什么。至少还有一些 XML 文件。在我看来,档案中缺少这些内容。
谢谢。
策略 XML 序列化示例:
<Global> <Strategies> <Strategy Name="MovingAverage" Magic="100" Timeframe="PERIOD_M1" Symbol="Si"> <TradeStateStart> Stop</TradeStateStart> <Params> <FastMA> 1</FastMA> <SlowMA> 3</SlowMA> <Shift> 0</Shift> <Method> MODE_SMA</Method> <AppliedPrice> PRICE_CLOSE</AppliedPrice> </Params> </Strategy> <Strategy Name="MovingAverage" Magic="101" Timeframe="PERIOD_M5" Symbol="SBRF"> <TradeStateStart> BuyOnly</TradeStateStart> <Params> <FastMA> 15</FastMA> <SlowMA> 21</SlowMA> <Shift> 0</Shift> <Method> MODE_SMA</Method> <AppliedPrice> PRICE_CLOSE</AppliedPrice> </Params> </Strategy> <Strategy Name="BollingerBands" Magic="102" Timeframe="PERIOD_M15" Symbol="GAZR"> <TradeStateStart> BuyAndSell</TradeStateStart> <Params> <Period> 30</Period> <StdDev> 1.5</StdDev> </Params> </Strategy> <Strategy Name="BollingerBands" Magic="103" Timeframe="PERIOD_M30" Symbol="ED"> <TradeStateStart> BuyAndSell</TradeStateStart> <Params> <Period> 20</Period> <StdDev> 2.0</StdDev> </Params> </Strategy> </Strategies> </Global>
策略序列化问题将在以下部分中讨论。本示例也在其中。
您好、
返回的错误信息是:
cannot cast 'DoubleValue' to 'ULongValue' Dictionary.mqh 210 14
lValue=(ULongValue)dValue;
感谢您的帮助,
Pierre8r
新文章 通用智能交易系统:交易策略的模式(第一章)已发布:
任何一个智能交易系统(EA)的开发人员,无论编程技能如何,每天都面临着同样的交易目标和算法问题的困扰,即应该如何建立一个可靠的交易系统。本文介绍CStrategy交易引擎,它可以给出这些任务的解决方案,并且向用户提供一种用于描述自定义交易思想的简便机制。
在实现自动交易算法时可能会出现各种子任务,包括分析市场环境来确定入市信号,以及平仓已有头寸。另一个可能的任务是控制EA的执行并恰当处理交易报错。最后,通过EA访问市场行情和交易头寸信息是一项相对简单的任务。所有这些任务都直接在EA的源码中进行实现。
另一方面,我们应该在EA中将交易过程的技术部分同交易思想的实现分离开来。使用面向对象的方法,我们可以分离这两个本质上不同的交易任务,并且将交易处理的实现放在一个特殊的公共类中给所有策略调用,有时也被称为交易引擎。
这是描述这个引擎的系列文章的第一篇,它可以被称为通用智能交易系统。此名称是一组类的统称,通过一个开仓和平仓条件通用枚举值,使得交易算法的开发简便化。你无须向EA中添加所需数据和交易逻辑,例如,持仓查询 — 所有这些处理过程都由交易引擎完成。
一个策略的交易模式
通常,EA的交易操作需要被限制。最简单的例子是防止EA下多单或空单的操作。MetaTrader 4 提供了这些模式的一个典型开关。它在EA加载的时候出现,位于EA属性窗口的一个标签页上。
图 2. MetaTrader 4中的交易模式
然而,有更多的可能模式。此外,我们可能需要更灵活的工具来配置这些模式。例如,一些EA在交易中的某些时刻需要暂停。假设在太平洋时间段的外汇市 场,EA需要忽略新的开仓信号。这是限制EA在低流动性时间段进行交易的典型方法。实现这一功能的最好方法是什么,把它做成可选项?这可以通过4块交易逻 辑的组织来实现。
作者:Vasiliy Sokolov