Indicators: CoeffofLine

 

CoeffofLine:

CoeffofLine Indicator.

Author: Collector

 
CoeffofLine_true :
//+------------------------------------------------------------------+
//| CoeffofLine_true.mq4 
//| Ramdass - Conversion only
//+------------------------------------------------------------------+
 
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_width1 2
#property indicator_width2 2
 
 
extern int ndot = 5;
extern int CountBars=300;
//---- buffers
double Up[];
double Dw[];
 
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator line
   IndicatorBuffers(3);
   SetIndexBuffer(0,Up);
   SetIndexBuffer(1,Dw);   
   SetIndexStyle(0,DRAW_HISTOGRAM,0,2); 
   SetIndexStyle(1,DRAW_HISTOGRAM,0,2);
//----
   IndicatorShortName("CoeffofLine_true(" + ndot + ")");   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| CoeffofLine_true                                                 |
//+------------------------------------------------------------------+
int start()
  {
  
 
  
   if (CountBars>=Bars) CountBars=Bars;
   SetIndexDrawBegin(0,Bars-CountBars+ndot+1);
   SetIndexDrawBegin(1,Bars-CountBars+ndot+1);
   int i,shift,cnt;//counted_bars=IndicatorCounted();
   double TYVar,ZYVar,TIndicatorVar,ZIndicatorVar,M,N,AY,AIndicator,cfl,cfl1;
//----
   if(Bars<=ndot) return(0);
 
//----
   shift=CountBars-ndot-1;
 
 
   while(shift>=0)
     {
   cfl1=cfl;  
   TYVar=0;
    ZYVar=0;
    N=0;
    M=0;
    TIndicatorVar=0;
    ZIndicatorVar=0;
 
    for (cnt=ndot; cnt>=1; cnt--) // n=5 -  по пяти точкам
    {
       ZYVar=ZYVar+(High[shift+cnt-1]+Low[shift+cnt-1])/2*(ndot-cnt+1);
        TYVar=TYVar+(High[shift+cnt-1]+Low[shift+cnt-1])/2;
        N=N+cnt*cnt; //равно 55
        M=M+cnt; //равно 15
        ZIndicatorVar=ZIndicatorVar+iMA(NULL,0,ndot,3,MODE_SMMA,PRICE_MEDIAN,shift+cnt-1)*(ndot-cnt+1);
        TIndicatorVar=TIndicatorVar+iMA(NULL,0,ndot,3,MODE_SMMA,PRICE_MEDIAN,shift+cnt-1);
    }
    AY=(TYVar+(N-2*ZYVar)*ndot/M)/M;
    AIndicator=(TIndicatorVar+(N-2*ZIndicatorVar)*ndot/M)/M;
    if (Symbol()=="EURUSD" || Symbol()=="GBPUSD" || Symbol()=="USDCAD" || Symbol()=="USDCHF" 
     || Symbol()=="EURGBP" || Symbol()=="EURCHF" || Symbol()=="AUDUSD" || Symbol()=="EURAUD"
     || Symbol()=="GBPCHF" || Symbol()=="NZDUSD")
    {cfl=(-1000)*MathLog(AY/AIndicator);}
    else {cfl=(1000)*MathLog(AY/AIndicator);}
    if (cfl>cfl1) {Up[shift]=cfl; Dw[shift]=0.0;}
    else {Dw[shift]=cfl; Up[shift]=0.0;}
 
 
      shift--;
     }
   return(0);
  }
//+------------------------------------------------------------------+