B&WImp-T01





//+------------------------------------------------------------------+
//|                                                   B&WImp-T01.mq4 |
//|       30.08.2006  Translated on MT4 by Oleg Golozubov aka Maloma |
//+------------------------------------------------------------------+

#property copyright " Copyright © 2006, HomeSoft-Tartan Corp."
#property link      " spiky@transkeino.ru - http:\\www.fxexpert.ru"

#property indicator_separate_window
#property indicator_color1 Lime
#property indicator_buffers 1
#include <stdlib.mqh>

extern double mBar=300;
extern int per=96;
extern double tr=3;
extern double t3_period=8;
extern double b=0.7;

double Buffer[];

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID);
   SetIndexBuffer(0, Buffer);
   return(0);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double impr[300];
   double impb[300];
   double e1=0;
   double e2=0;
   double e3=0;
   double e4=0;
   double e5=0;
   double e6=0;
   double c1=0;
   double c2=0;
   double c3=0;
   double c4=0;
   double n=0;
   double w1=0;
   double w2=0;
   double b2=0;
   double b3=0;
   int shift=0;
   double imppr=0;
   double imppb=0;
   int i=0;
   double sipr=0;
   double sipb=0;
   double null=0;
   double sum=0;
   double t3=0;

   b2=b*b;
   b3=b2*b;
   c1=-b3;
   c2=(3*(b2+b3));
   c3=-3*(2*b2+b+b3);
   c4=(1+3*b+b3+3*b2);
   n=t3_period;

   if(n<1) n=1;
   n=1+0.5*(n-1);
   w1=2/(n+1);
   w2=1-w1;

   for(shift=Bars-1;shift>=0 ;shift--) Buffer[shift]=0;

   null=0.00001;

   for(shift=mBar;shift>=per;shift--)
     {
      imppr=0;
      imppb=0;
      for(i=shift;i>=shift-per;i--)
        {
         if(Close[i]>Open[i]) imppr=imppr+(Close[i]-Open[i]);
         if(Close[i]<Open[i]) imppb=imppb+(Close[i]-Open[i]);
        }
      imppr=MathRound(imppr/Point);
      imppb=MathRound(imppb/Point);
      if(imppr==0) imppr=0.0001;
      if(imppb==0) imppb=0.0001;
      impr[shift-per]=imppr;
      impb[shift-per]=imppb;
     }
   for(shift=mBar-per;shift>=0;shift--)
     {
      sipr=0;
      sipb=0;
      for(i=shift;i>=shift-tr ;i--)
        {
         sipr=sipr+impr[shift];
         sipb=sipb+impb[shift];
        }
      sipr=MathRound((sipr/tr));
      sipb=MathRound((sipb/tr));
      sum=sipr+sipb;

      e1=w1*sum+w2*e1;
      e2=w1*e1+w2*e2;
      e3=w1*e2+w2*e3;
      e4=w1*e3+w2*e4;
      e5=w1*e4+w2*e5;
      e6=w1*e5+w2*e6;

      t3=c1*e6+c2*e5+c3*e4+c4*e3;

      if(t3==0) t3=0.0001;

      if(t3!=0) Buffer[shift]=t3;
     }

   return(0);
  }
//+------------------------------------------------------------------+




Sample





Analysis



Market Information Used:

Series array that contains close prices for each bar
Series array that contains open prices of each bar


Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: