Calculating max drawdown in xx candles help - page 2

To add comments, please log in or register
Seng Joo Thio
425
Seng Joo Thio  
Peter Kaiza:

I've amended  (LPrice>LLPrice) , should  the (HPrice>HHPrice) sign  be amended?

No. When checking whether a value is greater than max, always use >. Conversely, when checking whether a value is smaller than min, always use <. And HHPrice is the max, LLPrice is the min. 
Peter Kaiza
844
Peter Kaiza  

Seng,

I'm sorry, The function is now returning 0.0 for downtrend throughout, what is wrong?


 if (Direction<0)
   {
      for (int i=NumBars; i>0; i--)
      {
         double HPrice = iHigh(NULL,0,i);
         double LPrice = iLow(NULL,0,i);
         
         if (LPrice<LLPrice && LLPrice!=0 && InRetracement)
         {
            InRetracement = false;
            LLPrice = 0;
            double CurrRetracement = iHigh(NULL,0,HighBars[ArrayIdx])-iLow(NULL,0,LowBars[ArrayIdx]);
            if (CurrRetracement>MaxRetracement || MaxRetracement==0)
               MaxRetracement = CurrRetracement;
            ArrayIdx++;
         }

         if (LPrice<LLPrice || LLPrice==0)
         {
            LLPrice = LPrice;
            LowBars[ArrayIdx] = i;
         }
         else
         if (HPrice>HHPrice || HHPrice==0)
         {
            HHPrice = HPrice;
            HighBars[ArrayIdx] = i;
            InRetracement = true;
         }
      }
      
      if (InRetracement)
      {
         double CurrRetracement = iHigh(NULL,0,HighBars[ArrayIdx])-iLow(NULL,0,LowBars[ArrayIdx]);
         if (CurrRetracement>MaxRetracement || MaxRetracement==0)
            MaxRetracement = CurrRetracement;
      }
   }
   
   return (MaxRetracement);
}
Seng Joo Thio
425
Seng Joo Thio  
Peter Kaiza:

Seng,

I'm sorry, The function is now returning 0.0 for downtrend throughout, what is wrong?

Here's the error:

         if (LPrice<LLPrice && LLPrice!=0 && InRetracement)
         {
            InRetracement = false;
            LLPrice = 0;
            double CurrRetracement = iHigh(NULL,0,HighBars[ArrayIdx])-iLow(NULL,0,LowBars[ArrayIdx]);
            if (CurrRetracement>MaxRetracement || MaxRetracement==0)
               MaxRetracement = CurrRetracement;
            ArrayIdx++;
         }

Should change to HHPrice = 0;

Peter Kaiza
844
Peter Kaiza  
Seng Joo Thio:

Here's the error:

Should change to HHPrice = 0;

There is still a problem with this function, returns o. Could it be this: if (Direction<0)?

Seng Joo Thio
425
Seng Joo Thio  
Peter Kaiza:

There is still a problem with this function, returns o. Could it be this: if (Direction<0)?

I don't know... I've tested already, should work. Anyway, I've attached my full code with both uptrend and downtrend - see if it differs from yours.

Peter Kaiza
844
Peter Kaiza  
Seng Joo Thio:

I don't know... I've tested already, should work. Anyway, I've attached my full code with both uptrend and downtrend - see if it differs from yours.

Seng, 

Thank you very much it works , l did scratch my head quite a lot on this problem...... One more final question:

If for example I want to to recall  the retracement for the past  15 candles, should i leave the -1 on the oninit( or onstart on your code)   like below and on my code just use 1? Do I need to use -1 on both?

  double Result = 0;
   
   Result = FindBiggestRetracement(15,-1);

and on my code....

double RETRACE = FindBiggestRetracement(15, 1);
Seng Joo Thio
425
Seng Joo Thio  
Peter Kaiza:

Seng, 

Thank you very much it works , l did scratch my head quite a lot on this problem...... One more final question:

If for example I want to to recall  the retracement for the past  15 candles, should i leave the -1 on the oninit( or onstart on your code)   like below and on my code just use 1? Do I need to use -1 on both?

The 1 or -1 here represents the trend direction. 
Or if you don't want to have to tell the function which direction the trend is heading, you can modify the function to determine based on a moving average, for example. 
Peter Kaiza
844
Peter Kaiza  
Seng Joo Thio:
The 1 or -1 here represents the trend direction. 
Or if you don't want to have to tell the function which direction the trend is heading, you can modify the function to determine based on a moving average, for example. 

Ok to determine the trend drawdown in 15 bars,  in uptrend  or  downtrend  i've used this code  further down within ontick:




double TRENDUP = FindBiggestRetracement(15, 1);// Trend up drawdown

double TRENDDOWN = FindBiggestRetracement(15, -1);//Trend down drawdown


Is this ok?

Seng Joo Thio
425
Seng Joo Thio  
Peter Kaiza:

Ok to determine the trend drawdown in 15 bars,  in uptrend  or  downtrend  i've used this code  further down within ontick:

Is this ok?

Yes.

12
To add comments, please log in or register