学习如何基于鳄鱼(Alligator)设计交易系统
鳄鱼定义
鳄鱼技术指标是一种趋势跟踪,由比尔·威廉姆斯(Bill Williams)开发。 它所依据的趋势并非来自金融市场金融产品经历年代的大多数时间,它只需要其 15% 到 30% 的时间,而它在窄幅震荡区间消耗了大部分时间,大约花费了 70% 到 85% 的时间。 故此,我们有时出于一段趋势,要么是上升趋势,要么是下降趋势,但大多数时候我们都有范围周期。 如果您想了解有关趋势、它们的类型、以及我们如何识别它们的更多信息,您可以阅读我上一篇文章中的趋势定义主题,它在这种情况下会很实用。 它在计算中用到了一些斐波那契级数,就像我们即将看到的那样,因为它所用到的三个平滑移动平均线,周期分别为一组数字 5、8、13。 正如我们所说,鳄鱼指标由三条平滑移动平均线组成,它们如下: 鳄鱼下颌。 鳄鱼牙齿。 鳄鱼嘴唇。
我们可以按以下步骤手工计算此指标:
鳄鱼下颌 = SMMA (Median price, 13, 8)
鳄鱼牙齿 = SMA (Median price, 8, 5)
鳄鱼嘴唇 = SMMA (Median price, 5, 3)
Median Price = (High + Low)/2
其中:
SMMA = 平滑移动均线
Median price = 数据中位价
High = 最高价
Low = 最低价
在前面的步骤之后,我们就得到了鳄鱼指标,但我们不再需要手工计算它,因为在 MetaTrader 5 终端中将其作为内置指标,我们需要做的就是从可用的技术指标中选择它,如下所示:
打开交易终端时,我们按下插入 --> 指标 --> 比尔·威廉姆斯 --> 鳄鱼。
之后,我们可以找到参数,如下所示:
1 - 鳄鱼下颌周期。
2 - 鳄鱼下颌水平平移。
3 - 鳄鱼牙齿周期。
4 - 鳄鱼牙齿水平偏移。
5 - 鳄鱼嘴唇周期。
6 - 鳄鱼牙齿水平平移。
7 - 平滑周期。
8 - 选用的价格类型。
经由以下窗口,我们可以确定指标的样式:
1 - 下颌线颜色。
2 - 下颌线样式。
3 - 下颌线宽度。
4 - 牙齿线颜色。
5 - 牙齿线样式。
6 - 牙齿线宽度。
7 - 嘴唇线颜色。
8 - 嘴唇线样式。
9 - 嘴唇线宽度。
确定所有参数并按"确定"后,我们可以发现指标加载到图表上,如下所示:
正如我们在上一个图表中所见,我们将指标插入到图表中,并得到三条线:
1 - 鳄鱼嘴唇
2 - 鳄鱼牙齿
3 - 鳄鱼下颌
我们可以简单地观察这些线距价格的相对位置来读取指标。 如果价格高于嘴唇、牙齿,然后是下颌,我们可以说趋势上升。 如果价格低于嘴唇、牙齿,然后是下颌,我们可以说趋势下降。 如果价格在三条线穿行,我们可以说是横盘整理。 鳄鱼策略
在交易中运用鳄鱼指标的方式有很多,但我还需反复提请本主题的简单策略所基于的主要意图旨在教学,您必须在真实账户中使用它们之前对其进行测试,并确保它们有利可图。 您也许会发现上述策略需要优化,这是很正常的,这样做您就能得到最符合您的交易风格的的最佳公式。
策略一:鳄鱼趋势识别器:
基于此策略,我们需要根据特定条件获得看涨和看跌信号。 如果嘴唇值大于牙齿值和下颌值两个值,同时大于牙齿值和下颌值,则为看涨信号。 在其它情况下,如果嘴唇值低于牙齿值和下颌值,同时牙齿值低于下颌值,则为看跌信号。
嘴唇 > 牙齿值,嘴唇 > 下颌值,且牙齿 > 下颌值 --> 看涨
嘴唇 < 牙齿值,嘴唇 < 下颌值,且牙齿<> 下颌值 --> 看跌
策略二: 鳄鱼信号系统
基于此策略,我们需要根据嘴唇、牙齿和下颌值之间的交叉来获取买入和卖出信号。 如果嘴唇值大于牙齿值和下颌值,这将是一个买入信号。 在另一种场景下,如果嘴唇值低于牙齿和下颌值,则为卖出信号。
嘴唇 > 牙齿值,嘴唇 > 下颌值 --> 买入
嘴唇 < 牙齿值,嘴唇 < 下颌值 --> 卖出
策略三: 鳄鱼信号系统增强
基于这个策略,我们需要根据嘴唇、牙齿和下颌之间的交叉,然后是收盘价和牙齿价值之间的交叉,来获得买入和卖出信号。 如果嘴唇线低于牙齿和下颌,且收盘价大于牙齿值,这将是一个买入信号。 在其它情况下,如果嘴唇线大于牙齿和下颌,且收盘价低于牙齿值,这将是一个卖出信号。
嘴唇 < 牙齿值,嘴唇 < 下颌值,且收盘价 > 牙齿 --> 买入
嘴唇 < 牙齿值,嘴唇 > 下颌值,且收盘价 < 牙齿 --> 卖出 鳄鱼策略蓝图
现在,我们需要基于上一个主题中拟议的策略创建一个交易系统,为此,我们将设计一个分步蓝图来帮助我们创建这个交易系统。
策略一:鳄鱼趋势识别器:
根据此策略,我们需要创建一个交易系统,基于持续检查以下值来生成看涨或看跌信号: 嘴唇值 牙齿值 下颌值
我们需要交易系统来判定这些值的位置,并基于此生成合适的信号。 如果嘴唇线大于牙齿,嘴唇大于下颌,牙齿线大于下颌,在这种情况下,我们要求交易系统在图表上返回含有以下值的注释: 看涨 下颌值 = n 牙齿 = n 嘴唇值 = n
在另一种情况下,如果嘴唇线低于齿线,嘴唇线低于下颌线,同时牙齿线低于下颌线,在这种情况下,我们要求交易系统在图表上返回含有以下值的注释: 看跌 下颌值 = n 牙齿 = n 嘴唇值 = n
以下是该交易系统的分步蓝图:
策略二: 鳄鱼信号系统
根据此策略,我们需要创建一个交易系统,基于持续检查以下值来判定每个值的位置来生成买入或卖出信号: 嘴唇值 牙齿值 下颌值
如果嘴唇线大于牙齿值,同时嘴唇线大于下颚值,在这种情况下,我们要求交易系统在图表上返回含有以下值的注释: 买入 下颌值 = n 牙齿 = n 嘴唇值 = n
在另一种情况下,如果嘴唇线低于牙齿值,同时嘴唇线低于下颌线,我们要求交易系统在图表上返回含有以下值的信号注释: 卖出
下颌值 = n 牙齿 = n 嘴唇值 = n
以下是该交易系统的分步蓝图:
策略三: 鳄鱼信号系统增强
根据此策略,我们需要创建一个交易系统,检查以下值来生成买入和卖出信号,从而判定它们彼此的位置: 嘴唇值 牙齿值 下颌值 收盘价
如果嘴唇值低于牙齿值,嘴唇线低于牙齿线,然后收盘价高于牙齿值,我们要求交易系统在图表上返回含有以下值的信号注释: 买入 嘴唇值 = n 牙齿值 = n 收盘价 = n 下颌值 = n
如果嘴唇线大于齿线,唇线低于下颌线,然后收盘价变为齿值以下,我们要求交易系统在图表上返回含有以下值的信号注释: 卖出 嘴唇值 = n 牙齿值 = n 收盘价 = n 下颌值 = n
以下是该交易系统的分步蓝图:
鳄鱼交易系统
现在,我们将为每个拟议的策略创建一个交易系统,以便在 MetaTrader 5 终端中执行,并可自动生成所需的信号。 首先,我们将创建一个基础交易系统,生成鳄鱼分量值的信号,以便在我们的交易系统中使用。 以下是创建此系统类型的步骤:
创建每个鳄鱼分量值(嘴唇、牙齿、下颚)的数组。 double jawsArray[]; double teethArray[]; double lipsArray[];
调用 "ArraySetAsSeries" 函数设置数据排列顺序。 其参数: array[] flag ArraySetAsSeries(jawsArray,true); ArraySetAsSeries(teethArray,true); ArraySetAsSeries(lipsArray,true);
调用 "iAlligator" 函数定义鳄鱼指标句柄: 其参数: symbol: 我们采用 (_Symbol) 对应当前应用的品种名称。 period: 我们采用 (_Period) 应用当前时间帧。 jaw_period: 确定下颌的计算周期,我们将采用(13)。 jaw_shift: 确定下颌的水平偏移,我们将采用(8)。 teeth_period: 确定牙齿的计算周期,我们将采用(8)。 teeth_shift: 确定牙齿的水平偏移,我们将采用(5)。 lips_period: 确定嘴唇的计算周期,我们将采用(5)。 lips_shift: 确定嘴唇的水平偏移,我们将采用(3)。 ma_method: 确定移动均线类型,我们将采用(MODE_SMA)。 applied_price: 确定价格类型我们将采用 (PRICE_MEDIAN)。 int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);
调用 "CopyBuffer" 函数定义数据,并存储结果。 其参数: indicator_handle: 确定指标句柄,我们将采用(allicanDef)。 buffer_num: 确定指标缓冲区数,我们将采用(0 表示下颌)、(1 表示牙齿)和(2 表示嘴唇)。 start_pos: 确定起始位置,我们将采用(0)。 count: 确定要复制的数量,我们将采用(3)。 buffer[]: 确定要复制的目标数组,我们将采用(jawsArray,toothArray,lipsArray)。 CopyBuffer(alligatorDef,0,0,3,jawsArray); CopyBuffer(alligatorDef,1,0,3,teethArray); CopyBuffer(alligatorDef,2,0,3,lipsArray);
获取三个分量的值。 double jawsValue=NormalizeDouble(jawsArray[0],5); double teethValue=NormalizeDouble(teethArray[0],5); double lipsValue=NormalizeDouble(lipsArray[0],5);
用指标的三个分量值作为注释。 Comment("jawsValue = ",jawsValue," ", "teethValue = ",teethValue," ", "lipsValue = ",lipsValue);
以下是创建该交易系统的完整代码: //+------------------------------------------------------------------+ //| Simple Alligator System.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //-------------------------------------------------------------------- void OnTick() { //creating price array double jawsArray[]; double teethArray[]; double lipsArray[]; //Sorting data ArraySetAsSeries(jawsArray,true); ArraySetAsSeries(teethArray,true); ArraySetAsSeries(lipsArray,true); //define Alligator int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN); //define data and store result CopyBuffer(alligatorDef,0,0,3,jawsArray); CopyBuffer(alligatorDef,1,0,3,teethArray); CopyBuffer(alligatorDef,2,0,3,lipsArray); //get value of current data double jawsValue=NormalizeDouble(jawsArray[0],5); double teethValue=NormalizeDouble(teethArray[0],5); double lipsValue=NormalizeDouble(lipsArray[0],5); //comment on the chart Comment("jawsValue = ",jawsValue," ", "teethValue = ",teethValue," ", "lipsValue = ",lipsValue); } //+------------------------------------------------------------------+
编译此代码后,我们将在智能系统文件夹的导航器中找到它,如下所示:
将其拖放到所需的图表上,我们将找到此 EA 的窗口,如下所示:
在勾选"允许算法交易"旁边的"确定"后,EA 将加载到图表,如下所示:
正如我们在右上角附加的上一张图表中一样,EA 已加载。 现在,我们已准备好接收信号。 以下是来自测试生成的信号的示例。
正如我们在上一张图表中所见,我们在左上角有一个注释,其中包含以下值:
下颌值 = n
牙齿 = n
嘴唇值 = n
策略一:鳄鱼趋势识别器
我们可以基于此策略创建一个交易系统,与以下完整代码相同: //+------------------------------------------------------------------+ //| Alligator Trend Identifier.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { //creating three arrays of Alligator components double jawsArray[]; double teethArray[]; double lipsArray[]; //Sorting data ArraySetAsSeries(jawsArray,true); ArraySetAsSeries(teethArray,true); ArraySetAsSeries(lipsArray,true); //define Alligator int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN); //define data and store result CopyBuffer(alligatorDef,0,0,13,jawsArray); CopyBuffer(alligatorDef,1,0,13,teethArray); CopyBuffer(alligatorDef,2,0,13,lipsArray); //get value of current data double jawsValue=NormalizeDouble(jawsArray[0],5); double teethValue=NormalizeDouble(teethArray[0],5); double lipsValue=NormalizeDouble(lipsArray[0],5); //conditions of strategy if(lipsValue>teethValue && lipsValue>jawsValue && teethValue>jawsValue) { Comment("Bullish"," ", "jawsValue = ",jawsValue," ", "teethValue = ",teethValue," ", "lipsValue = ",lipsValue); } if(lipsValueteethValue && lipsValue>jawsValue && teethValue>jawsValue) { Comment("Bullish"," ", "jawsValue = ",jawsValue," ", "teethValue = ",teethValue," ", "lipsValue = ",lipsValue); }
看跌情况: if(lipsValueteethValue && lipsValue>jawsValue) { Comment("Buy"," ", "jawsValue = ",jawsValue," ", "teethValue = ",teethValue," ", "lipsValue = ",lipsValue); } if(lipsValueteethValue && lipsValue>jawsValue) { Comment("Buy"," ", "jawsValue = ",jawsValue," ", "teethValue = ",teethValue," ", "lipsValue = ",lipsValue); }
卖出信号情况: if(lipsValueteethValue) { Comment("Buy"," ", "jawsValue = ",jawsValue," ", "teethValue = ",teethValue," ", "closingPrice = ",pArray[0].close," ", "lipsValue = ",lipsValue); } if(lipsValue>teethValue && lipsValue>jawsValue && pArray[0].closeteethValue) { Comment("Buy"," ", "jawsValue = ",jawsValue," ", "teethValue = ",teethValue," ", "closingPrice = ",pArray[0].close," ", "lipsValue = ",lipsValue); }
卖出信号情况: if(lipsValue>teethValue && lipsValue>jawsValue && pArray[0].close
关于赴美建厂,台积电宣布新决定,让高中生上岗别看一枚小小的芯片,背后可是高端科技的星辰大海。如今,全球缺芯,这既是一个挑战,更是一个机遇,一个弯道超车的机遇。但是,要想实现弯道超车,同样也离不开相应的高端人才,没有人才的助力
C面向对象(3)模板类是在什么时候实现的模板实例化模板的实例化分为显示实例化和隐式实例化。模板具体化当模板使用某种类型类型实例化后生成的类或函数不能满足需要时,可以考虑对模板进行具体化。具体化时可
上市首日破发收跌,知乎该用什么为自己正名?4月22日,在美股上市1年多时间的知乎,正式在港交所挂牌交易。然而开盘即破发,截至当天下午收盘,知乎港股股价报22。45港元,总市值73。20亿港元。有观点认为,在更为了解其商业模
沪铜今跌1260!究竟为何大跌?存在的矛盾点诸多今日铜价大幅下跌,开盘74040跌880,收盘73660跌1260,伦铜今日也跌破1万美元。今日沪铜2202跌价日线图铜价大幅下跌背后主要受到两点影响市场担心美联储加息,以及国内疫
电商会员一年可省上千元?或涉虚假宣传近日,电商会员涨价进入快车道,自去年涨价后,腾讯视频再次宣布VIP会员涨价,随后京东PLUS腾讯视频会员年卡也上调价格。记者注意到,目前各大电商平台卖会员已经成了常规操作,会员费一
十年了,我们还在保卫上证3000点?十年了,我们还在保卫上证3000点?指数又回到熟悉的起点,最早还要追溯到07年,如今15过去了,还是熟悉的感觉,市场上的段子仍然流传,嘲笑着大A。2018年,中美贸易战,3000点
沪指跌破3000点,创2年最大跌幅!发生了什么?今日(4月25日),对于A股投资者来说,是心碎的一天。三大指数今日低开低走,沪指午后跌破3000点关口,刷新2020年7月以来新低。而在击穿3000点后,A股三大股指继续下行。截至
连跌5天!人民币急速贬值背后,到底发生了什么?在岸人民币兑美元汇率,连续5个交易日贬值。从4月19日的6。3630,到4月25日最低跌到了6。5770,短短5个交易日,连续下跌2140个基点(1基点为万分之一)。人民币为什么快
人民币为啥下跌?真是金融战开始了?在美联储释放出5月份加息的超强鹰派预期后,各国货币对美元汇率都开启了下跌模式,尤其是日元,已经连续十多个交易日持续下跌了,创下半个世纪以来最长连跌记录。要知道日元可是公认的避险货币
王老师经典影视语句记忆中的经典台词经典1。狼夹着尾巴,但走遍天下吃肉,狗翘着尾巴,但走遍天下吃屎。2。你想让别人没饭吃,别人就会让你没汤喝。3。有道无术,术尚可求,有术无道,止于术。神即道,道法自然
做人,不能太闲(好文分析)人一旦习惯了太闲,人就懒了,人懒了,就容易废了。曾国藩说百种弊病,皆从懒生。人之所以会在人生道路遇到这样那样的弊端困境,都离不开一个字懒。喜欢闲适的环境和处境,就意味着自己喜欢了懒