Jump to content
Tom Next - Daytrading Community

Balken Histogramm wird falsch angezeigt


Vola

Recommended Posts

Habe ein immer wieder auftauchendes Problem mit einem Indikator.

Die Balkenanzeige wird im aktuellem Chart oftmals sehr klein, wechsele ich in einen anderen TF, stimmt sie oftmals (nicht immer)

aber der ursprünglich zu klein angezeigte TF bleibt eigentlich immer wie er ist, irgendwann wenn der Markt größere Bewegungen macht, passt sich die Skalierung dann aber an.

 

Siehe Bild 1, das ist der aktuelle Bereich des Charts, Bild 2 ist der gleiche Chart, nur ein bißchen zurückgescrollt. So wie Bild 2 sollte der Chart immer aussehen...

 

Kann man da im Code irgendetwas anpassen, oder ist das ein nicht zu ändernder Zustand ?

Oder müsste ich dann wirklich in einen fest Skalierten Bereich wechseln ?

 

gf.png gf1.png

Link to comment
Share on other sites

Es geht übrigens bei der Frage um Leben und Tot.

Mit der richtigen Anzeige des Indis können Weltkriege gewonnen werden, schwarze Löcher werden geschlossen, der Hunger weltweit beendet

und es gibt auch nie mehr Naturkatastrophen....

Ach ja, und jeder der will wird 150 Jahre....

 

Vllt fällt ja doch noch jemanden etwas dazu ein

Link to comment
Share on other sites

Ich versteh die Frage nit ganz. Es geht um das unterste Fenster oder? Dort wo 1 großer Balken ist und der Rest sehr klein?

Kann es sein das der Indi bei diesem Bar einen deutlich größeren Wert hat als bei allen anderen? schonmal im Datafenster überprüft?

Ich tippe mal auf "Not a bug, its a feature"

 

Hängt es möglicherweise mit dem Close-Open Gap im Kurs zusammen?

  • Upvote 1
Link to comment
Share on other sites

Hi, doch noch jemand zuhause :doubleup:

 

Ich versteh die Frage nit ganz. Es geht um das unterste Fenster oder? Dort wo 1 großer Balken ist und der Rest sehr klein?

Ja, genau

 

Kann es sein das der Indi bei diesem Bar einen deutlich größeren Wert hat als bei allen anderen? schonmal im Datafenster überprüft?

Ja, auch richtig, hat aber trotzdem mit der "Chartposition" im Fenster zu tun (Siehe Bild)

 

Ich tippe mal auf "Not a bug, its a feature"

Du willst also die schwarzen Löcher im All nicht schließen ? :vola2:

 

Hängt es möglicherweise mit dem Close-Open Gap im Kurs zusammen?

Nein, siehe Bild.

Der Indikator bezieht sich nur auf das Volumen, er interpretiert dieses nochmal.

Ist der MFI von Billy Williams

 

Bild 1 -> Chartanzeige, siehe senkrechter Strich

mm.png

 

Bild 2 -> Chart ein kleines Stück nach vorne(Rechts) verschoben,

senkrechter Strich an gleicher Stelle :vola2:

mm1.png

Link to comment
Share on other sites

sowas ähnliches hab ich auch manchmal - wenn es arge Ausschläge gibt im Indikator werden die darauffolgenden Balken/Linien verzerrt in der Höhe dargestellt. Dadurch das der Ausschlag die max. Bandbreite für den Moment bestimmt, sind die nächsten Balken sehr gedungen also flach. Mit der Zeit gibt sich das Problem dann aber von selbst, da der Ausschlag nach links wandert. Umso weiter links umso höher werden die nächsten Balken gezoomt.

 

Passiert aber nur bei extrem Chartbewegungen.

Link to comment
Share on other sites

