Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

EA. Wann ermittelt Metatrader das High und Low eines Bars???

Geschrieben

ich schreibe momentan (oder besser gesagt ich versuche es) einen ziemlich timing-kritischen EA, wie ich in einem anderen Posting schonmal geschrieben habe. (vielen Dank übrigens nochmal für die vielen Replies). Momentan scheitere ich aber an den absoluten Metatrader Basics, die ich mir nicht erklären kann. Oder ich habe das Prinzip einfach immer noch nicht verstanden:

 

Mein EA wird ja zu jedem Tick ausgeführt und ich warte innerhalb eines Bars auf das Low und auf das High. Allerdings bekomme ich das von Metatrader nie zum Bar 0 auch wenn es viele Ticks innerhalb des Bars 0 gibt. Sondern Metatrader scheint das Low und High immer erst für Tick 0 festzulegen wenn dieser auf Position 1 rutscht. Das heisst ich kann über die Standarfunktion für den Bar 0 nie das High und Low ermitteln??? Sehe ich das richtig?

 

ich habe mal das Problem isoliert und einen ganz zimplen EA geschrieben um das zu testen:

 

 

...

int start() {

int i;

 

if(Time[0] == prevtime) return(0);

prevtime = Time[0];

 

i=0;

LineToBar("High", High, Blue, i);

LineToBar("Low", Low, Red, i);

 

return(0);

}

 

 

 

//---------------------------------------

// LineToBar

//---------------------------------------

// CALL:

// LineToBar("High", High[1], 0, Blue);

// LineToBar("Low", Low[1], 0, Red);

 

void LineToBar(string sLabelName, double dPosY, color cColor, int i) {

string sLBL=exsLBL + sLabelName + " " + Bars;

 

datetime dtStartBar=(Time);

datetime dtEndBar=(Time[i+1]);

Comment("Start: " + dtStartBar + " End : " + dtEndBar);

 

ObjectCreate(sLBL,OBJ_TREND,0, dtStartBar, dPosY, dtEndBar, dPosY);

ObjectSet(sLBL, OBJPROP_WIDTH,1);

ObjectSet(sLBL, OBJPROP_RAY, false);

ObjectSet(sLBL, OBJPROP_COLOR, cColor);

 

}

...

 

 

Heraus kommt im Backtest das Bild (s. Anhang) - den Backtester habe ich natuerlich auf "Every Tick..." gestellt.

 

Natürlich kann man eine eigene Routine schreiben um das High/Low von Bar 0 dynamisch zur Laufzeit festzustellen. Aber irgendwie wundert mich, dass Metatrader das nicht automatisch macht. (Ausserdem weiss ich seitdem warum ein anderer meiner EAs so mies performt :door:

 

Fuer jede Art der Erleuchtung bin ich dankbar.

 

wingman

__EATest__DrawHighLow_090921.mq4

HighLowInMetatrader.jpg

Featured Replies

Geschrieben

Lass dir mal ausgeben was ObjectCreate zurückgibt, bzw. überleg kurz was passiert wenn du ein bereits bestehendes Objekt nochmals erzeugen willst.

 

Das High und Low des aktuellen Bars entsteht erst im Laufe des Bars, d.h. beim ersten Tick ist Open=High=Low=Close und mit der Zeit verändern sich dann High,Low und Close.

 

Ich versteh nicht ganz wie du innerhalb eines Bars auf das Low und High "warten" willst... Du weißt ja erst beim letzten Tick des Bars (also genaugenommen beim 1. Tick des nächsten) wo das endgültige High und Low des Bars war...

Geschrieben
  • Autor
Tick ist Open=High=Low=Close und mit der Zeit verändern sich dann High,Low und Close.

 

Ich versteh nicht ganz wie du innerhalb eines Bars auf das Low und High "warten" willst... Du weißt ja erst beim letzten Tick des Bars (also genaugenommen beim 1. Tick des nächsten) wo das endgültige High und Low des Bars war...

 

ja das ist klar. Beim ersten Tick des Bars ist Open=High=Low=Close. ich würde erwarten, dass das High und Low des Bars bei jedem Tick neu berechnet wird, d.h. das es sich ebenso wie der Bar ständig verändert solange dieser sich in Bewegung befindet.

 

Aber dem scheint nicht so zu sein und das ist für mich inkonsequent. Aber ich kann Deine Logik auch irgendwie nachvollziehen.

Geschrieben
ich würde erwarten, dass das High und Low des Bars bei jedem Tick neu berechnet wird

 

So ist es auch.

Du hast scheinbar den ersten Teil meines Postings überlesen:

 

Lass dir mal ausgeben was ObjectCreate zurückgibt, bzw. überleg kurz was passiert wenn du ein bereits bestehendes Objekt nochmals erzeugen willst.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.