比尔威廉姆的交易系统在他的书中有所描述,书名为"交易新维度(New trading dimensions)",它是任何交易者都应该学习熟悉的。这个系统包含了清晰和对大多数初学者都易于理解的规则,但是,规则的简单性只是表面 - 交易系统是由许多交易模式构成的。
很多人已经尝试在此系统基础之上创建自己的EA交易,但是对于模式的形态,正确搜索以及解释工作经常被证明是困难的。为了与自动交易一样地进行模式的识别和标记,我为在MQL5向导中创建交易机器人而开发了一个交易信号模块。
我的目标是为MetaTrader 5终端的潜在用户,想独立学习交易系统的人创造最大的便利,与其他已经发布的MQL5向导使用的60个模块的区别是,它包含了一个用于配置选项的可视化界面。
所以,这些就是交易模块的主要特性:
结构 (本文附件中的 billwilliamsts.zip 档案就是源代码):
资料是按以下顺序提供的:
在他名为"交易新维度(New trading dimensions)"的书中, 比尔威廉姆声明,从金融市场的交易中获利,有必要了解市场的结构。根据作者的观点,市场有五个维度,通过逐步学习,您可以得到市场的真实景象以及80%以上的市场波动:
除了五个维度之外,比尔威廉姆还介绍了为人熟知的市场条件 - 趋势和平缓。为了识别它们,系统的作者建议使用他所开发的鳄鱼指标,只在有趋势的市场区域中运行。
交易系统的元素,交易模式就是基于它们,在本文中,还会进一步使用所开发的交易信号模块特别标记出找到的信号。
鳄鱼指标是三个移动平均的组合(图1):
图 1. 鳄鱼指标
根据系统,交易操作只能在这种情况下执行:鳄鱼指标线与趋势方向一致,并且自上而下的顺序是:价格,唇线,齿线,颚线。本图显示了向下趋势的起始和终止。
很明显,鳄鱼指标是一个严重延迟的指标,这与其他基于移动平均的指标是一样的。然而,移动平均的交叉不是作为进入市场的信号,而只是作为执行交易的过滤器。
分形是一个由5个烛形组成的形态,卖出分形是中间烛形为最低价的一种分形,而买入分形,与它相反,是中间烛形为最高价的一种分形。分形也被称为第一市场维度(维度 1):
图 2. 分形
对于上升趋势,如果一个分形形成于鳄鱼指标平均线(齿线)之上时,就认为是有效的,而对于下跌趋势,要求分形在平均线下方。
所开发的EA交易按照以下方式标记分形(FrB — FractalBuy — 有效买入分形, FrS — FractalSell — 有效卖出分形):
图 3. 有效的买入分形
图 4. 有效的卖出分形
在买入分形形成的地方,在比柱的最大值高一个点的地方设置止损买入订单。在卖出分形形成的地方,在比柱的最小值低一个点的地方设置止损卖出定单。只有当鳄鱼指标改变了趋势的时候并且超过了第一个分形以后,才允许建立额外的仓位(通过分形及其他指标)。
动量震荡指标(AO)确定了市场的动量,它是34个周期数的SMA与5个周期数的SMA之间的差,SMA(简单移动平均)是根据柱的中值计算的。在图表上,该指标表现为柱形图:
图5. 动量震荡指标
在交易策略中基于此震荡指标的有6种模式,它们的描述以及通过EA的标记将在下面介绍。
图 6. "杯托"买入模式
该模式包含三列,第一列必须比中间列高,颜色可以是任意的,中间列必须是红色的,第三列(信号)必须是绿色的。EA交易在AO指标中显示信号时,引用方式为DiB(Dish Buy, 杯托买入)。
图 7. "杯托"卖出模式
该模式包含三列,第一列必须比中间列要低,可以使任意颜色,中间列必须是绿色,第三列(信号)必须为红色,在EA交易中,信号在AO指标中显示为DiS(Dish Sell, 杯托卖出)。
图 8. "零线交叉"买入模式
当柱形穿过上方的零线时生成买入信号,穿过零线的一列就是信号列,EA交易在AO指标中将信号显示为CrB(Cross Buy, 交叉买入)。
图 9. "零线交叉"卖出模式
当柱形向下穿过零线时生成信号,穿过零线的一列就是信号列,EA交易在AO指标中把该信号显示为CrS(Cross Sell, 交叉卖出)。
图 10. "双顶"买入模式
当柱形低于零线,并且最后一个顶的底部高于前一个顶时声称买入信号,同时,在两个有极值的柱之间没有高于零线的状况,EA交易中在AO指标中把此信号显示为2pB(2 peak Buy,双顶买入)。
图 11. "双顶"卖出模式
当柱形高于零线,并且指标的最后一个顶低于之前一个顶时生成卖出信号,同时,柱形图的两个极值点之间没有低于零线,EA交易中在AO指标中把本信号显示为2pS(2 peak Sell, 双顶卖出)。
当买入信号出现时,就设置一个比信号柱最大值高一个点的止损买入挂单,当卖出信号出现时,就设置一个比信号柱最小值低一个点的止损卖出挂单。
加速/减速柱形图(AC)是动量震荡指标柱形图与5个周期数动量震荡指标移动平均之间的差。
图 12. 加速/减速震荡指标
如果连续两个柱都高于前一个最低的柱(柱形在零线以上),就形成买入信号;如果柱形低于零线,则三个连续的绿色柱(图13, B信号 - 买入)就必然形成买入信号。
如果连续两个柱都低于前一个最高的柱(柱形在零线之下),就形成卖出信号;如果柱形高域零线,连续三个红色柱(图13, S信号 - 卖出)就必然形成卖出信号。
图 13. AC 震荡指标的模式
EA交易中显示的AC信号用S(Sell, 卖出)或者B(Buy, 买入)来表示。当买入信号出现时,就设置一个比信号柱最大值高一个点的止损买入挂单,当卖出信号出现时,就设置一个比信号柱最小值低一个点的止损卖出挂单。
比尔威廉姆引入了交易区域的名词: 绿区和红区。如果当前的AC柱和AO柱是绿色的,价格就位于绿区。如果当前的AC柱和AO柱是红色的,价格就在红区。
为了在绿区建立买入仓位(红区中为卖出仓位),至少一行中要有里两个绿色(红色)柱,并且第二个柱的收盘价必须高于(低于)前一个柱的收盘价。然而,连续5个绿色或者红色柱,就不再建立仓位。
如果出现了第五个绿色(红色)柱,就需要比第五个柱的最小值低1个点(比最大值高1个点)的止损单。如果挂单在随后的柱上没有被执行,则必须把水平改为比第六个柱的最小值低一个点(比最大值高一个点),以此类推。
区域交易信号在AC指标中显示为ZS(Zone Sell, 区域卖出)和ZB(Zone Buy, 区域买入) (通常它们与AC指标的信号相匹配):
图 14. 区域交易信号
两个柱的价格都高于鳄鱼指标,就形成了"高于平衡线买入"的模式。如果第零柱的开盘价(同时也是这个柱当时的最高价)低于前一个柱的最高价(可以通过后面的几个柱找到),那么找到的最高价就是在绿区建立买入仓位的价格。如果价格低于鳄鱼线,则在绿区需要更高的入场价格。
在平衡线下卖出则相反。
平衡线的交易逻辑在这篇文章,"基于比尔威廉姆书籍的EA交易",有更详细的描述.
EA交易在设置挂单的地方标记了水平线:
图 15. 设置挂单的位置
比尔威廉姆提出了集中平仓的方法:
图形面板的界面显示如下:
图 16. 用于管理EA交易的图形面板
图形面板由四个逻辑区组成:
在修改完设置后,要按下"Accept(接受)"按钮来保存设置。
鳄鱼指标设置就是此指标的标准设置,还有一个额外选项用于禁止此指标的显示 ('Show' 参数).
另外,还有一个现象用于不论当前趋势如何都显示信号 ('Show out of trend signals' 参数).
交易设置只有一个参数 – 手数大小(Lot size)。
工作图表的界面显示如下(设置面板已经最小化了):
图 17. 主窗口
在创建一个EA交易之前,您必须下载附件中的档案 billwilliamsts.zip 并且把它的文件复制到交易终端的对应目录中。
必须按照以下步骤来生成自动的EA交易:
在MQL编辑器中选择"新建", 然后当新窗口出现后选择 "EA交易 (生成)":
图18. 创建EA交易 - 第1步
输入您想要创建的EA交易的名称:
图 19. 创建EA交易 — 第2步
下一步需要添加使用的信号生成器:
图 20. 创建EA交易 — 第3步
选择 "Signal of BillWilliams trading system"(比尔威廉姆交易系统的信号)作为信号生成器:
图 21. 创建EA交易 — 第4步
下一步是确认不要修改:
图 22. 创建EA交易 — 第5步
选择交易信号模块并确认:
图 23. 创建EA交易 — 第6步
如有必要,设置跟踪止损参数:
图 24. 创建EA交易 — 第7步
然后,设置资金管理参数:
图 25. 创建EA交易 — 第8步
所创建的EA交易文件必须要进行编辑,这样它才能对交易面板上的参数变化作出回应:
这部分的代码需要在文件中找到:
//--- 创建 CBillWilliamsSignal 过滤器 CBillWilliamsSignal *filter0=new CBillWilliamsSignal;
改为:
filter0=new CBillWilliamsSignal;
声明 filter0 全局变量:
//+------------------------------------------------------------------+ //| 全局专家对象 | //+------------------------------------------------------------------+ CExpert ExtExpert; CBillWilliamsSignal *filter0;
并且增加了图表的事件处理函数:
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { filter0.ChartEvent(id,lparam,dparam,sparam); }
创建的EA交易现在可以使用了。
在向导中创建的EA交易因为使用标准库的程序开发接口,因而有所局限:
为了消除这些缺点,使用交易信号类,我们已经开发了另外一个EA交易,BillWilliamsEA.mq5, 已经放到了附加的文件中。
图 26. 测试图表 EURUSD D1, 2015
详细的结果在EUR-D1-2015.zip文件中。
图 27. 测试图表 EURUSD D1, 2010-2015
详细的结果在 EUR-D1-2010-2015.zip 文件中。
图 28. 测试图表 EURJPY D1, 2010-2015
详细的结果在EURJPY-D1-2010-2015.zip文件中.
根据测试结果,我们可以下定结论,EA交易在有趋势的时候运行得很好,然而,在平缓市场中表现低于突破的系统(事实上,这也是比尔威廉姆自己提到的典型状况)。
本社区仅针对特定人员开放
查看需注册登录并通过风险意识测评
5秒后跳转登录页面...