Darstellung des Chart

 

Hallo,


nachdem ich gerade versuche, das was ich manuell trade, in einen EA zu gießen, nur mal um einen Backtest zu machen ist mir folgendes aufgefallen.

Wenn ich die gleichen Indikatoren, in diesen Fall, einfach LWMA 3 und 14 verwende, dann habe ich im Hauptfenster eine andere Darstellung als im Subfenster.


zur einfacheren Darstellung hab ich die visualisierung des Line Chart auf "none" gestellt.


jetzt meine Frage, liegt das daran, das das Subwindow keine logarithmische Darstellung hat? oder hat meine Installation einfach einen Fehler? wie man im Datenfenster erkennen kann, 

sind die Werte zu 100% gleich, auch wenn ich zurückgehe, die Werte ändern sich nicht und verlaufen gleich. Die Darstellung mit den MA Überschneidungen sind allerdings komplett verschieden.


amando

 
Gehe ich richtig in der Annahme, dass im unteren Chart zwei verschiedene Indikatoren laufen? Dann liegt das daran, dass der Maßstab des Unterfensters (Maximum und Minimum) vom ersten Indikator bestimmt wird und der zweite nicht an den angepasst wird. Das war schon beim MT4 der Fall, ich hatte das damals schon moniert, aber ...
 
Carl Schreiber:
Gehe ich richtig in der Annahme, dass im unteren Chart zwei verschiedene Indikatoren laufen? Dann liegt das daran, dass der Maßstab des Unterfensters (Maximum und Minimum) vom ersten Indikator bestimmt wird und der zweite nicht an den angepasst wird. Das war schon beim MT4 der Fall, ich hatte das damals schon moniert, aber ...

Im prinzip laufen im unterfenster 2 indikatoren.

lwma 3

Lwma14

gkeich wie im oberen

es ändert aber auch nicht viel, wen. Ich sage, der 2 indikator basiert auf dem ersten. Dann siehts immer noch unterschiedlich aus


aber so wie Du das sagst, es kann schin sein das dieser fehler seit uhrzeiten besteht. Mir ist er erst heute aufgefallen

 
Du kannst diese Problem ganz einfach vermeiden, wen  Du einen dritten MA erstellst der einfach die Differenz der beiden im Unterfenster darstellt - dann stimmen Chart und Unterfenster wieder 100% über ein (Hmm, naja irgendwie).
 
Carl Schreiber:
Du kannst diese Problem ganz einfach vermeiden, wen  Du einen dritten MA erstellst der einfach die Differenz der beiden im Unterfenster darstellt - dann stimmen Chart und Unterfenster wieder 100% über ein (Hmm, naja irgendwie).

Wie meinst du das?

 

Ganz einfache Version - nicht getestet!

//+------------------------------------------------------------------+
//|                                                    Diff2Indi.mq5 |
//|                                                            Calli |
//|                              https://www.mql5.com/de/users/gooly |
//+------------------------------------------------------------------+
#property copyright "Calli"
#property link      "https://www.mql5.com/de/users/gooly"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Diff
#property indicator_label1  "Diff LMA-SMA"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         DiffBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int Hdl_Indi1, Hdl_Indi2;
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,DiffBuffer,INDICATOR_DATA);
   Hdl_Indi1 = iMA(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);
   Hdl_Indi2 = iMA(_Symbol,_Period,10,0,MODE_LWMA,PRICE_CLOSE);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//---
   double ar1[],ar2[];
   int limit=rates_total-prev_calculated,
       count=(limit>1 ? rates_total : 1), 
       cop1=0, cop2=0;
   cop1 = CopyBuffer(Hdl_Indi1,0,0,count,ar1);    
   cop2 = CopyBuffer(Hdl_Indi2,0,0,count,ar2);    
   if(cop1!=count || cop2!=count) return 0;
   while (cop1-->0) DiffBuffer[cop1] = ar2[cop1] - ar1[cop1];
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Carl Schreiber:

Ganz einfache Version - nicht getestet!

Die Idee von dir ist gar nicht schlecht Carl, vor allem, da ist es gleich normiert und es pendelt immer um die 0

danke

 
amando:

Die Idee von dir ist gar nicht schlecht Carl, ...

Ich weiß!   ;)

Bitte, gerne.

Grund der Beschwerde: