
14.04.23
|
Elite Mitglied
|
|
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
|
|
Fehlende Preisdaten
Die Aufgabe:
Es soll der Eröffnungspreis um 8:00 DElocal geholt und zur Weiterberechnung verwendet werden.
Der Code:
Code:
static double Open8, Close8, LastOpen8; // when found fixed value
static string DayOfiTDate, DayOfiYDate, // DateOfToday/YesterdayForIndexNo
Start8, Stop8;
static int DayOfiWkDay, clos8shift;
for(int i=limit; i>=0; i--)
{
DayOfiWkDay=TimeDayOfWeek(Time[i]); //CurrentWeekdayofIndexnummber
//Print(" DayOfiWkDay=",DayOfiWkDay);
if(DayOfiWkDay>=WEEKSTART && DayOfiWkDay<=WEEKSTOP) //Mo-Fr
{
// =================================================================== Calculation
DayOfiTDate=TimeToString(Time[i],TIME_DATE); //yyyy.mm.dd Today
DayOfiYDate=GetYesterdate(DayOfiTDate,DayOfiWkDay); //yyyy.mm.dd Yesday
clos8shift=iBarShift(NULL,PERIOD_D1,StringToTime(DayOfiYDate));
//Print(" DayOfiYDate=",DayOfiYDate," clos8shift=",(int)clos8shift);
Start8=DayOfiTDate+" "+H8START; //yyyy.mm.dd 08:00
Stop8 =DayOfiTDate+" "+H8STOP; //yyyy.mm.dd 22:00
// ======================== 8lines values
if( Time[i]==StringToTime(Start8) )
{
Open8=Open[i];
LastOpen8=iOpen(NULL,PERIOD_D1,clos8shift); //YesterdayOpen
Close8=iClose(NULL,PERIOD_D1,clos8shift); //YesterdayClose
// === DAS funktioniert nicht, weil es 8:00 nicht gibt
//if(Open[i] !=LastOpen8) Open8=Open[i];
//else Open8=0;
}
// ======================== Painting lines of Calculation start-stop
if( Time[i]>StringToTime(DayOfiTDate+" "+PAINTSTART)
&& Time[i]<StringToTime(DayOfiTDate+" "+PAINTSTOP ) )
{
// ======================== 08:00
if(SHOWH8LINES)
{
if(Time[i]>StringToTime(Start8) && Time[i]<StringToTime(Stop8))
{
LineOpen8[i]=Open8;
LineClose8[i]=Close8;
}
}//SHOWH8LINES
}//paint start-stop
}//Mo-Fr
}//(int i=limit; i>=0; i--)
Das Problem:
Um 8:00 gibt es plötzlich keinen Preis, sondern (in diesem Fall) erst um 8:05 (bisher einmaliges Vorkommen).
Als Folge davon wird der Vortages Open genommen.
Das macht natürlich die gesamte Weiterberechnung falsch. Wenn ich einfach den erste Open des Tages nehme, bekomme ich Schwierigkeiten bei einem Broker, der z.B. durchgehende Preise hat.
Ich kriege eine Korrektur des Codes einfach nicht gebacken, irgendwie drehe ich mich gedanklich im Kreis; mittlerweile artet das zum Drehwurm aus und ich brauche bitte einen Denkanstoß. 
Danke. AVT
|