Also ich denke es handelt sich dabei einfach um das Problem, das es einen Wert also einen Balken gibt der einen besonders großen Wert hat. Dadurch werden die anderen Balken kleiner gemacht damit die Skalierung noch stimmt. In deinem Bild kann ich aber den Balken nicht sehen. Kannst du vielleicht mal die gesamte Breite als Screenshot reinstellen? Dann könnte man das nachvollziehen.

 

In Post #1 sieht man das nämlich deutlich auf dem 1. Bild. Dort ist es der blaue Balken der dort alles kaputt macht.

 

Viele Grüße,

Rumpel

Link to comment
Share on other sites

sowas ähnliches hab ich auch manchmal - wenn es arge Ausschläge gibt im Indikator werden die darauffolgenden Balken/Linien verzerrt in der Höhe dargestellt.

Passiert aber nur bei extrem Chartbewegungen.

Bei diesem Indi passiert es leider ständig.

Was die extremen Bewegungen angeht ist es leider so, dass je nach TF diese Verzerrung andauernd eintritt und ein M15 dann schon mal 2 bis 3 Tage festgenagelt ist.

(Bis der extrem Balken rechts verschwunden ist)

In den höheren TFs ist aber alles in Ordnung, scheinbar weil das Volumen in der Relation da eben passt, in den Kleineren TFs bringen aber die News alles aus dem Ruder.

 

 

Also ich denke es handelt sich dabei einfach um das Problem, das es einen Wert also einen Balken gibt der einen besonders großen Wert hat.

Ja, du hast recht, wenn ich den Chart Bar by Bar weiterklicke, ist es Tatsache so, das die Anzeige in dem Moment umspingt, wenn der Große Bar aus dem Sichtfeld rechts verschwindet.

Kann man da nichts gegen machen (Ausser den Programmierer das Auto anzuzünden, Haus torpedieren etc. ?

Link to comment
Share on other sites

Zeig doch mal die gesamte Achse wenn das auftritt. siehst du den einen großen Balken der dafür sorgt das die anderen so klein sind? (bin mir zu 99% sicher das da einer is)

Falls nit: Schau mal im Fall das das Histrogramm so klein is, im Datenfenster jeden einzelnen Bar an und beobachte den Wert des Indis der das Histogramm malt.

 

@schwarze Löcher: nur wenn du garantierst das ich 150 Jahre alt werde ;)

 

Kann man da nichts gegen machen (Ausser den Programmierer das Auto anzuzünden, Haus torpedieren etc. ?

 

Ich vermute mal es ist "Absicht" das dieser eine Balken so groß ist. Und wie soll MT dann die anderen darstellen außer viel kleiner?

Wenn es nicht Absicht ist, dann is es ein Bug im Indi und du kannst den Programmierer torpedieren

Link to comment
Share on other sites

Zeig doch mal die gesamte Achse wenn das auftritt. siehst du den einen großen Balken der dafür sorgt das die anderen so klein sind? (bin mir zu 99% sicher das da einer is)

Ja, großer Balken ist da, siehe Bilder, 2tes Bild ist der Balken rechts im Chart verschwunden.

nn.png nn2.png

 

@schwarze Löcher: nur wenn du garantierst das ich 150 Jahre alt werde ;)

Mein Medium hat mir grade geschrieben, du rauchst nicht, trinkst nicht, hast keinen Sex, noch nicht mal Schokoholiker bist du !

Warum also überhaupt 50 werden, Ressourcen müssen da für andere gespart werden, die wirklich leben :laugh: :whiteflag:

 

 

Und wie soll MT dann die anderen darstellen außer viel kleiner?

Mir egal :laugh:

Egal wie, aber anders....

 

Wenn es nicht Absicht ist, dann is es ein Bug im Indi und du kannst den Programmierer torpedieren

Ich poste mal den Code, vllt kann ja mal jemand drüber gucken :door:

Link to comment
Share on other sites

Mein Medium hat mir grade geschrieben, du rauchst nicht, trinkst nicht, hast keinen Sex, noch nicht mal Schokoholiker bist du !

