错误、漏洞、问题 - 页 1396

 
Ilya Malev:
我在例子中做了MathRand,只是为了演示刻度的工作原理。在原文中,我在那里用一些交易员的作者的方法计算了数字水平。一开始我们想让它们从1到5,但即使MT4在缓冲区中使用DRAW_NONE,也无法达到足够的规模。在我们把它们变成负数并把最小值固定 为0后,问题就解决了。当把该指标移植到MT5时,这个方案似乎也不能工作。我不得不像沃尔德玛说的那样乘以点。

顺便说一句,我完全忘记了。))

像这样试试吧。

   SetIndexBuffer(0,buffer1,INDICATOR_DATA);
   SetIndexBuffer(1,buffer2,INDICATOR_CALCULATIONS);

指标_计算 >>>

 
Karputov Vladimir:
你的例子是歪的,而你却不想修正它。你修好后我会检查的。

如果它是真正使用的代码,我就会修复它。但创建这段代码只是为了证明这个问题,它成功地做到了这一点。清理它是浪费时间,因为它不会影响结果。

 
Anatoli Kazharski:

顺便说一句,我完全忘记了。))

像这样试试吧。

试了一下,如果indicator_plots=1和INDICATOR_CALCULATIONS 都是如此。

无论PlotIndexSetInteger(1, PLOT_SHOW_DATA, true)如何设置,第二个缓冲区的读数都会从数据窗口 消失。

 
Anatoli Kazharski:

你可以尝试向servicedesk报告这个错误,并等待那里的回应。

我已经这么做了。如果他们回复,我会让你知道)。但我怀疑这是个错误。这就是你发现的方式。
 
Ilya Malev:

在indicator_plots=1和INDICATOR_CALCULATIONS 下都进行了尝试

第二个缓冲区的读数就会从数据窗口 中消失,不管是否指定PlotIndexSetInteger(1, PLOT_SHOW_DATA, true)。

但是缩放问题是通过这种方式解决的。因此,你可以向Servicedesk提出请求,增加在数据窗口中显示这些缓冲区的能力。

而且你也可以尝试这样做。

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int    id,      // идентификатор события
                  const long   &lparam, // параметр события типа long
                  const double &dparam, // параметр события типа double
                  const string &sparam) // параметр события типа string
  {
   if(id==CHARTEVENT_MOUSE_MOVE)
     {
      int      subwin =WRONG_VALUE; // Номер окна, в котором находится курсор
      datetime time   =NULL;        // Время соответствующее координате X
      double   level  =0.0;         // Уровень (цена) соответствующий координате Y
      //---
      if(ChartXYToTimePrice(0,(int)lparam,int(dparam),subwin,time,level))
        {
         int bars_total=Bars(Symbol(),Period(),time,TimeCurrent());
         //---
         Comment("x: ",lparam,"; y: ",(int)dparam,"; subwin: ",subwin,"; time: ",time,"; level: ",level,"\n",
                 "indicator value: ",buffer2[bars_total]);
        }
     }
  }

//---

OnInit()中,你需要添加。

void OnInit()
  {
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
  }
 
Anatoli Kazharski:

因此,你可以向serviced创建一个请求,简单地添加在数据窗口中显示这种缓冲区的能力。

我刚刚描述了这个问题,DRAW_NONE缓冲区数值的逻辑与渲染数值的逻辑是不同的,它们不是图形数值,因此考虑到它们的缩放是不符合逻辑的。他们想如何解决这个问题,或者他们是否想让它保持现状,都与我无关。

 
Ilya Malev:

我刚刚描述了这个问题,根据定义,DRAW_NONE缓冲区值的逻辑与渲染值的逻辑不同,它们不是图形值,因此考虑到它们的缩放是不符合逻辑的。而他们想如何解决这个问题,或者想让它保持现状,都与我无关。

前一个帖子中的选项不是很合适吗?以防万一,一切都保持原样。)

附加的文件:
Test.mq5  4 kb
 
Anatoli Kazharski:

前一个帖子中的选项不是很合适吗?以防万一,一切都保持原样。)

当然,谢谢你的建议,如果我想想出一些拐杖,我也会想出一些东西,但首先我们在数据窗口中看数值是很舒服的。其次,我们应该在其他指标和专家顾问系统中使用这个指标 的缓冲值,有些东西告诉我,如果我们为计算做一个缓冲,就不可能通过iCustom获得其数值。

因此,我们通过将第二个缓冲区的值乘以点来解决这个问题。

 
Ilya Malev:

我刚刚描述了这个问题,根据定义,DRAW_NONE缓冲区值的逻辑与渲染值的逻辑不同,它们不是图形值,因此考虑到它们的缩放是不符合逻辑的。他们想如何解决这个问题,或者他们是否想让它保持现状,都与我无关。

这完全取决于你想在哪里显示这些数值。如果你把显示设置为一个单独的窗口,那么计算出的缓冲区数值不可见也没有关系。所有数值仍将落入这个窗口。因此,秤可能会坏掉。

不符合逻辑--我同意,但不太可能被修复。

 
Ilya Malev:

当然,谢谢你的建议,如果我想做一些拐杖,我也会想办法,但首先我们在数据窗口中看数值是很舒服的。其次,我们需要在其他指标和专家顾问中使用这个指标 的缓冲值,有些东西告诉我,如果我们为计算做一个缓冲,就不可能通过iCustom获得其数值。

试试吧,有可能从颜色缓冲区获得数值。所以,也有可能从计算缓冲区中得到它。毕竟,它有一个索引,也就是说,从理论上讲,它是可以被引用的。