初学者的问题 MQL5 MT5 MetaTrader 5 - 页 543

 
edutak:

对不起,我不太明白。蜡烛的收盘价 必须大于指标的70水平。

而70级=70,应该等于什么?

Close[1]指的是工具的价格。在这种情况下,它是第1条的收盘价。但不是对指标。该指标是价格的导数。

在你的案例中,RSI的范围是0到100,而价格是1.43406。这远远低于70。

70的水平是指标的价值。而Close[1]是第1条的收盘价。它们是完全不同的东西,不能进行比较。像公斤与米一样。

 
Vitalii Ananev:

Close[1]指的是工具的价格。在这种情况下,是指第1条的收盘价。但不是对指标。该指标是价格的导数。

在你的案例中,RSI的范围从0到100,但价格就像图片中的1.43406。这远远低于70。

我明白了,谢谢你,这样重做,似乎已经正确打开了,但为什么50级的指标没有反映出来?

void OnTick()
  {
   int kolpos=0;
   double rsi=0,uroven70=70,uroven30=30,uroven50=50;
   rsi=iRSI(Symbol(),0,10,PRICE_CLOSE,1);
   for(int pos=0; pos<OrdersTotal(); pos++) 
     {
      OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
         kolpos++;
     }
   if(kolpos==0)
     {
      if((rsi>uroven70) &&   (Open[1]<uroven70) && Volume[0]<3)
         OrderSend(Symbol(),OP_BUY,Lots,Ask,30,0,0,"",Magic,0,clrGreen);
      if((rsi<uroven30) &&   (Open[1]>uroven30) && Volume[0]<3)
         OrderSend(Symbol(),OP_SELL,Lots,Bid,30,0,0,"",Magic,0,clrRed);
     }
 }
 

这是否正确?顾问是否能正常工作?

void OnTick()
  {
   int kolpos=0;
   double rsi=0,uroven70=70,uroven30=30,uroven50=50;
   rsi=iRSI(Symbol(),0,10,PRICE_CLOSE,1);
   for(int pos=0; pos<OrdersTotal(); pos++) 
     {
      OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
         kolpos++;
     }
   if(kolpos==0)
     {
      if (rsi>uroven70)// && Volume[0]<3)
         OrderSend(Symbol(),OP_BUY,Lots,Ask,30,0,0,"",Magic,0,clrGreen);
      if (rsi<uroven30)// &&   (Open[1]>uroven30) && Volume[0]<3)
         OrderSend(Symbol(),OP_SELL,Lots,Bid,30,0,0,"",Magic,0,clrRed);
     }
 }
 
edutak:

我明白了,谢谢你,如此重做,似乎已经正确打开了,但为什么50级的指标没有反映出来?

我不知道你得到了什么,我只是把>改为<。你重新做的事情,完全是一派胡言。甚至不要想把它放在真实的地方。

50的水平是在指标本身设置的。专家顾问知道这个水平在指标中的位置。

 
edutak:

这是否正确?顾问是否能正常工作?

那就更好了。你还应该创建一个过滤器。只有在有上升趋势 的情况下,它才会开出买单,只有在有下降趋势的情况下才会卖出。
 
Vitalii Ananev:

我不知道你得到了什么,我只是把>改为<。你所改变的完全是无稽之谈。甚至不要想把它放在真实的地方。

50级是在指标本身设置的。专家顾问知道这个水平在指标中的位置。

在这里,我想我打开的方式是正确的,但是50级的东西看不到,而30级和70级的东西却能看到。
附加的文件:
 
Vitalii Ananev:
那就更好了。再做一个过滤器。只有在出现上升趋势 时,它才会开启买入交易,只有在出现下降趋势时,才会开启卖出交易。

趋势是这样的。对吗?

if (rsi>uroven70)

if (rsi<uroven30)
 
edutak:
在这里,我想我正确地打开了它,但我看不到50级。30和70级在那里。
水平必须在指示器设置 中手动设置。默认情况下,没有50级。我在上面的图片中显示。
 
edutak:

趋势是这样的。对吗?

RSI是一个震荡器,它不显示趋势。

添加另一个趋势指标,如MA。

double MA = iMA(......)

if (rsi>uroven70 && Close[1]<MA)
{
 ///SELLL
 
}

if (rsi<uroven30 && Close[1]>MA)
{
///BUY

}
 
如果交易没有自动复制到交易者定位的手数,但交易量较大,请告知该如何处理?