Warum also überhaupt 50 werden, Ressourcen müssen da für andere gespart werden, die wirklich leben :laugh: :whiteflag:

Wenn du wüsstest... also dein Medium würd ich direkt nach dem Programmierer in Frühpension schicken ;)

 

 

Ich poste mal den Code, vllt kann ja mal jemand drüber gucken :door:

 

Wenn er frei ist, jederzeit ;)

Link to comment
Share on other sites

Wenn du wüsstest... also dein Medium würd ich direkt nach dem Programmierer in Frühpension schicken ;)

Okay, lest morgen einfach Nachrichten ^^

 

Anbei der Code :door:

 

Und der Indi:

BW Market Facilitation Index.mq4

 

 

 

//+------------------------------------------------------------------+
//|                                 BW Market Facilitation Index.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
//---- indicator settings
#property  indicator_separate_window
#property indicator_minimum 0
#property indicator_buffers 5
#property indicator_color1  Black
#property indicator_color2  Lime
#property indicator_color3  SaddleBrown
#property indicator_color4  Blue
#property indicator_color5  Pink
#property indicator_width2  2
#property indicator_width3  2
#property indicator_width4  2
#property indicator_width5  2
//---- indicator buffers
double ExtMFIBuffer[];
double ExtMFIDownVDownBuffer[];
double ExtMFIUpVDownBuffer[];
double ExtMFIDownVUpBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
 {
//---- indicator buffers mapping
  SetIndexBuffer(0,ExtMFIBuffer);       
  SetIndexBuffer(1,ExtMFIUpVUpBuffer);
  SetIndexBuffer(2,ExtMFIDownVDownBuffer);
  SetIndexBuffer(3,ExtMFIUpVDownBuffer);
  SetIndexBuffer(4,ExtMFIDownVUpBuffer);
//---- drawing settings
  SetIndexStyle(0,DRAW_NONE);
  SetIndexStyle(1,DRAW_HISTOGRAM);
  SetIndexStyle(2,DRAW_HISTOGRAM);
  SetIndexStyle(3,DRAW_HISTOGRAM);
  SetIndexStyle(4,DRAW_HISTOGRAM);   
//---- name for DataWindow and indicator subwindow label
  IndicatorShortName("BW MFI");
  SetIndexLabel(0,"BW MFI");      
  SetIndexLabel(1,NULL);
  SetIndexLabel(2,NULL);
  SetIndexLabel(3,NULL);
  SetIndexLabel(4,NULL);
//---- sets drawing line empty value
  SetIndexEmptyValue(0, 0.0);
  SetIndexEmptyValue(1, 0.0);
  SetIndexEmptyValue(2, 0.0);       
  SetIndexEmptyValue(3, 0.0);
  SetIndexEmptyValue(4, 0.0);      
//---- initialization done
  return(0);
 }
