
学习如何基于鳄鱼(Alligator)设计交易系统
概述
这是来自我们系列中的一篇新文章,是有关如何基于最流行的技术指标设计交易系统。 在本文中,我们将详细学习有关鳄鱼指标是什么、它衡量什么、我们如何计算它、以及如何读取和运用它。 然后,我们将基于该指标的主要意图,在一些简单策略基础上创建一个交易系统。 我们会通过以下主题涵盖该指标:
我建议您尝试应用自己所学知识,尤其是本文中的代码,来开发您的编程技能,因为这是达成这一开发意图的重要一步。 在本文中,我们将利用内置在 MetaTrader 5 交易终端中的 MQL5(MetaQuotes 语言 5)IDE,如果您不知道如何下载 MetaTrader 5,以及如何使用 MQL5,您可以阅读在 MetaEditor 中编写 MQL5 代码的主题来了解更多信息。
免责声明:所有信息“按原样”提供仅用于教学目的,并非出于交易目的或建议。 这些信息不能保证任何结果。 如果您选择在您的任何交易账户上使用这些材料,您将自行承担风险,您是唯一的责任人。
鳄鱼定义
鳄鱼技术指标是一种趋势跟踪,由比尔·威廉姆斯(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,"\n", "teethValue = ",teethValue,"\n", "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,"\n", "teethValue = ",teethValue,"\n", "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","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); } if(lipsValue<teethValue && lipsValue<jawsValue && teethValue<jawsValue) { Comment("Bearish","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); } } //+------------------------------------------------------------------+
代码中的差异。
策略的条件,看涨情况:
if(lipsValue>teethValue && lipsValue>jawsValue && teethValue>jawsValue) { Comment("Bullish","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); }
看跌情况:
if(lipsValue<teethValue && lipsValue<jawsValue && teethValue<jawsValue) { Comment("Bearish","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); }
编译此代码后,并按照我们学习的方式执行创建的智能系统,我们会发现此 EA 加载到图表上,如下所示:
正如我们在上一个图表中所见,我们将 EA 附加到图表上的右上角,我们已准备好基于此策略获得看涨或看跌信号。以下是这些信号的示例: 下面是这些信号的一些示例。
看涨情况:
正如我们在上一张图表中所见,我们在右上角有一个注释作为信号,含有以下值:
- 看涨
- 下颌值 = n
- 牙齿 = n
- 嘴唇值 = n
看跌情况:
正如我们在上一张图表中所见,我们在右上角有一个注释作为看跌信号,具有以下值:
- 看跌
- 下颌值 = n
- 牙齿 = n
- 嘴唇值 = n
我们有三条线高于价格。如此,我们得到了看跌信号。
以下代码创建基于此策略的交易系统:
//+------------------------------------------------------------------+ //| Alligator Signals 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 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) { Comment("Buy","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); } if(lipsValue<teethValue && lipsValue<jawsValue) { Comment("Sell","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); } } //+------------------------------------------------------------------+
代码中的差异。
此策略的条件。
买入信号情况:
if(lipsValue>teethValue && lipsValue>jawsValue) { Comment("Buy","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); }
卖出信号情况:
if(lipsValue<teethValue && lipsValue<jawsValue) { Comment("Sell","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); }
编译此代码,并在交易终端中执行后,我们可以发现它已加载到图表上,如下所示:
我们在上一张图表的右上角看到 EA 已加载,我们已准备好接收基于此策略的买入或卖出信号,以下是测试示例。
买入信号情况:
如我们所见,我们得到的所需信号含有以下值:
- 买入
- 下颌值 = n
- 牙齿 = n
- 嘴唇值 = n
卖出信号情况:
我们得到所需的信号含有以下值:
- 卖出
- 下颌值 = n
- 牙齿 = n
- 嘴唇值 = n
我们有三条线高于价格。如此,我们得到了看涨信号。
以下是基于此策略创建交易系统的完整代码:
//+------------------------------------------------------------------+ //| Alligator Signals System Enhancement.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[]; MqlRates pArray[]; //Sorting data ArraySetAsSeries(jawsArray,true); ArraySetAsSeries(teethArray,true); ArraySetAsSeries(lipsArray,true); int Data=CopyRates(_Symbol,_Period,0,1,pArray); //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 && pArray[0].close>teethValue) { Comment("Buy","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "closingPrice = ",pArray[0].close,"\n", "lipsValue = ",lipsValue); } if(lipsValue>teethValue && lipsValue>jawsValue && pArray[0].close<teethValue) { Comment("Sell","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "closingPrice = ",pArray[0].close,"\n", "lipsValue = ",lipsValue); } } //+------------------------------------------------------------------+
代码中的差异。
创建更多 “MqlRates” 结构类型的数组,以便存储有关价格、交易量、和点差的信息。
MqlRates pArray[];
调用 “CopyRates” 获取 MqlRates 类型的历史数据。 其参数:
- symbol_name: 确定品种名称,我们将采用(_Symbol)。
- timeframe: 确定周期,我们将采用(_Period)。
- start_pos: 确定起始位置,我们将采用(0)。
- count: 确定要复制的数据数量,我们将采用(1)。
- rates_array[]: 确定要复制的目标数组,我们将采用(pArray)。
int Data=CopyRates(_Symbol,_Period,0,1,pArray);
策略的条件。
买入信号情况:
if(lipsValue<teethValue && lipsValue<jawsValue && pArray[0].close>teethValue) { Comment("Buy","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "closingPrice = ",pArray[0].close,"\n", "lipsValue = ",lipsValue); }
卖出信号情况:
if(lipsValue>teethValue && lipsValue>jawsValue && pArray[0].close<teethValue) { Comment("Sell","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "closingPrice = ",pArray[0].close,"\n", "lipsValue = ",lipsValue); }
编译此代码,并执行 EA 后,我们会发现它已被加载到图表上,如下所示,可以获取我们的买入和卖出信号。
我们已把 EA 加载到右上角,我们可以接收所需的信号,以下是测试示例。
买入信号情况:
我们在左上角得到一条注释,其中包含以下值:
- 买入
- 下颌值 = n
- 牙齿 = n
- 收盘价 = n
- 嘴唇值 = n
卖出信号情况:
我们在左上角得到一条注释作为信号:
- 卖出
- 下颌值 = n
- 牙齿 = n
- 收盘价 = n
- 嘴唇值 = n
由于三条线低于价格,然后我们还发现收盘价收盘价低于鳄鱼齿线。
结束语
我们在本文中详细学习了鳄鱼技术指标,除了生成买入和卖出信号外,它还可用于确认趋势。 我们学习了如何手工计算它,以及如何据其在简单策略里运用:
- 鳄鱼趋势识别器:根据鳄鱼三条线(嘴唇、牙齿和下颌)的位置生成看涨或看跌信号。
- 鳄鱼信号系统: 根据指标三条线之间的交叉,遵照经典方法交叉生成买入或卖出信号。
- 鳄鱼信号系统增强:通过另一种方法生成买入或卖出信号,根据指标三线的位置,以及收盘价和齿之间的交叉,更早地获得这些信号。
我们还为提到的每个策略设计了一个分步蓝图,来帮助我们组织我们的思路,从而顺利、轻松、和有效地创建一个交易系统。 我们还为每个提到的策略创建了可在 MetaTrader 5 交易终端中运行的交易系统,并根据我们的设计和编码自动生成信号。 我需要在此再次确保,您必须在真实账户上使用之前,测试所有策略,确保它们对您有用,且可盈利,因为此文的主要意图是分享知识,且本文的主要目的是教学,此外没有什么策略能够适合我们所有人。
我希望您尝试应用自己学到的知识,我建议您提高编码技能,并从阅读本文中获得完全的好处,我希望您发现它对您的交易有用,并对本文的主题甚至任何相关主题都能引发出有用的见解。 如果您想阅读更多类似的文章,可以阅读我之前在本系列中的文章,因为我们已分享了最受欢迎的技术指标,如随机指标、RSI、布林带、移动平均线、轨道线、MACD、ADX、等 等,以及我们如何基于它们创建交易系统。
本文由MetaQuotes Ltd译自英文
原文地址: https://www.mql5.com/en/articles/11549
注意: MetaQuotes Ltd.将保留所有关于这些材料的权利。全部或部分复制或者转载这些材料将被禁止。
This article was written by a user of the site and reflects their personal views. MetaQuotes Ltd is not responsible for the accuracy of the information presented, nor for any consequences resulting from the use of the solutions, strategies or recommendations described.



新文章《学习如何设计交易系统》由 Alligator 发表:
作者:Mohamed AbdelmaaboudMohamed Abdelmaaboud
您好、
我发现您文章中的这个链接无效:在 MetaEditor 中编写 MQL5 代码。会出现 404 错误。
此外,这也是错误的:
我们有三条线在价格下方移动,因此我们得到了一个看跌信号。
应该是
请更正一下好吗?
你好、
我发现您文章中的这个链接无效:在 MetaEditor 中编写 MQL5 代码。会出现 404 错误。
此外,这也是错误的:
我们有三条线在价格下方移动,因此,我们得到了一个看跌信号。
应该是(我认为):
请更正一下好吗?
感谢您的说明,我将予以更正。