垂直线。 - 页 2

 
Alexey Viktorov:

你必须决定你想要什么...

如果你想混合,只是有时要删除两个垂直部分的人字形之间的连接,最好是采取一个彩色的人字形,并放置,由条件,没有颜色。

事实上,你可能想阅读整个关于图形绘制 的文档部分。它将给你一些想法,可以做什么...

"我已经开始制作一个指标,它将按时间和价格在两个点之间画线...

一切都是好的,但有时点的时间可以在一根蜡烛里......"

我的错是用了线而不是线段这个词。我应该马上插入一张照片。

谢谢,我将尝试彩色之字形,我想这比为斜线段制作一个额外的缓冲区要容易。
 
Alexey Viktorov:

如果你需要混合搭配,只需偶尔去掉人字形的两个垂直部分之间的连接,最好是采取彩色的人字形,在一些地方不分配颜色,按惯例。

好了不说了,我怎么会在一个彩色的之字形中缺少颜色。如果不难的话(我想对你来说不会超过5分钟),你能对这个例子中缺乏颜色的问题进行归纳吗?我附上了一张图片,说明应该缺少哪些线条。


#property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots   1
//--- plot ZigZag
#property indicator_label1  "ZigZag"
#property indicator_type1   DRAW_COLOR_ZIGZAG
#property indicator_color1  clrRed,clrYellow
#property indicator_style1  STYLE_SOLID
#property indicator_width1  10
//--- input параметры
//--- indicator buffers
double         ZigZagBuffer1[];
double         ZigZagBuffer2[];

int            color_sections;
double         Color_ZigzagColors[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- связывание массивов и индикаторных буферов
   SetIndexBuffer(0,ZigZagBuffer1,INDICATOR_DATA);
   SetIndexBuffer(1,ZigZagBuffer2,INDICATOR_DATA);
   SetIndexBuffer(2,Color_ZigzagColors,INDICATOR_COLOR_INDEX);
   color_sections=0; 

//---
   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 limit=prev_calculated;
   if(prev_calculated==0)limit=rates_total-1;

   for(int i2=limit;i2<rates_total;i2++) // recalculate on new bar
     {
      for(int i=0;i<rates_total;i++)
        {
         if(i==rates_total-3 || i==rates_total-12 ||  i==rates_total-18) // Test VLines and TLines! 
           {
            ZigZagBuffer1[i]=high[i];
            Color_ZigzagColors[i]=color_sections;
           }
         else
           {
            ZigZagBuffer1[i]=EMPTY_VALUE;
           }

         if(i==rates_total-7 || i==rates_total-12 || i==rates_total-20) // Test VLines and TLines!   
           {
            ZigZagBuffer2[i]=low[i];
            Color_ZigzagColors[i]=color_sections;
           }
         else
           {
            ZigZagBuffer2[i]=EMPTY_VALUE;
           }

        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Nauris Zukas:

我不能把缺乏色彩的东西变成彩色的之字形。如果不难的话(我想对你来说不会超过5分钟),你能对这个例子中缺乏颜色的问题进行归纳吗?附上一张图片,说明应该缺什么线。


1.

#property indicator_color1  clrRed,clrNone

2.

Color_ZigzagColors[i]=0;

颜色将是红色

Color_ZigzagColors[i]=1;

不会有任何颜色。

而变量

int            color_sections;
是完全多余的。
 
Alexey Viktorov:

1.

2.

颜色将是红色

不会有任何颜色。

而变量

是完全没有必要的。

谢谢你,但我无法在函数层面上做到这一点,我应该在函数中添加或删除什么来使这些线条消失?我如何在这里实现clrNone?

         if(i==rates_total-3 || i==rates_total-12 ||  i==rates_total-18) // Test VLines and TLines! 
           {
            ZigZagBuffer1[i]=high[i];
            Color_ZigzagColors[i]=0;
           }
         else
           {
            ZigZagBuffer1[i]=EMPTY_VALUE;
           }

         if(i==rates_total-7 || i==rates_total-12 || i==rates_total-20) // Test VLines and TLines!   
           {
            ZigZagBuffer2[i]=low[i];
            Color_ZigzagColors[i]=0;
           }
         else
           {
            ZigZagBuffer2[i]=EMPTY_VALUE;
           }
           
 
Nauris Zukas:

谢谢,但我不能让这一点适用于函数级,我应该在那里的函数中添加或删除什么来使这些线条消失?如何在这里实现clrNone?

在一个地方是0,在另一个地方是1

关于交易、自动交易系统和策略测试的论坛

垂直线。

Alexey Viktorov, 2018.10.12 17:29

Color_ZigzagColors[i]=0;

颜色将是红色

Color_ZigzagColors[i]=1;

不会有任何颜色。

而在你的代码中,在两种情况下是相同的

Color_ZigzagColors[i]=0;


 
Alexey Viktorov:

一处是0,另一处是1

在你的代码中,两种情况下是一样的


下面是将发生的情况(我把clrYellow而不是clrNone放进去,以使它更清楚)。取而代之的是连接线(用蓝色叉子标记)消失和中间的垂直线(用红色圈出)。因此,我认为在功能层面已经出现了问题。


 
Nauris Zukas:

这就是发生的情况(我把clrNone换成了clrYellow,使之更清晰)。中间的垂直线(红色圈出)也消失了,而不是连接线(蓝色圈出)。因此,我认为在功能层面已经出现了问题。


提供的代码和图纸不是用手画的,而是用指标画的线。绘制 "之 "字形垂直部分的能力是最近出现的。拉希德-乌马罗夫参加了这次讨论,这一改动是在他的建议下做出的。如果这个方案得到确认,我们将邀请拉希德。

 
Alexey Viktorov:

提供的代码和图纸不是用手画的,而是用指标画的线。绘制 "之 "字形的垂直部分的可能性最近才出现。拉希德-乌马罗夫参加了这次讨论,这一改动是在他的建议下做出的。如果这个方案得到确认,我们将邀请拉希德。


附加的文件:
 
Nauris Zukas:


有趣的是,这么粗的线条,看起来像手绘的线条...

@Rashid Umarov

在其中一个主题中,你参与了关于用DRAW_ZIGZAG画一条垂直线的不可能性的讨论。前面的帖子中就有一个例子。在那次讨论之后,进行了修改,增加了这个功能。现在,DRAW_COLOR_ZIGZAG还有一个问题,就是不可能为每段设置一致的颜色。也许在图形显示方面也有办法解决这个缺点?

 
Alexey Viktorov:

有趣的是,这么粗的线条,看起来像手绘的线条...

@Rashid Umarov

在其中一个主题中,你参与了关于用DRAW_ZIGZAG画一条垂直线的不可能性的讨论。前面的帖子中就有一个例子。在那次讨论之后,进行了修改,增加了这个功能。现在,DRAW_COLOR_ZIGZAG还有一个问题,就是不可能为每段设置一致的颜色。也许在图形显示方面也有办法解决这个缺点?

如果有的话,也不会很快。它将作为一个遥远的非优先任务出现在第100位上。