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) {
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
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
Fuer jede Art der Erleuchtung bin ich dankbar.
wingman
__EATest__DrawHighLow_090921.mq4