有什么帮助吗? - 页 3

 
deVries:

在您的EA的图表上放置一个具有相同设置的SMA,看看您做了什么......

我正在这样做,而我正处于这个阶段。

SMA6(with shift)>SMA21 =>买入订单,代码正在打印SMA6(with shift)=0,因此SMA6(ws)<SMA21,从而卖出?

 
j.w.msb:

我正在这样做,我已经到了这个地步。

SMA6(with shift)>SMA21 => 买入指令,代码正在打印SMA6(with shift)=0,因此SMA6(ws)<SMA21,从而卖出?



SMA6(with shift -3 )>SMA21,这是否会在第0条发生?

给您的图表拍张照片,让我看看是否发生过这种情况?

数据窗口(Ctrl+D)也会有帮助,将鼠标指针移到图表上,检查 数值。

 

https://www.mql5.com/en/charts/926555/eurusd-m1-easy-forex

像这里吗?已经应用了转变,SMA6<SMA21(虽然我有一种感觉,我是非常愚蠢的......)请原谅我的迟钝,但在任何时候,我都在比较眼前的SMA21和3 Bars前的SMA6,不是吗?我看不出它们有什么理由不能交叉 :s

 
j.w.msb:

https://www.mql5.com/en/charts/926555/eurusd-m1-easy-forex

像这里吗?已经应用了转变,SMA6<SMA21(虽然我有一种感觉,我是非常愚蠢的......)请原谅我的迟钝,但在任何时候,我都在比较眼前的SMA21和3 Bars前的SMA6,不是吗?我看不出它们有什么理由不能交叉:s


不,那是一张图片,你有13:00的时间,有超过3个柱子的后期时间。

因此,以一张图片为例,我们看到最后形成的条形图,后面没有条形图。

在图表上的移动平均线,就像你在你的EA中编码的那样,把你的鼠标指向最后一个条形。

 

......我的转变是在错误的位置,不是吗......那么iMA(Symbol(),0,6,0,MODE_SMA,PRICE_CLOSE,-3)就是我的目标? 不,我太傻了,它们不能在第0条交叉,只是因为SMA6在后面3条,那么我如何使用它呢?

 
j.w.msb:

......我的移位是在错误的位置,不是吗......那么iMA(Symbol(),0,6,0,MODE_SMA,PRICE_CLOSE,-3)就是我的目标? 不,我太傻了,它们不可能在第0条交叉,只是因为SMA6落后3条,那么我如何使用它?


double SMA6=iMA(Symbol(),0,6,-3,MODE_SMA,PRICE_CLOSE,0);       //ma_shift

意味着马云向左移动了3个小节(过去),在0小节没有数值,而且永远不会有。

 iMA(Symbol(),0,6,0,MODE_SMA,PRICE_CLOSE,-3)     //shift

你也会看到没有负数的小节,我们不知道将来会发生什么。

所以不要计算负的ma_shift,不要使用负的barnumbers。

 

使SMA6 = iMA(Symbol(),0,6,0,MODE_SMA,PRICE_CLOSE,0)暂时

用strategytester进行测试,并把它放在一个低周期的模拟账户上,让它经常进行交易,M5就足够用来测试了。

查看终端专家和日志,看看是否出现错误(他们会的)。

我现在不说了,我已经看到了,你可以通过这种方式学到最多。

见你的下一篇文章....

 

在5分钟的时间框架内运行。

//-----Indicators on the current timeframe----------------------------+
double SMA6=iMA(Symbol(),0,6,0,MODE_SMA,PRICE_CLOSE,0);
Print("SMA6 is ",SMA6);
double SMA21=iMA(Symbol(),0,21,0,MODE_SMA,PRICE_CLOSE,0);
Print("SMA21 is ",SMA21);                                    
//----Indicators on a higher timeframe--------------------------------+
double RSI=iRSI(Symbol(),1440,14,PRICE_CLOSE,0);
Print("RSI is ",RSI);                                                                   
//----Indicators on a lower timeframe---------------------------------+

运行完全正常,并按预期进行交易,没有任何顾虑。

2013.10.24 14:52:33 2013.09.10 20:10 SMATrader1-1-0 GBPJPY,M5: close #5 sell 0.07 GBPJPY at 157.797 sl: 159.797 at price 157.909
2013.10.24 14:52:33 2013.09.10 20:15 SMATrader1-1-0 GBPJPY,M5: SMA6是157.809
2013.10.24 14:52:33 2013.09.10 20:15 SMATrader1-1-0 GBPJPY,M5: SMA21是157.8063
2013.10.24 14:52:33 2013.09.10 20:15 SMATrader1-1-0 GBPJPY,M5: RSI是69.3519
2013.10.24 14:52:33 2013.09.10 20:15 SMATrader1-1-0 GBPJPY,M5: open #6 buy 0.07 GBPJPY at 157.893 sl: 155.893 ok

等等

我没有看到任何错误?

 
j.w.msb:

在5分钟的时间框架内运行。

运行完全正常,并按预期进行交易,没有任何顾虑。

2013.10.24 14:52:33 2013.09.10 20:10 SMATrader1-1-0 GBPJPY,M5: close #5 sell 0.07 GBPJPY at 157.797 sl: 159.797 at price 157.909
2013.10.24 14:52:33 2013.09.10 20:15 SMATrader1-1-0 GBPJPY,M5: SMA6是157.809
2013.10.24 14:52:33 2013.09.10 20:15 SMATrader1-1-0 GBPJPY,M5: SMA21是157.8063
2013.10.24 14:52:33 2013.09.10 20:15 SMATrader1-1-0 GBPJPY,M5: RSI是69.3519
2013.10.24 14:52:33 2013.09.10 20:15 SMATrader1-1-0 GBPJPY,M5: open #6 buy 0.07 GBPJPY at 157.893 sl: 155.893 ok

等等

我没有看到任何错误?

如果你进行了大量的交易,你的日志会变得非常大......特别是在策略测试器中,不要删除调试指纹,使用一个方案来打开和关闭它们,比如我使用的 方案。
 
//-----Indicators on the current timeframe----------------------------+
double SMA6=iMA(Symbol(),0,6,0,MODE_SMA,PRICE_CLOSE,0);
//Print("SMA6 is ",SMA6);
double SMA21=iMA(Symbol(),0,21,0,MODE_SMA,PRICE_CLOSE,0);
//Print("SMA21 is ",SMA21);                                    
//----Indicators on a higher timeframe--------------------------------+
double RSI=iRSI(Symbol(),1440,14,PRICE_CLOSE,0);
//Print("RSI is ",RSI);                                                                   
//----Indicators on a lower timeframe---------------------------------+

你已经看到这里没有错误,你不需要在这里打印声明。

在strategytester中,你的程序可能运行良好。

但它在你的演示账户上运行的情况如何呢?