//+------------------------------------------------------------------+
//| BW Market Facilitation Index                                     |
//+------------------------------------------------------------------+
int start()
 {
  int  i,nLimit,nCountedBars;
  bool bMfiUp=true,bVolUp=true;
//---- bars count that does not changed after last indicator launch.
  nCountedBars=IndicatorCounted();
//---- last counted bar will be recounted
  if(nCountedBars>0) nCountedBars--;
  nLimit=Bars-nCountedBars;
//---- Market Facilitation Index calculation
  for(i=0; i<nLimit; i++)
    {
     if(CompareDouble(Volume[i],0.0))
       {
        Print(Volume[i]);
        if(i==Bars-1) ExtMFIBuffer[i]=0.0;
        else ExtMFIBuffer[i]=ExtMFIBuffer[i+1];
       }
     else ExtMFIBuffer[i]=(High[i]-Low[i])/(Volume[i]*Point);
    }
//---- upanddown flags setting
  if(nCountedBars>1)
    {
     //---- analyze previous bar before recounted bar
     i=nLimit+1;
     if(ExtMFIUpVUpBuffer[i]!=0.0)
       {
        bMfiUp=true;
        bVolUp=true;
       }
     if(ExtMFIDownVDownBuffer[i]!=0.0)
       {
        bMfiUp=false;
        bVolUp=false;
       }
     if(ExtMFIUpVDownBuffer[i]!=0.0)
       {
        bMfiUp=true;
        bVolUp=false;
       }
     if(ExtMFIDownVUpBuffer[i]!=0.0)
       {
        bMfiUp=false;
        bVolUp=true;
       }
    }
//---- dispatch values between 4 buffers
  for(i=nLimit-1; i>=0; i--)
    {
     if(i<Bars-1)
       {
        if(ExtMFIBuffer[i]>ExtMFIBuffer[i+1]) bMfiUp=true;
        if(ExtMFIBuffer[i]<ExtMFIBuffer[i+1]) bMfiUp=false;
        if(Volume[i]>Volume[i+1])             bVolUp=true;
        if(Volume[i]<Volume[i+1])             bVolUp=false;
       }
    if(bMfiUp && bVolUp)
      {
       ExtMFIUpVUpBuffer[i]=ExtMFIBuffer[i];
       ExtMFIDownVDownBuffer[i]=0.0;
       ExtMFIUpVDownBuffer[i]=0.0;
       ExtMFIDownVUpBuffer[i]=0.0;
       continue;
      }
    if(!bMfiUp && !bVolUp)
      {
       ExtMFIUpVUpBuffer[i]=0.0;
       ExtMFIDownVDownBuffer[i]=ExtMFIBuffer[i];
       ExtMFIUpVDownBuffer[i]=0.0;
       ExtMFIDownVUpBuffer[i]=0.0;
       continue;         
      }
    if(bMfiUp && !bVolUp)
      {
       ExtMFIUpVUpBuffer[i]=0.0;
       ExtMFIDownVDownBuffer[i]=0.0;
       ExtMFIUpVDownBuffer[i]=ExtMFIBuffer[i];
       ExtMFIDownVUpBuffer[i]=0.0;
       continue;         
      }
    if(!bMfiUp && bVolUp)
      {
       ExtMFIUpVUpBuffer[i]=0.0;
       ExtMFIDownVDownBuffer[i]=0.0;
       ExtMFIUpVDownBuffer[i]=0.0;
       ExtMFIDownVUpBuffer[i]=ExtMFIBuffer[i];
       continue;         
      }        
   }                     
//---- done
  return(0);
 }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CompareDouble(double dNumber1, double dNumber2)
 {
  bool bCompare=NormalizeDouble(dNumber1-dNumber2,8) == 0;
  return(bCompare);
 }
//+------------------------------------------------------------------+

Link to comment
Share on other sites

Das Problem ist da:

ExtMFIBuffer[i]=(High[i]-Low[i])/(Volume[i]*Point);

 

Ich sag mal so: Wenn mit einem Volume von 4, 13 Pips gemacht werden macht ein "Holy Shit" im Indi schon Sinn...

Ich würd mal sagen das Problem liegt wohl eher im Datenfeed als im Indi.

 

Du kannst maximal hergehen und die "fehlerhaften" Datenfeeds irgendwie zu "filtern" oder so, nur die Frage wie das dann Sinn macht.

  • Upvote 1
Link to comment
Share on other sites

Das Problem ist da:

 

Ich sag mal so: Wenn mit einem Volume von 4, 13 Pips gemacht werden macht ein "Holy Shit" im Indi schon Sinn...

Du kannst maximal hergehen und die "fehlerhaften" Datenfeeds irgendwie zu "filtern" oder so, nur die Frage wie das dann Sinn macht.

 

Aha, dank dir :flowers:

Nein filtern macht dann keinen rechten Sinn, da es ja im Indi darum geht, das Volumen nochmals separat zu interpretieren.

 

btw.

Über Sinn oder Unsinn des "Volumens" in FX mag ich da nicht diskutieren, geht mir nur um die Anzeige.

Link to comment
Share on other sites

Das Problem liegt, wei Mythos schon sagte in dieser Formel

21.png

wenn der Volume viel zu klein ist, hast du dann extreme Indikatorausschläge auf dem Chart

 

Auf meinem Chart waren die Indikatorauschläge hauptsächlich um 23:00 und 23:02 zu sehen,

eigentich reicht es auch die Indikatorwerte mit kleinerem Volumen zu filtern.

Ich habe also in den Indikator alle 3 Filter eingebaut:

- Datenfilter am Sonntag

- Datenfilter um 23:00 und 23:01

- Datenfilter bei kleinem Volumen

 

vola.png

 

hier ist der modifizierter Quellcode

bw von vola.mq4

 

und das Chartbild zum Vergleich

gefiltert.png

  • Upvote 2
Link to comment
Share on other sites

 

eigentich reicht es auch die Indikatorwerte mit kleinerem Volumen zu filtern.

Ich habe also in den Indikator alle 3 Filter eingebaut:

- Datenfilter am Sonntag

- Datenfilter um 23:00 und 23:01

- Datenfilter bei kleinem Volumen

 

:10points:

Hehe, na du bist mir ja ein Schatz !! :door: Machst ja super sachen, derweile andere schlafen.

Danke schön. Das teste ich gleich ausführlich und gebe dann Feedback.

 

in deinem eingefügten Code fehlte ein Indikatorbuffer, deswegen liess sich der Code nicht kompilieren

 

in der Datei war es wieder drin :fun:

Der Code war auf die schnelle aus dem Netz kopiert, der Indi war von meinem Rechner

Link to comment
Share on other sites

@titanfx

Irgendetwas ist aber anders. Der Indikator zeigt jetzt andere Werte.

Im Bild unten ist der deinige, darüber das Original. Könntest du noch mal gucken ? :flowers:

Am gravierendsten sind die Unterschiede im M5, wobei deine Modifikation im M1 überhaupt gar nichts anzeigt.

Fenster bleibt leer.

 

ti.png

Link to comment
Share on other sites

anzeigt.

Fenster bleibt leer.

@ Vola

das ist ja die Sache wenn man viel herausfiltert, hat man nichts mehr :yess:

ich weiss nicht was du genau sehen oder filtern möchtest,

auf jedem Fall auf 1M Chart wird Volumen unter 300 ausgefiltert, bzw geglättet

dann kannst du diesen Wert entweder verkleinern oder abhängig von dem Timeframe automatisch einstellbar machen

so zum Beispiel

v1.png

Link to comment
Share on other sites

dann kannst du diesen Wert entweder verkleinern oder abhängig von dem Timeframe automatisch einstellbar machen

so zum Beispiel

v1.png

Ach soooo, ja verstehe, das lasse ich mir mal durch den Kopf gehen.

Im M1 werde ich da wohl eine Anpassung übernehmen, grade dort ist mir die Extra Interpretation wichtig.

 

Alternativ kann ich ja für M1 auch den Original Indi einblenden, in diesem TF spinnt er recht selten.

Danke nochmals !

Link to comment
Share on other sites

Alternativ könnte man auch statt zu filtern und den Wert vom Vorbar zu nehmen, einfach den maximalWert des Indis begrenzen.

Dadurch sieht man trotzdem wenn er extrem ausschlägt, aber es is nit so heftig.

In der aktuellen Form würdest du einen starken Ausschlag völlig übersehen, weil der (womöglich) kleine Wert vom Vorbar einfach übernommen wird.

Link to comment
Share on other sites

Alternativ könnte man auch statt zu filtern und den Wert vom Vorbar zu nehmen, einfach den maximalWert des Indis begrenzen.

Dank dir für den Vorschlag, ich gucke mir das erst mal paar Tage an und entscheide dann erneut.

Momentan bin ich mit der Lösung recht zufrieden.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...