Indikator mit DRAW_CANDLES

 

Hallo, ich versuche einen Indikator mit DRAW_CANDLES umzusetzen - und scheitere noch kläglich... Bevor ich versuche meinen eigenen Indikator zu bekommen, versuche ich erstmal, überhaupt Farbe auf den Chart zu bekommen:

#property indicator_buffers   4
#property indicator_plots     1

#property indicator_type1     DRAW_CANDLES
#property indicator_label1    "Fraktal"
                              //Umriss,Bullisch,Bärisch 
#property indicator_color1    clrWhite,clrYellow,clrAliceBlue

double BufferHigh[], BufferLow[], BufferOpen[], BufferClose[];

int toCopy = 6;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit() {

   SetIndexBuffer(0,BufferHigh,INDICATOR_DATA);
   SetIndexBuffer(1,BufferLow,INDICATOR_DATA);
   SetIndexBuffer(2,BufferOpen,INDICATOR_DATA);
   SetIndexBuffer(3,BufferClose,INDICATOR_DATA);
   
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE, 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[])
{
   if(IsStopped()) return 0; // Überprüfe, ob mql5 zwangsbeendet 
   
   if(rates_total < toCopy) return 0;
   
   for(int i = 0; i < toCopy; i++) {
      BufferHigh[i] = high[i];
      BufferLow[i] = low[i];
      BufferOpen[i] = open[i];
      BufferClose[i] = close[i];
   }
   
   return(rates_total);
}
//+------------------------------------------------------------------+

Allerdings kommt da nix.... Wäre schön, wenn mir jemand erklären könnte, was ich falsch mache und wie es richtig geht :)

 
UnknownInnocent:

Hallo, ich versuche einen Indikator mit DRAW_CANDLES umzusetzen - und scheitere noch kläglich... Bevor ich versuche meinen eigenen Indikator zu bekommen, versuche ich erstmal, überhaupt Farbe auf den Chart zu bekommen:

Allerdings kommt da nix.... Wäre schön, wenn mir jemand erklären könnte, was ich falsch mache und wie es richtig geht :)

Schau dir den HeikenAshi Indikator an https://www.mql5.com/de/code/33
Heiken-Ashi
Heiken-Ashi
  • www.mql5.com
Ansichten: 3448 Rating: Veröffentlicht: 2016.02.16 06:53 Aktualisiert: 2016.11.22 07:34 Der Heiken-Ashi Indikator sieht aus wie ein Candlestick-Chart, aber es gibt einige Unterschiede. Anstatt die standardmäßigen OHLC-Werte für Kerzen zu benutzen, werden andere Formeln verwendet: Mit anderen Worten zeigt der Indikator "synthetische" Kerzen, die...
 
Otto Pauser:
Schau dir den HeikenAshi Indikator an https://www.mql5.com/de/code/33

Ich habe mir das mal angeschaut, ich verstehe aber nicht, was die anders machen... die kopieren da doch auch einfach nur Daten in ihre buffer so wie ich auch?

 
UnknownInnocent :

Ich habe mir das mal angeschaut, ich verstehe aber nicht, was die anders machen... die kopieren da doch auch einfach nur Daten in ihre buffer so wie ich auch?

Sie setzen den Pufferindex von 0 bis 5. Das sind die ältesten Balken im Diagramm. Korrigieren Sie Ihre Indizierung oder verwenden Sie ArraySetAsSeries ()

Und es wird Ihnen nicht gelingen, mit DRAW_CANDLES unterschiedliche Farben festzulegen. Lesen Sie die Dokumentation, um Ihnen zu helfen.

 
Alain Verleyen:

Sie setzen den Pufferindex von 0 bis 5. Das sind die ältesten Balken im Diagramm. Korrigieren Sie Ihre Indizierung oder verwenden Sie ArraySetAsSeries ()

Und es wird Ihnen nicht gelingen, mit DRAW_CANDLES unterschiedliche Farben festzulegen. Lesen Sie die Dokumentation, um Ihnen zu helfen.

Ich habe jetzt ArraySetAsSeries eingefügt und nutze nur noch eine Farbe, es funktioniert aber trotzdem nicht

#property indicator_buffers   4
#property indicator_plots     1

#property indicator_type1     DRAW_CANDLES
#property indicator_label1    "Fraktal"
                              //Umriss,Bullisch,Bärisch 
#property indicator_color1    clrWhite//,clrYellow,clrAliceBlue

double BufferHigh[], BufferLow[], BufferOpen[], BufferClose[];

int toCopy = 6;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit() {

   ArraySetAsSeries(BufferHigh,true);
   ArraySetAsSeries(BufferLow,true);
   ArraySetAsSeries(BufferOpen,true);
   ArraySetAsSeries(BufferClose,true);
   
   SetIndexBuffer(0,BufferHigh,INDICATOR_DATA);
   SetIndexBuffer(1,BufferLow,INDICATOR_DATA);
   SetIndexBuffer(2,BufferOpen,INDICATOR_DATA);
   SetIndexBuffer(3,BufferClose,INDICATOR_DATA);
   
   IndicatorSetString(INDICATOR_SHORTNAME,"Fraktale");
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE, 0.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[])
{
   if(IsStopped()) return 0; // Überprüfe, ob mql5 zwangsbeendet 
   
   if(rates_total < toCopy) return 0;
   
   for(int i = 0; i < toCopy && !IsStopped(); i++) {
      BufferHigh[i] = high[i];
      BufferLow[i] = low[i];
      BufferOpen[i] = open[i];
      BufferClose[i] = close[i];
   }
   
   return(rates_total);
}
//+------------------------------------------------------------------+
 
UnknownInnocent :

Ich habe jetzt ArraySetAsSeries eingefügt und nutze nur noch eine Farbe, es funktioniert aber trotzdem nicht

Du bist meinem Rat nicht gefolgt:

Forum über Handel, automatische Handelssysteme und Strategietests

Indikator mit DRAW_CANDLES

Alain Verleyen, 2020.06.15 03:41

Sie setzen den Pufferindex von 0 bis 5. Das sind die ältesten Balken im Diagramm. Korrigieren Sie Ihre Indizierung oder verwenden Sie ArraySetAsSeries ()

Und es wird Ihnen nicht gelingen, mit DRAW_CANDLES unterschiedliche Farben festzulegen. Lesen Sie die Dokumentation, um Ihnen zu helfen.


SetIndexBuffer () .

Wenn Sie ArraySetIndexAsSeries auf Puffer anwenden, müssen Sie diese auch auf OHLC-Arrays anwenden.

Sie müssen verstehen, was Sie tun, und nicht blind folgen, was Sie hier lesen.

Dokumentation zu MQL5: Benutzerindikatoren / SetIndexBuffer
Dokumentation zu MQL5: Benutzerindikatoren / SetIndexBuffer
  • www.mql5.com
//|                                              TestCopyBuffer1.mq5 | //|                        Copyright 2009, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Custom indicator initialization function                         |...
Grund der Beschwerde: