Meine W52-Funktion gibt rätsel auf
Moin und Grüße @all,
ich schreibe gerade einen Indi der eine Liste mit Symbolen auslist und mir die 52 Wochen Hoch/Tief als Tooltip anzeigen soll. iHighest, iHigh etc. alles korrekt, habe ich händisch geprüft, aber wenn sie den %abstand berechnet kommt es zu unsinnigen Ergebnissen. Zusätzlich habe ich für den aktuellen Chart ein Label-objekt erstellt. Da werden die Ergebnisse korrekt angezeigt
Kling vllt etwas kompliziert ist es aber nicht. Ich hänge einen Screenshot an.
hier mal meine Funktion:
Code:
void w52Function()
{
Print("Symbol set-file: ",Set_File," Anzahl Symbols: ",ArraySize(Symbols)," ",nCurrency);
for(int i=0; i<nCurrency; i++)
{
Print("Start ",GetMicrosecondCount());
ResetLastError();
int w52iHighest = iHighest(Symbols[i], PERIOD_W1, MODE_HIGH, 52);
if(w52iHighest == -1)Print("w52 ERROR w52iHighest ",w52iHighest," ",GetLastError()," ",ErrorDescription(GetLastError()));//
ResetLastError();
int w52iLowest = iLowest( Symbols[i], PERIOD_W1, MODE_LOW, 52);
if(w52iLowest == -1)Print("w52 ERROR w52iLowest ",w52iLowest," ",GetLastError()," ",ErrorDescription(GetLastError()));//
ResetLastError();
double w52High = iHigh(Symbols[i], PERIOD_W1,w52iHighest);
if(w52High == 0)Print("w52 ERROR w52High ",w52High," ",GetLastError()," ",ErrorDescription(GetLastError()));//
ResetLastError();
double w52Low = iLow(Symbols[i], PERIOD_W1,w52iLowest);
if(w52Low == 0)Print("w52 ERROR w52Low ",w52Low," ",GetLastError()," ",ErrorDescription(GetLastError()));//
double w52Prozent = (w52High-w52Low)/100;
double w52HighProzent1 = NormalizeDouble(w52High-Close[0],2);
double w52HighProzent = NormalizeDouble(w52HighProzent1/w52Prozent,2);
if(w52HighProzent > 100 || w52HighProzent < 0)Print("w52 ERROR w52HighProzent ",w52HighProzent," ",GetLastError()," ",ErrorDescription(GetLastError()));
double w52LowProzent1 = NormalizeDouble(Close[0]-w52Low,2);
double w52LowProzent = NormalizeDouble(w52LowProzent1/w52Prozent,2);
if(w52LowProzent > 100 || w52LowProzent < 0)Print("w52 ERROR w52LowProzent ",w52LowProzent," ",GetLastError()," ",ErrorDescription(GetLastError()));
string getTooltip = ObjectGetString(0,Symbols[i],OBJPROP_TOOLTIP,0);
ObjectSetString(0,Symbols[i],OBJPROP_TOOLTIP,getTooltip+"\n"+MarketClose+"\n"+Symbols[i]+" w52 High: "+w52HighProzent+"\n"+Symbols[i]+" w52 Low: "+w52LowProzent);
if( Symbols[i]==_Symbol)
{
ObjectDelete(0,"w52High");
LabelCreate(0,"w52High",0,10,15,0,Symbols[i]+" W52 High: "+w52HighProzent+" %","Arial",10,clrGreen,0,0);
ObjectDelete(0,"w52Low");
LabelCreate(0,"w52Low",0,10,30,0,Symbols[i]+" W52 Low: "+w52LowProzent+" %","Arial",10,clrRed,0,0);
}
/* while(GetMicrosecondCount()<ul+1000 && !IsStopped())
{
Print(Symbols[i]," GetMicrosecondCount() ",GetMicrosecondCount()," ul+1000 ",ul+1000);
}*/
Print("end ",GetMicrosecondCount());
Print(Symbols[i],"w52Prozen: ",w52Prozent," W52 iHighest: ",w52iHighest," W52 High: ",w52High," W52 High % ",w52HighProzent);
Print(Symbols[i]," W52 iLowest: ",w52iLowest," W52 Low: ",w52Low," W52 Low % ",w52LowProzent);
}
}
Ich hoffe ich habe mich halbwegs klar ausgedrückt.
Im Screenshot unten kann man den Tooltip mit den W52 High/Low % sehen.
Hat jemand eine Idee warum die Berechnung für den aktuellen Chart korrekt ist, nicht aber bei den Tooltips
|