MQL5中的初学者问题。专业人士不会路过。 - 页 5

 

如何使某些指标的缓冲区不在 图表上绘制,而在指标的"数据 窗口 "中显示其数值?

我是这样做的。

#property indicator_label1  "Buff"
#property indicator_type1   DRAW_NONE

int OnInit ()
{
  PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_NONE);
}


但指标仍在画一个缓冲区。

 
_o0O:

如何使某些指标的缓冲区不在 图表上绘制,而在指标的"数据 窗口 "中显示其数值?

我是这样做的。


但指标仍在画一个缓冲区。

明白了,它是这样做的。

#property indicator_label1  "Buff"
#property indicator_type1   DRAW_NONE

不需要这样做。

奇怪的是,这个缓冲区应该在#property indicator_plots中指定...。虽然从逻辑上讲它不应该,因为它是在#属性indicator_buffers中指定的,而且它不需要绘制。


但是,现在数据窗口中的缓冲区名称显示不正确....,用PlotIndexSetString(0, PLOT_LABEL, "Buff")指定它也没有用。无论如何,请提供帮助。

 

下午好。

我在mql5中迈出了第一步。我生成了一个 基于RSI M5和RSI M15指标的EA。你能告诉我如何通过同时触发两个信号来执行交易吗?两者的权重都是1。如果我设置为0.5,那么根本就不会有交易被执行。参数 开启的信号阈值=90。

 
_o0O:

事实证明,就是这样。

不需要做。

奇怪的是,这个缓冲区应该在#property indicator_plots中指定...。但从逻辑上讲,它不应该,因为它是在#property indicator_buffers中指定的,而且绘制不是必须的。


但是,现在数据窗口中的缓冲区名称没有正确显示....,用PlotIndexSetString(0, PLOT_LABEL, "Buff")指定它也没有用。无论如何,请提供帮助。

帮助? 什么样的帮助......?

那么,你所要做的就是指定

#property indicator_label1  "Buff"

和所有,缓冲区将在数据窗口 中被命名,它将显示数值,并分别允许从EA中获得这些数值,同时不画出这些数值(非常方便地存储额外的信息,并且不会用缓冲线使图表混乱)。

 
_o0O:

事实证明,就是这样。

不需要做。

奇怪的是,这个缓冲区应该在#property indicator_plots中指定...。虽然从逻辑上讲它不应该,因为它是在#属性indicator_buffers中指定的,而且它不需要被绘制。


在数据窗口中显示了错误的缓冲区名称,用PlotIndexSetString(0, PLOT_LABEL, "Buff")指定名称也没有帮助...无论如何,请提供帮助。

应该使用颜色clr_NONE 而不是类型DRAV_NONE。

以下是测试代码

#property indicator_separate_window

#property indicator_buffers 2
#property indicator_plots   2
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  clrRed
#property indicator_width1  2
#property indicator_label1  "clrRed"
#property indicator_type2   DRAW_HISTOGRAM
#property indicator_color2  clrNONE
#property indicator_width2  2
#property indicator_label2  "clrNONE"

/****************indicator buffers****************/
double buf1[], buf2[];
/**************Custom indicator initialization function**************/
int OnInit()
{
    SetIndexBuffer(0, buf1, INDICATOR_DATA);
    SetIndexBuffer(1, buf2, INDICATOR_DATA);
   return(INIT_SUCCEEDED);
}/*******************************************************************/

/****************Custom indicator iteration function*****************/
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
 int i, limit = rates_total-prev_calculated; // Это тупо для примера. В нормальном индикаторе так делать нельзя!
 for(i = 0; i < limit; i++)
  {
   if(i%2 > 0)
    buf1[i] = 1;
   else
    buf2[i] = 1;
  }
 
   return(rates_total);
}/*******************************************************************/
 
Alexey Viktorov:

你不需要放DRAV_NONE类型,而是放clr_NONE 颜色。

以下是测试代码

所有这些都是不必要的,你只需要指定标签即可。

#property indicator_label1  "Buff"
 
_o0O:

这都是多余的,你只需要指定标签即可。

如果你这么聪明,为什么要问这个问题?

 
Alexey Viktorov:

如果你这么聪明,为什么要问这个问题?

聪明的人不是不问问题的人....。

任何论坛上的人都可以找到他们问题的答案,但如果不是为了尽快找到答案,这个论坛的目的到底是什么?

我的方法更简单、更简明,请使用它。

ZS 别再 "戳 "陌生人了,你这个聪明人。

 
_o0O:

聪明的人不是不问问题的人....。

任何论坛上的人都可以找到他们问题的答案,但如果不是为了尽快找到答案,这个论坛的目的到底是什么?

我的方法更简单、更简洁,请使用它。

你错得很离谱。远远不是这样。

 
Alexey Viktorov:

哦,你错得太离谱了。远远不是这样。

更何况,不是任何,因此,只欢迎任何问题。

在帮助中没有这样的细微差别。DRAW_NONE无论是#属性还是PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_NONE)都不起作用,PlotIndexSetString(0, PLOT_LABEL, "Buff")也不起作用,那么指定clrNONE来达到目的到底是什么逻辑?