文章 "重新审视一种旧时的趋势交易策略:两个随机振荡指标,一个移动平均指标和斐波那契线"

 

新文章 重新审视一种旧时的趋势交易策略:两个随机振荡指标,一个移动平均指标和斐波那契线已发布:

旧时的交易策略本文介绍了一种纯技术型的趋势跟踪策略。该策略纯粹是技术性的,使用一些技术指标和工具来传递信号和目标。该策略的组成部分如下:一个周期数为14的随机振荡指标,一个周期数为5的随机振荡指标,一个周期数为200的移动平均指标,一个斐波那契投影工具(用于设定目标)。

该策略的交易规则如下:

  • 每当两个随机振荡指标同时达到超卖水平,反弹,然后(大约在同一时间)回到超卖水平时,就会产生买入信号。整个过程必须在市场价格高于200周期移动平均线时完成。第一个目标是使用斐波那契投影工具设置的,该工具应用于随机振荡指标第一次到达其底部的低点和第二次到达底部的低点之间。因此,第一个目标是61.8%的投影,第二个目标是100.0%的投影。
  • 每当两个随机振荡指标同时达到超买水平,反弹,然后(大约在同一时间)回到超买水平时,就会产生一个卖出信号。整个过程必须在市场价格低于200周期移动平均线时完成。第一个目标是使用斐波那契投影工具设置的,该工具应用于随机振荡指标第一次达到其顶部时的高点和第二次达到其峰值时的高点之间。因此,第一个目标是61.8%的投影,第二个目标是100.0%的投影。

(我已经对策略进行了更改,在每个斐波那契水平中都有止损水平)

下图显示了看跌信号:

看跌


最终,结果可能因市场而异,目前的结果可能并不稳定。策略在某些时期有效,但在其他时期可能表现不佳。

作者:Javier Santiago Gaston De Iriarte Cabrera

 

这可能是我读过的代码最差的文章了,我无意冒犯,只是就事论事。不要在真实账户上使用这种代码。

   int Highest = iHighest(Symbol(),my_timeframe,MODE_REAL_VOLUME,WHOLE_ARRAY,1);

你认为这在做什么?

除期货和股票外,大多数符号都没有真实的交易量数据。在外汇交易中,它总是返回 1。最高总是 = 1。

然后,您使用这个指数(真实成交量获得的最高值)来获得高值:

   double highestValue = iHigh(Symbol(),my_timeframe,Highest);

您是在混合不应该混合的东西(除非您知道自己在做什么)。高 "价格值与实际成交量有什么关系?

无论如何,它总是与 High[1] 相同,这显然是您想要得到的。那为什么不直接得到它而要通过 iHighest 和实际成交量呢?

我就不多说了。您说:

这篇文章的目的是帮助人们了解如何用 MQL5 编程

如果有人想了解如何使用 MQL5 编程,我建议他尽量避免阅读这篇文章。

 
Alain Verleyen #:

这可能是我读过的代码最差的文章了,我无意冒犯,只是就事论事。不要在真实账户上使用这种代码。

你认为这在做什么?

除期货和股票外,大多数符号都没有真实的交易量数据。在外汇交易中,它总是返回 1。最高总是 = 1。

然后,您就可以使用该指数(实际成交量获得的最高值)来获得高点值:

您将不应该混合的东西混合在一起(除非您知道自己在做什么)。高 "价格值与实际成交量有何关系?

无论如何,它总是与 High[1] 相同,这显然是您想要得到的。那为什么不直接得到它而要通过 iHighest 和实际成交量呢?

我就不多说了。您说:

这篇文章的目的是帮助人们了解如何使用 MQL5 编程

如果有人想了解如何使用 MQL5 编程,我建议他尽量避免阅读这篇文章。


我解释了策略,这就是我的目的。您可以编写自己的程序。这只是一个例子。我的情况是必须显示结果,这就是为什么我上传了一个简单的 EA。真正的目的是展示策略。

是的,你是对的,这对学习编程没有帮助,这只是为了展示一个策略

 

同意阿兰的观点,这也是我见过的最糟糕的编码员。如果能帮上忙的话,下面是修复方法:(替换 OnTick() 函数的第一部分)

MqlTick tick;
SymbolInfoTick(_Symbol,tick);

int highest_index = iHighest(NULL,0,MODE_CLOSE,100,0);
int lowest_index = iLowest(NULL,0,MODE_CLOSE,100,0); 

if(highest_index == -1 || lowest_index == -1) { 
   PrintFormat("iHighest()/iLowest() call error. Error code=%d",GetLastError());
   return;
 }

double previousHigh = iHigh(NULL, PERIOD_CURRENT, highest_index);
double previousLow = iLow(NULL, PERIOD_CURRENT, lowest_index);
double currentHigh = iHigh(NULL, PERIOD_CURRENT, 1);
double currentLow = iLow(NULL, PERIOD_CURRENT, 1);
 

解释很清楚,但代码中有很多不必要的声明和行数。

我看不出 MA 条件与随机 条件与 MA 趋势指示在哪里进行比较。

请指出来,也许代码可以修改和简化。

我运行了 EA,遗憾的是它没有执行交易。