Hallo! Ich habe damit begonnen, einen Indikator zu erstellen, der eine Linie zwischen zwei Pips in der Zeit und dem Preis zieht, die Art und Weise, wie die Linie gezogen wird, ist ungefähr so:
Alles ist in Ordnung, aber manchmal können die Zeitpunkte in einer Kerze liegen, dann erhält man eine vertikale Linie. Ich nehme an, dass SupportBuffer[w] nicht vertikal ausgerichtet werden kann?
Wenn wir einen Zickzackkurs statt einer Linie verwenden, funktioniert es.
Wenn Sie statt einer Linie ein Zickzack verwenden, funktioniert es.
Danke, ich werde versuchen, den ZigZag zu zerlegen und das Prinzip des Zeichnens einer Linie zu verstehen.
Wenn Sie statt einer Linie einen Zickzackkurs verwenden, funktioniert es.
Der ZigZag selbst erwies sich als recht nachgiebig, so dass es nicht einfach war, ihn zu zerlegen. Aber ich habe ein einfaches Beispiel vorbereitet... Können Sie eine Funktion hinzufügen, bei der 3 Balken nach dem letzten Balken eine Linie zwischen dem Hoch und dem Tief nach Ihrem Rat Zickzack verläuft? Ich möchte das Prinzip verstehen, dann kann ich es selbst entwickeln.
#property indicator_chart_window #property indicator_buffers 1 #property indicator_plots 1 //--- plot Support #property indicator_label1 "Line" #property indicator_type1 DRAW_LINE #property indicator_color1 clrAqua #property indicator_style1 STYLE_SOLID #property indicator_width1 3 //--- indicator buffers double LineTest[]; double HighMapBuffer[]; // highs double LowMapBuffer[]; // lows //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,LineTest,INDICATOR_DATA); SetIndexBuffer(1,HighMapBuffer,INDICATOR_CALCULATIONS); SetIndexBuffer(2,LowMapBuffer,INDICATOR_CALCULATIONS); PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE); //--- 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; for(int i2=limit;i2<rates_total;i2++) // New bar recalculate { if(limit<rates_total-1)continue; // New bar recalculate for(int i=0;i<rates_total;i++) { //if(i<rates_total-3 && i>rates_total-15) // H Line 3-15 bar // LineTest[i]=high[rates_total-2]; // Price //else LineTest[i]=EMPTY_VALUE; HighMapBuffer[i]=high[rates_total-3]; LowMapBuffer[i]=low[rates_total-3]; LineTest[i]= // ??? } } return(rates_total); } //+------------------------------------------------------------------+
Der ZigZag selbst erwies sich als recht nachgiebig, so dass es nicht einfach war, ihn zu zerlegen. Aber ich habe ein einfaches Beispiel vorbereitet... Können Sie eine Funktion hinzufügen, bei der 3 Balken nach dem letzten Balken eine Linie zwischen dem Hoch und dem Tief nach Ihrem Rat Zickzack verläuft? Ich möchte das Prinzip verstehen und kann es dann selbst entwickeln.
https://www.mql5.com/ru/docs/customind/indicators_examples/draw_zigzag

- www.mql5.com
https://www.mql5.com/ru/docs/customind/indicators_examples/draw_zigzag
Danke, es gibt bereits eine Beschreibung und es ist ein Stil, kein Indikator :), ich werde versuchen, es herauszufinden.
Die vertikale Linie hat funktioniert, aber ich kann nicht herausfinden, wie ich die Verbindungslinie zwischen den vertikalen Linien entfernen kann. Kann jemand mein Beispiel so korrigieren, dass die Verbindungslinie verschwindet?
#property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 1 //--- plot ZigZag #property indicator_label1 "ZigZag" #property indicator_type1 DRAW_ZIGZAG #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 10 //--- indicator buffers double ZigZagBuffer1[]; double ZigZagBuffer2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { SetIndexBuffer(0,ZigZagBuffer1,INDICATOR_DATA); SetIndexBuffer(1,ZigZagBuffer2,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 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-15) // should be VLine on 3th and 15th bar! { ZigZagBuffer1[i]=high[i]; } else { ZigZagBuffer1[i]=EMPTY_VALUE; } if(i==rates_total-3 || i==rates_total-15) // should be VLine on 3th and 15th bar ! { ZigZagBuffer2[i]=low[i]; } else { ZigZagBuffer2[i]=EMPTY_VALUE; } if(ZigZagBuffer1[i]!=EMPTY_VALUE )Print(" ZigZagBuffer1[",i,"]: ",ZigZagBuffer1[i]); if(ZigZagBuffer2[i]!=EMPTY_VALUE )Print(" ZigZagBuffer2[",i,"]: ",ZigZagBuffer2[i]); } } return(rates_total); } //+------------------------------------------------------------------+
Die vertikale Linie hat funktioniert, aber ich verstehe nicht, wie man die Verbindungslinie zwischen den vertikalen Linien entfernt. Kann jemand mein Beispiel so korrigieren, dass die Verbindungslinie verschwindet?
Nun, dann habe ich mich geirrt. Ich habe den Zweck nicht verstanden...
In diesem Fall ist es notwendig und einfacher, die grafische Zeichnung DRAW_HISTOGRAM2 zu verwenden.

- www.mql5.com
Nun, dann habe ich mich geirrt. Ich habe den Zweck nicht verstanden...
In diesem Fall ist es notwendig und einfacher, die grafische Darstellung DRAW_HISTOGRAM2 zu verwenden.
Danke, ich werde es ausprobieren!
Eine weitere Frage: Zeichnet DRAW_HISTOGRAM2 nur vertikal oder kann es auch schräg (zwischen zwei Balken) zeichnen?Danke, ich werde es ausprobieren!
Eine weitere Frage, DRAW_HISTOGRAM2 zeichnet nur vertikal oder kann es auch schräg (zwischen zwei Balken)?Sie müssen sich entscheiden, was Sie wollen...
Wenn Sie es durcheinander bringen müssen, nur manchmal die Verbindungen zwischen den beiden vertikalen Abschnitten des Zickzacks entfernen, dann ist es besser, einen farbigen Zickzack zu nehmen und die Bedingung zu stellen, keine Farbe zuzuweisen.
Es kann nicht schaden, alle Abschnitte der Dokumentation über die grafische Darstellung zu lesen. Es würde Ihnen eine Vorstellung davon geben, was getan werden kann...

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Alles ist in Ordnung, aber manchmal können die Zeitpunkte in einer Kerze liegen, dann erhält man eine vertikale Linie. Ich verstehe, dass SupportBuffer[w] nicht vertikal ausgerichtet werden kann?