Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 20.04.19
stoffel stoffel ist offline
Neues Mitglied
 
Registriert seit: Apr 2019
Beiträge: 20
stoffel befindet sich auf einem aufstrebenden Ast
Unhappy 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
Angehängte Grafiken
Dateityp: jpg w52.jpg (180,9 KB, 6x aufgerufen)