指标: DRAW_FILLING

 

DRAW_FILLING:

这个 DRAW_FILLING 绘图风格用于将指标两个缓冲区内区域填充。事实上, 它画两条线,并在线间填充指定颜色。

DRAW_FILLING

作者: MetaQuotes Software Corp.

 

我试着用发布的代码编写自己的指标,使用绘图属性 DRAW_FILLING。

但我遇到了相邻绘制部分被空值分隔粘连的问题。

如果在一个窗口中出现两个绘制的部分,那么尽管它们之间有一个带有EMPTY_VALUE 值的指标部分隔开,但这个空部分仍然会绘制出相邻部分的值。


我采用这种情况是因为已发布的会话指标代码对我不起作用,所以我决定重写所有代码。

下面是草稿。

附加的文件:
Session.mq5  4 kb
 

我只能提供这种选择


附加的文件:
Session.mq5  4 kb
 
Rosh:

我只能提供这种选择


谢谢你,但还有点不方便,我可能会在图形对象上停下来。

 
Urain:

谢谢你,但一点也不多,我会在图形对象上停止。

因为DRAW_FILLING 风格 是用多边形绘制的,所以无法得到漂亮的矩形。
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования - Документация по MQL5
 
Rosh:
由于DRAW_FILLING 类型 的绘图是通过多边形完成的,因此无法获得漂亮的矩形。
好吧,这种方法不适合这种用途,但并不意味着它在其他用途上就不好。
 

我也遇到了同样的问题(粘在空值区域上)。虽然上面似乎说不可能得到矩形,但因为有一个例子可以画出这些矩形(交易时段指标),所以我决定深入研究一下这个问题。

老实说,我不明白如何在上述指标中得到矩形。因此,如果能得到任何解释(来自平台开发人员、作者、第三方开发人员),我将不胜感激。

另一方面,在实验过程中发现,获得矩形并不难--只需在一段空值后交换备案缓冲区即可。换句话说,这段代码

...
//--- 
   for ( int bar = startBar; bar < rates_total && !IsStopped(); bar++ ) {
      if ( prev_calculated != rates_total && bar == rates_total - 1 ) {
         _up = up;
      }
      if ( bar % 4 == 0 ) {
         if ( up ) {
            draw(bar, high[bar], low[bar]);
            up = false;
         } else {
            draw(bar, low[bar], high[bar]);
            up = true;
         }
      }
   }
//--- 为下一次调用返回 prev_calculated 的值
   return(rates_total);
}
//+------------------------------------------------------------------+
void draw(int bar, double price1, double price2) {
//---
   int start = bar-2;
   
   for ( int i = start; i <= bar; i++ ) {
      FillingBuffer1[i] = price1;
      FillingBuffer2[i] = price2;
   }
//---
}

就能得到这样的结果:

填充样品


看来问题已经解决了。我编写了一个按日分配用户指定时间间隔的指标,结果又给了我一个新的惊喜:

时区

无论我怎么修改,都无法消除 "副作用"。请注意,在第一种情况下(上面的代码和图片)没有观察到类似的情况。

因此,问题来了:

  • 为什么交易时段指标(文章开头的链接)不存在粘在空值区域的问题?
  • 为什么在某些情况下矩形可以正常绘制,而在其他情况下却会出现副作用?代码附在文章末尾。(是的,如果总是出现这种现象,我同意关于多边形的说法)。

我再说一遍:我将对所有的解释表示感谢。

附注 1 在我看来,矩形问题的解决方案是对象(不知为何并不想使用)的一个很好的替代方案。毕竟,选择时间间隔、线性反转、Darvas 区域以及选择各种图案等等,都是一样的。

附注 2 我想过将 TimeZone 指标放到代码库中,但这值得吗(使用这些 "左 "条)?

附加的文件:
 
修复了显示 "左 "条的错误。
 

use  PlotIndexSetDouble (1,PLOT_EMPTY_VALUE,EMPTY_VALUE); for not filling  range. 

 Why sometime  effect but sometime no effect ?


ref   https://www.mql5.com/zh/forum/417956/page4

问题,错误的讨论
问题,错误的讨论
  • 2022.05.05
  • www.mql5.com
那么,让我们开始吧...