Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
Coppock_v3
ÿþ//+------------------------------------------------------------------+

//|                                                      Coppock.mq4 |

//|                                    Copyright © 2025 Wolfforex.com|

//|                                        https://www.wolfforex.com |

//+------------------------------------------------------------------+



#property strict



/*

   Classical Coppock indicator. Should be applied on monthly timeframe.

   Periods shouldn't be changed. Change timeframe and parameters for

   experimental Coppock usage.  

*/



//---- indicator settings

#property  indicator_separate_window

#property  indicator_buffers 1

#property  indicator_color1  Red



//---- indicator parameters

extern int     ROC1Period = 14;

extern int     ROC2Period = 11;

extern int     MAPeriod   = 10;

extern string  strType    = "Moving Average Types:";

extern string  strm0      = "0 = SMA,  1 = EMA";

extern string  strm1      = "2 = SMMA, 3 = LWMA";

extern int     MAType     = 3;



//---- indicator buffers

double Coppock[];

double ROCSum[];



//---- variables

int    DrawBegin;

string strMAType;



//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int init()

{

//---- drawing settings

   IndicatorBuffers(2);

   SetIndexStyle(0, DRAW_HISTOGRAM);

   // The longest period

   DrawBegin = MathMax(ROC1Period, ROC2Period) + MAPeriod;

   SetIndexDrawBegin(0, DrawBegin);

   IndicatorDigits(Digits);



//---- indicator buffers mapping

   SetIndexBuffer(0, Coppock);

   SetIndexBuffer(1, ROCSum);



   SetIndexEmptyValue(0, 0.0);

   SetIndexEmptyValue(1, 0.0);



   switch(MAType)

   {

      case 1:

         strMAType = "EMA";

         break;

      case 2:

         strMAType="SMMA";

         break;

      case 3:

         strMAType="LWMA";

         break;

      default:

         strMAType="SMA";

         break;

   }

   IndicatorShortName("Coppock(" + ROC1Period + ", " + ROC2Period + ") " + strMAType+ "(" +MAPeriod + ")");



   SetIndexLabel(0, "Coppock");

   return(0);

}



//+------------------------------------------------------------------+

//| Coppock                                                          |

//+------------------------------------------------------------------+

int start()

{

   int limit, i;



   int counted_bars = IndicatorCounted();

//---- check for possible errors

   if(counted_bars < 0) return(-1);

//---- last counted bar will be recounted

   if(counted_bars > 0) counted_bars--;

   limit = Bars - counted_bars;

   if (limit - Bars < DrawBegin) limit = Bars - DrawBegin;



//---- ROC calculations

   for (i = 0; i < limit; i++)

      ROCSum[i] = (Close[i] - Close[i + ROC1Period]) / Close[i + ROC1Period] + (Close[i] - Close[i + ROC2Period]) / Close[i + ROC2Period];

   

   for (i = 0; i < limit; i++)

      Coppock[i] = iMAOnArray(ROCSum, 0, MAPeriod, 0, MAType, i);



   return(0);

}

//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---