Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 13.07.17
next user next user ist offline
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von skynat Beitrag anzeigen
Man rechnet also die 4 positiven Tage zusammen und teilt die dann auch nur durch 4
...
Code:
  int divider=0,difference;
1. Die Differenz zweier Gleitpunktzahlen würde ich nicht in einer Variablen vom Typ Ganzzahl speichern.
2. Um die 4 positiven Tage zu addieren und durch 4 zu Teilen, musst du die 4 Tage auch speichern.
Code:
int LookBack = iBarShift(Symbol(),0,iTime(Symbol(),PERIOD_D1,DaysToLookBack),false);
Macht nicht gerade das, was du denkst. Hier fragst du nach dem Index der Kerze, welche die Zeit von der Kerze "DaysToLookBack" hat.
Außerdem würde ich den letzten Parameter mit "true" angeben.
TRUE: Wenn Kerze mit der abgefragten Zeit nicht gefunden, so gib -1 zurück.
FALSE: Wenn Kerze mit der abgefragten Zeit nicht gefunden, so nehme die naheliegenste.
Code:
int limit =  MathMin(Bars,LookBack+1);
Hier nimmst du die Kerze von LookBack (DaysToLookBack) und vergleichst sie mit der totalen Anzahl an Kerzen. Was davon wird wohl der kleinere Wert sein?
Code:
for (int cnt=DaysToLookBack-1; cnt>=1;cnt--)
Beispiel DaysToLookBack = 5 würde wie folgt aussehen:
Code:
for(int cnt=5-1; cnt>=1; cnt--)
1. Du könntest auch das "-1" weglassen und dafür "cnt>1" schreiben.
2. Du willst doch den einen Tag mit den jeweils vorherigen vergleichen? Da muss die Schleife umgekehrt sein. So fängst du mit dem "ältesten" Tag an.
Code:
if((iHigh(Symbol(),PERIOD_D1,cnt))-iHigh(Symbol(),PERIOD_D1,cnt-1)>0)
Hier fragst du ab, ob vorgestern - gestern größer als 0 ist. Du wolltest es doch aber andersrum?

Nimm mal den Code:
Code:
void calculateHighExtension()
{
   int i, pos_count=0;
   double difference, tmp=0;
   string sym = Symbol();
   int period = Period();
   
   //Beispiel DaysToLookBack = 5;
   
   for(int i=1; i<=DaysToLookBack; i++)
   {
      if(iHigh(sym,period,i) > iHigh(sym,period,i+1))
      {
         tmp += iHigh(sym,period,i) - iHigh(sym,period,i+1);
         pos_count++;
      }
   }
   
   //Durchschnitt
   difference = tmp / pos_count;
}

Geändert von next user (13.07.17 um 18:50 Uhr)