这可能是我读过的代码最差的文章了,我无意冒犯,只是就事论事。不要在真实账户上使用这种代码。
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 编程,我建议他尽量避免阅读这篇文章。
这可能是我读过的代码最差的文章了,我无意冒犯,只是就事论事。不要在真实账户上使用这种代码。
你认为这在做什么?
除期货和股票外,大多数符号都没有真实的交易量数据。在外汇交易中,它总是返回 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);
新文章 重新审视一种旧时的趋势交易策略:两个随机振荡指标,一个移动平均指标和斐波那契线已发布:
旧时的交易策略本文介绍了一种纯技术型的趋势跟踪策略。该策略纯粹是技术性的,使用一些技术指标和工具来传递信号和目标。该策略的组成部分如下:一个周期数为14的随机振荡指标,一个周期数为5的随机振荡指标,一个周期数为200的移动平均指标,一个斐波那契投影工具(用于设定目标)。
该策略的交易规则如下:
(我已经对策略进行了更改,在每个斐波那契水平中都有止损水平)
下图显示了看跌信号:
最终,结果可能因市场而异,目前的结果可能并不稳定。策略在某些时期有效,但在其他时期可能表现不佳。
作者:Javier Santiago Gaston De Iriarte Cabrera