Vertikale Linie. - Seite 2

 
Alexey Viktorov:

Sie müssen sich entscheiden, was Sie wollen...

Wenn Sie gemischt wollen, nur manchmal, um Verbindungen zwischen zwei vertikalen Abschnitten des Zickzacks zu entfernen, ist es besser, einen farbigen Zickzack zu nehmen und zu platzieren, durch Zustand, keine Farbe.

Es lohnt sich, den gesamten Dokumentationsabschnitt über die grafische Darstellung zu lesen. Es wird Ihnen eine Vorstellung davon geben, was getan werden kann...

"Ich habe begonnen, einen Indikator zu erstellen, der Linien zwischen zwei Punkten nach Zeit und Preis zieht...

Alles ist gut, aber manchmal kann die Zeit der Punkte in einer Kerze sein..."

Mein Fehler, dass ich das Wort "Linie" anstelle von "Liniensegmenten" verwendet habe. Ich hätte gleich ein Bild einfügen sollen.

Danke, ich werde es mit dem farbigen Zickzack versuchen, ich denke, das wird einfacher sein, als einen zusätzlichen Puffer für das schräge Segment zu machen.
 
Alexey Viktorov:

Wenn Sie mischen und anpassen müssen, entfernen Sie nur gelegentlich die Verbindungen zwischen den beiden vertikalen Abschnitten des Zickzacks, es ist besser, einen farbigen Zickzack zu nehmen und an einigen Stellen keine Farbe zuzuweisen.

Nun, wie bekomme ich die fehlende Farbe in einem farbigen Zickzack. Wenn es nicht schwierig ist (ich denke, Sie brauchen nicht länger als 5 Minuten), können Sie die fehlende Farbe in diesem Beispiel zuordnen? Ich habe ein Bild beigefügt, das zeigt, welche Zeilen fehlen sollten.


#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:

Ich kann die fehlende Farbe im farbigen Zickzack nicht nachvollziehen. Wenn es nicht schwierig ist (ich denke, Sie brauchen nicht länger als 5 Minuten), können Sie die fehlende Farbe in diesem Beispiel zuordnen? Anbei ein Bild, das zeigt, welche Zeilen fehlen sollten.


1.

#property indicator_color1  clrRed,clrNone

2.

Color_ZigzagColors[i]=0;

Die Farbe wird rot sein

Color_ZigzagColors[i]=1;

Es wird keine Farbe geben.

Und die Variable

int            color_sections;
ist völlig überflüssig.
 
Alexey Viktorov:

1.

2.

Die Farbe wird rot sein

Es wird keine Farbe geben.

Und die Variable

ist völlig unnötig.

Vielen Dank, aber ich kann nicht bekommen, dies in der Funktionsebene zu arbeiten, was sollte ich hinzufügen oder entfernen in den Funktionen, um diese Zeilen verschwinden? Wie kann ich clrNone hier implementieren?

         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:

Danke, aber ich kann nicht bekommen, dies auf Funktionsebene gelten, was sollte ich hinzufügen oder entfernen in Funktionen gibt, damit diese Zeilen verschwinden? Wie kann man clrNone hier implementieren?

An einem Ort 0 an einem anderen 1

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Vertikale Linie.

Alexey Viktorov, 2018.10.12 17:29

Color_ZigzagColors[i]=0;

Die Farbe wird rot sein

Color_ZigzagColors[i]=1;

Es wird keine Farbe geben.

Und in Ihrem Code ist es in zwei Fällen dasselbe

Color_ZigzagColors[i]=0;


 
Alexey Viktorov:

An einer Stelle 0 an der anderen 1

In Ihrem Code ist es in beiden Fällen dasselbe


Hier ist, was passieren wird (ich habe clrYellow anstelle von clrNone, um es klarer zu machen). Anstelle der Verbindungslinien (mit blauen Kreuzen markiert) verschwinden die mittlere vertikale Linie (rot eingekreist). Ich gehe daher davon aus, dass bereits auf der Funktionsebene etwas nicht stimmt.


 
Nauris Zukas:

Das passiert (ich habe clrNone durch clrYellow ersetzt, um es deutlicher zu machen). Die mittlere vertikale Linie (rot eingekreist) verschwindet ebenfalls anstelle der Verbindungslinien (blau eingekreist). Ich gehe daher davon aus, dass bereits auf der Funktionsebene etwas nicht stimmt.


Geben Sie den Code und die Zeichnung nicht von Hand, sondern Linien durch den Indikator gezeichnet. Die Möglichkeit, vertikale Abschnitte eines Zickzacks zu zeichnen, gibt es erst seit kurzem. Rashid Umarov nahm an dieser Diskussion teil, und diese Änderung wurde auf seinen Vorschlag hin vorgenommen. Wenn diese Option bestätigt wird, werden wir Rashid einladen.

 
Alexey Viktorov:

Geben Sie den Code und die Zeichnung nicht von Hand, sondern Linien durch den Indikator gezeichnet. Die Möglichkeit, vertikale Abschnitte des Zickzacks zu zeichnen, gibt es erst seit kurzem. Rashid Umarov nahm an dieser Diskussion teil, und diese Änderung wurde auf seinen Vorschlag hin vorgenommen. Wenn diese Option bestätigt wird, werden wir Rashid einladen.


Dateien:
 
Nauris Zukas:


Interessant, mit so dicken Linien sieht es aus wie handgezeichnete Linien...

@Rashid Umarov

In einem der Threads haben Sie sich an der Diskussion über die Unmöglichkeit beteiligt, eine vertikale Linie mit DRAW_ZIGZAG zu zeichnen. Ein Beispiel finden Sie im vorigen Beitrag. Nach dieser Diskussion wurden Änderungen vorgenommen, und die Funktion wurde hinzugefügt. Jetzt gibt es ein weiteres Problem mit DRAW_COLOR_ZIGZAG, es ist einfach unmöglich, die Farbe für jedes Segment einheitlich zu setzen. Vielleicht gibt es eine Möglichkeit, diesen Nachteil auch in der grafischen Darstellung zu beheben?

 
Alexey Viktorov:

Interessant, mit so dicken Linien sieht es aus wie handgezeichnete Linien...

@Rashid Umarov

In einem der Threads haben Sie sich an der Diskussion über die Unmöglichkeit beteiligt, eine vertikale Linie mit DRAW_ZIGZAG zu zeichnen. Ein Beispiel finden Sie im vorigen Beitrag. Nach dieser Diskussion wurden Änderungen vorgenommen, und die Funktion wurde hinzugefügt. Jetzt gibt es ein weiteres Problem mit DRAW_COLOR_ZIGZAG, es ist einfach unmöglich, die Farbe für jedes Segment einheitlich zu setzen. Vielleicht gibt es eine Möglichkeit, diesen Nachteil auch in der grafischen Darstellung zu beheben?

Wenn ja, dann nicht mehr lange. Es wird irgendwo auf dem hundertsten Platz als eine weit entfernte Aufgabe ohne Priorität stehen.