CMO





//+------------------------------------------------------------------+
//|                                                          CMO.mq4 |
//|                                      Copyright © 2007, Alexandre |
//|                      http://www.kroufr.ru/content/view/1491/124/ |
//+------------------------------------------------------------------+
/* Ôîðìóëû èíäèêàòîðà äëÿ Ìåòàñòîêà                                  |
CMO_1                                                                |
Sum(If(C, >, Ref(C, -1), (C - Ref(C, -1)), 0), 14)                   |
CMO_2                                                                |
Sum(If(C, <, Ref(C, -1), (Ref(C, -1) - C)), 0), 14)                  |
CMO_Final                                                            |
100 *((Fml("CMO_1") - Fml("CMO_2")) / (Fml("CMO_1") + Fml("CMO_2"))) |
Êîìáèíèðîâàííàÿ ôîðìóëà:                                             |
Chande's Momentum Oscillator                                         |
100 *                                                                |
((Sum(If(C, >, Ref(C, -1), (C - Ref(C,-1)), 0), 14)) -               |
 (Sum(If(C, <, REF(C, -1), (REF(C,-1) - C), 0), 14))) /              |
((Sum(If(C, >, Ref(C, -1), (C - Ref(C, -1)), 0), 14) +               |
 (Sum(If(C, <, REF(C, -1), (REF(C, -1) - C), 0), 14))))              |
//+------------------------------------------------------------------+
Ìîìåíòóì-îñöèëëÿòîð ×àíäå ðàññ÷èòûâàåòñÿ ïóòåì äåëåíèÿ ðàçíèöû ìåæäó |  
äâèæåíèåì âîñõîäÿùåãî äíÿ è íèñõîäÿùåãî äíÿ íà ñóììó ìåæäó äâèæåíèåì |
âîñõîäÿùåãî äíÿ è íèñõîäÿùåãî äíÿ. Ïîëó÷åííûé ðåçóëüòàò óìíîæàåòñÿ íà|
100.  ðåçóëüòàòå ìû ïîëó÷àåì èíäèêàòîð, ÷üè çíà÷åíèÿ âàðüèðóþòñÿ îò |     
-100 äî 100.                                                         |
Íàïðèìåð, èñïîëüçóåì äíåâíûå äàííûå â êà÷åñòâå ïðèìåðà.              |
Åñëè ñåãîäíÿøíÿÿ öåíà çàêðûòèÿ âûøå â÷åðàøíåé öåíû çàêðûòèÿ,         |
òî ñåãîäíÿøíèé äåíü ñ÷èòàåòñÿ âîñõîäÿùèì äíåì, àêòèâíîñòüþ           |
âîñõîäÿùåãî äíÿ ñ÷èòàåì ðàçíèöó ìåæäó ñåãîäíÿøíåé öåíîé è â÷åðàøíåé  |
öåíîé, íèñõîäÿùàÿ àêòèâíîñòü ñ÷èòàåòñÿ ðàâíîé 0. Ïðîòèâîïîëîæíîå     |
âåðíî, åñëè ñåãîäíÿøíåå çàêðûòèå íèæå â÷åðàøíåãî çàêðûòèÿ.           |
    CMO = ((äâèæåíèå ââåðõ–äâèæåíèå âíèç)/(äâèæåíèå ââåðõ +          |
           äâèæåíèå âíèç)) * 100                                     |
Äàííàÿ ñèñòåìà ðàáîòàåò òîëüêî ñ äëèííûìè ïîçèöèÿìè.                 |
Ïðàâèëà:                                                             |
  1. Îòêðûâàåì äëèííóþ ïîçèöèþ íà îòêðûòèè ñëåäóþùåãî áàðà, ïîñëå    |
     òîãî, êàê ÑÌÎ14 ïåðåñåêàåò âíèç óðîâåíü -50;                    |
  2. Äëèííàÿ ïîçèöèÿ çàêðûâàåòñÿ, åñëè ÑÌÎ14 ïåðåñåêàåò ââåðõ        |
     óðîâåíü +50;                                                    |
  3. Äëèííàÿ ïîçèöèÿ çàêðûâàåòñÿ ïðè äîñòèæåíèè öåëè ïðèáûëè 0.2 %;  |
  4. Äëèííàÿ ïîçèöèÿ çàêðûâàåòñÿ, åñëè íà 20 áàðå ïîñëå îòêðûòèÿ     |
     ïîçèöèè öåíà íàõîäèòñÿ íèæå óðîâíÿ âõîäà.                       |
//+------------------------------------------------------------------+
*/ 
#property copyright "Copyright © 2007, Alexandre"
#property link      "http://www.kroufr.ru/content/view/1491/124/"
//----                                                            
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_minimum -100 
#property indicator_maximum  100
#property indicator_level1   50 
#property indicator_level2  -50 
//---- input parameters
extern bool LastBarOnly = true; 
extern int  CMO_Range   = 14; 
//---- buffers
double CMO_Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
 {
//---- indicators
  IndicatorShortName("Chande`s Momentum Oscillator (" + CMO_Range + ")"); 
  SetLevelStyle(STYLE_DASHDOT, 1, DodgerBlue); 
  SetIndexStyle(0, DRAW_LINE);
  SetIndexLabel(0, "CMO"); 
  SetIndexBuffer(0, CMO_Buffer); 
  SetIndexDrawBegin(0, CMO_Range); 
 //----
  return(0);
 }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
 {
 //----
  return(0);
 }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars = IndicatorCounted(); 
   int i, j, Limit, cnt_bars; 
   double dif_close, cmo_up, cmo_dw; 
   static bool run_once; 
// to prevent possible error 
   if(counted_bars < 0) 
     { 
       return(-1); 
     } 
   Limit = Bars - counted_bars;
// run once on start
   if(run_once == false) 
       cnt_bars = Limit - CMO_Range; 
   else
      if(LastBarOnly == false) 
          cnt_bars = Limit; 
      else
          cnt_bars = 0; 
//----
   for(i = cnt_bars; i >= 0; i--) 
     { 
       cmo_up = 0.0; 
       cmo_dw = 0.0; 
       //----
       for(j = i + CMO_Range - 1; j >= i; j--) 
         { 
           dif_close = Close[j] - Close[j+1]; 
           if(dif_close > 0) 
               cmo_up += dif_close; 
           else 
               if(dif_close < 0) 
                   cmo_dw -= dif_close; 
         } 
       CMO_Buffer[i] = 100 * (cmo_up - cmo_dw) / (cmo_up + cmo_dw); 
     } 
//----
   if(run_once == false) 
       run_once = true; 
//----
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains close prices for each bar


Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: