Zwischenbericht
Zitat:
Zitat von AVT
Die Idee: PERIOD_M1 benutzen und halt für jede Minute sehen, ob es ein neues High/Low gibt.
|
Mit der Hilfe von
traderdoc und
Leopold sieht der M1 Chart perfekt aus und es spielt keine Rolle, ob ich von 15:30-16:30 oder von 15:47- 16:03 gehen will
WENN Period()==1 ist; relevanter Code-Snip dazu:
Code:
int TotalSecs=(StringToTime(RStopHour)-StringToTime(RStartHour));
int NoOfBars=TotalSecs/60/Period(); // core M1 without /Period()
string RStartTime, RStopTime, PStartTime, PStopTime;
static double Max, Min;
int Hval_index, Lval_index;
int i=iBarShift(NULL,PERIOD_M1,StringToTime(RStopHour));
for(i=limit;i>=0;i--) // MUST count down to zero, 250,249 ... 2,1,0
{
// day, start, stop conditions
// == core M1 calc:
//Hval_index = iHighest(NULL,PERIOD_M1,MODE_HIGH,NoOfBars,i+1);
//Lval_index = iLowest(NULL,PERIOD_M1,MODE_LOW,NoOfBars,i+1);
Hval_index = iHighest(NULL,Period(),MODE_HIGH,NoOfBars,i+1);
Lval_index = iLowest(NULL,Period(),MODE_LOW,NoOfBars,i+1);
Max = High[Hval_index];
Min = Low[Lval_index];
}
Das einzige was mir fehlt, ist eine Möglichkeit, die finalen Max/Min Werte aus einer
M1 Berechnung für die Dauer des Tages festzuhalten. Wie Ihr seht habe ich im Code eine annähernde Weise für höhere Zeiteinheiten eingbaut, die weichen aber im Ergebnis teilweise gravierend ab.
Wenn ich NULL,PERIOD_M1 explizit benutze, dann heißt das für mich Berechnung für aktuellen Markt im M1 Chart und nicht in dem gerade geladenen Chart! Spaßeshalber habe ich mal versucht, im Dow-Chart als Symbol statt NULL den Dax einzutragen - und da ging dann alles durcheinander. Sieht danach aus, als wäre iHighest/Lowest hier nicht die erste Wahl.
Also, in diesem Zustand ist der Indikator noch unbrauchbar. AVT