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

 
DCodec:

说实话,我什么都不明白。我需要Close[2]、Close[1]上的指标顶线值,仅此而已。

如何从任何指标中提取这些数值,以便不 "打乱 "指标的代码。


你可以在任何BAR上获得任何指标缓冲区的值,而不是在收盘时。见iCustom 帮助。

淘宝网

返回指定的自定义指标的句柄。

程序。

  • 在OnInit()中创建一个指标句柄
  • 在OnTick()或OnTime()中,从所需的INDICATOR缓冲区获取指定BAR号的指标数据。

 
Vladimir Karputov:

你可以在任何BAR上获得任何指标缓冲区的值,而不是在收盘时。见iCustom 帮助。

淘宝网

返回指定的自定义指标的句柄。

程序。

  • 在OnInit()中创建一个指标句柄
  • 在OnTick()或OnTime()中,从所需的INDICATOR缓冲区获取指定BAR号的指标数据。

是的,我搞错了。我需要第一条和第二条的指标值。但我们说布林线有三条线。哪一行会向我返回值?我为这些愚蠢的问题道歉,但我真的很困惑。
 
DCodec:
是的,我说错了。我想在第一条和第二条上获得指标值。但我们说布林线有三条线。哪条线是返回给我的?我为这些愚蠢的问题道歉,但真的是STUPOR。

请稍等...

下面是从iBands检索数值的函数。

//+------------------------------------------------------------------+
//| Get value of buffers for the iBands                              |
//|  the buffer numbers are the following:                           |
//|   0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND                  |
//+------------------------------------------------------------------+
double iBandsGet(const int buffer,const int index)
  {
   double Bands[1];
//ArraySetAsSeries(Bands,true);
//--- reset error code 
   ResetLastError();
//--- fill a part of the iBands array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(handle_iBands,buffer,index,1,Bands)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iBands indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(0.0);
     }
   return(Bands[0]);
  }

这个函数是截断的--它的目的是在条数 "index "上从指标缓冲区"buffer "中永远只得到一个值。

iBands的三个系列都有自己的常数。

//|   0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND                  |
 
Vladimir Karputov:

请稍等...

下面是从iBands检索数值的函数。

这个函数是截断的--它的目的是在条数 "index "上从指标缓冲区"buffer "中永远只得到一个值。

所有三个iBands系列都有自己的常数。

是的......是的。这就是我不明白如何应用的原因

//|   0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND  

这可能是来自于狭隘的心态。我还是像在MQL4中那样思考。

 
DCodec:

是的......是的。这就是我不明白如何应用的原因

这可能是由于心胸狭窄。我仍然在考虑MQL4的问题。


使用KodoBase的iBands的例子:布林线RSI

 
DCodec:

...


有什么收获吗?或者创建一个主题,逐步写出如何从指标中检索数据?

 
Vladimir Karputov:

进展如何?或者创建一个主题,逐步写出如何从指标中检索数据?

你被逗乐了。而我现在才意识到

CopyBuffer

这就是我所需要的。

CopyBuffer(handle_iBands,buffer,index,1,Bands)

谢谢你。

 

我还有一个问题。如何禁用指标中我不需要的线条?

比方说,在iEnvelopes中禁用UPPER_LINE。

 
DCodec:

你在笑。而我现在才意识到,我并不好笑。

这就是我所需要的。

谢谢你。


你在胡思乱想。我不是在笑,我是在认真地问。例如,我有这样一个主题:简单专家顾问。检查钢筋尺寸。买/卖。


DCodec

我将允许自己再问一个问题。我如何禁用指标中我不需要的那一行?

比方说,在iEnvelopes中禁用UPPER_LINE。


这个问题并不清楚。更准确地描述你想做的事情的地点和内容。

 
Vladimir Karputov:

是你想象出来的。我不是在笑,我是在认真地问。例如,我有这样一个主题:简单专家顾问。检查钢筋尺寸。买/卖。



这个问题并不清楚。更准确地描述你想做的事情的地点和内容。

当EA在OnInit()中收到一个指标句柄时 ...

int OnInit()
  {
//--- Получить хэндл индикатора Envelopes_upper для отрисовки верхней линии
   EnvHandle_upper=iEnvelopes(NULL,0,Period_upper,0,MODE_SMA,PRICE_MEDIAN,Deviation_upper);

....terminal画了两条线,我只需要顶线。

如何禁止画这条线?即把它的颜色改为CLR_NONE,或者把线条风格改为DRAW_DONE?