编码帮助 - 页 522

 

大家好。

我想知道这是否是在for循环中计算指标值 的正确方法(贯穿所有可用的条形图)。

int OnCalculate(...)

{

//...

ArraySetAsSeries(SignalLine,false)。

//...

for(int i=0; i<Bars; i++)

{

double ma=iMA(NULL,0,MaPeriod,0,MaMethod,MaPrice,i)。

//...

SignalLine=ma;

}

//...

}

//...

return rates_total

}

P.S. 从逻辑上讲,在这个简单的案例中,我想通过iMA对象来表示和绘制MA的复制。但我不确定我如何设置循环。我得到的结果与内置MT4计算的结果有一点区别。我不知道为什么!

谢谢

 
har:
大家好。

我想知道这是否是在for循环中计算指标值的正确方法(贯穿所有可用的条形图)。

int OnCalculate(...)

{

//...

ArraySetAsSeries(SignalLine,false)。

//...

for(int i=0; i<Bars; i++)

{

double ma=iMA(NULL,0,MaPeriod,0,MaMethod,MaPrice,i)。

//...

SignalLine=ma;

}

//...

}

//...

return rates_total

}

P.S. 从逻辑上讲,在这个简单的案例中,我想通过iMA对象来表示和绘制MA的复制。但我不确定我如何设置循环。我得到的结果与内置MT4计算的结果有一点区别。我不明白为什么!

谢谢

当你使用iMA()时,顺序并不重要。

但正确的方法应该是for(int i=Bars-1; i>=0; i--) - 这样可以避免很多情况下的错误

 

谢谢你mladen。所以,如果我设置ArraySetAsSeries(SignalLine,false),我应该用以下方式进行迭代

for (int i = 0; i < Bars; i++)

而相反,如果ArraySetAsSeries(SignalLine,true),我应该用以下方式进行迭代

for (int = Bars - 1; i >= 0; i--)

这样做对吗?

 
har:
谢谢你mladen。这是因为我们使用ArraySetAsSeries()函数,那么我们应该反过来迭代数组,对吗? 谢谢!

这不会改变任何东西--你会得到带有当前值的元素0,当一个新的当前值到来时,SignalLine 的元素0会被新的值覆盖。

如果SignalLine是一个缓冲区,就不要使用ArraySetAsSeries(SignalLine,false)

 

你好,mladen先生和Igorad先生。

衷心感谢您的智慧分享和提供的帮助。

我也是在酝酿了很久之后再次请求你们的帮助,所以希望能得到你们的关注,你们的T3适应性指标ma _ica.mq4是我最喜欢的交易指标,虽然视觉上很好,但由于没有时间,很难手动操作,所以我希望有人能帮助我编码一个专家顾问,用该指标的箭头作为买入卖出信号,用正常的EA设施如追踪,bep和sl,tp来接受订单,还有很多大小。

Mladen和Igorad应该很忙--如果他们能帮忙,我很有天赋,如果没有,愿意帮忙的人可以帮我完成这个。这是指标T3适应性ma所在的页面"https://c.mql5.com/forextsd/forum/167/t3_adaptive_ma_i-ca_2.01_alerts_nmc.mq4

我也可以要求使用其他带有T3 cci的indies,但每个indies在一个EA中单独工作,并有使用真假选项。在任何对基于lukas箭头和曲线指标的EA感兴趣的人之间,它在分析价格转向的真实曲线方面仍然需要改进,因为它基于ma,价格没有被分析,但它在外汇中都是LIMITED,否则每个人都会选择成为百万富翁。

希望在论坛朋友的帮助下,它能尽早用于实盘交易。我试着给它编码,但我不是一个程序员,所以一切都徒劳无功,因此我在这里提出帮助请求。

梦想是伟大的,但手中的东西是渺小的。

 

哦,好的...谢谢!

在C++中,没有这样的问题。

 

你好,Mladen

希望您能考虑提供帮助,请看这个帖子-#5118,就在您的帖子#5220的上面一个帖子。

对我来说,如果能像你一样有一双清晰的手,这将是最好的礼物。

 
har:
哦,好的...。谢谢!在C++中没有这样的问题。

因为我总是用类似C/C++的模式处理数组,这些数组的索引从0(最古老的)到Bars-1(最新的)条。如果你对最新的条形图使用索引0,它将总是重写第0个元素。

如果你想按照C/C++的方式使用,使用一个数组,检查 其大小是否等于Bars,如果不是,则将其调整为Bars大小,然后用Bars-i-1作为索引给元素赋值。

如果它是一个缓冲区,与C/C++方式相比,索引是倒置的,那么你不必改变该循环中的任何东西--只需删除将数组设为系列的部分即可。

 

是的,我看到了! 我也想明白了。总之只是MQL和C++之间的小差异。就我所看到的,MQL中有很多C语言!但我绝对喜欢MQL

我希望在我的指标准备好后与大家分享(如果我能够理解是否有用),并给大家一个提示

 
har:
是的,我看到了! 我也明白了。总之,MQL和C++之间只有一些小的区别。就我所看到的,MQL中有很多C语言。但我绝对喜欢MQL ,我希望在我的指标准备好后(如果我能够理解是否有用的话)与大家分享,并给大家提供帮助

即使它们看起来很像,但当你运行它们时,却远非相似。它的执行速度 比同等的C/C++代码至少要慢100倍。

如果你可以的话,把关键部分写在C/C++ dll中--这样会快很多。