Solar_Wind_clean_X_mtf





//+------------------------------------------------------------------+
//| SolarWindClean X mtf (based on Solar wind clean (FisherTransform)|
//| revised by Mladen    Copyright © 2005, MetaQuotes Software Corp. |
//| ForexTSD mladen nittany  mod fxbs  ki http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2005,  MetaQuotes Software Corp."
#property  link      "http://www.metaquotes.net/ www.ForexTSD.com"

//---- indicator settings

#property  copyright ""
#property  link      ""

#property  indicator_separate_window
#property  indicator_buffers 2
#property  indicator_color1  Lime
#property  indicator_color2  Red
 
extern int period    = 10;
extern int smoozing  = 2;
extern int TimeFrame = 0;
extern string  note_TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF";
extern string  IndicatorCorrectName = "Solar_Wind_clean_X_mtf";
extern string  note___Ind_Name = "if indicator Name changed - enter New Name";

double         ExtBuffer0[];
double         ExtBuffer1[];
double         ExtBuffer2[];
double         Value[];
double         ExtBuffer3[];


int init()
{
   IndicatorBuffers(5);
   SetIndexBuffer(0,ExtBuffer1);
   SetIndexBuffer(1,ExtBuffer2);
   SetIndexBuffer(2,ExtBuffer0);
   SetIndexBuffer(3,Value);
   SetIndexBuffer(4,ExtBuffer3);

   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexStyle(1,DRAW_HISTOGRAM);

   
//---  mod to show currency pair and Period by nittany1 forex-tsd
//     IndicatorShortName("SOLAR WIND Clean("+Symbol()+","+period+")");
 
   IndicatorShortName("SOLARWIND CleanX ("+period+")("+smoozing+") [TF "+TimeFrame+"]");
   IndicatorDigits(Digits+1);

    if (TimeFrame < Period()) TimeFrame = Period();


   return(0);
}


int start()
{
  //
   int counted_bars1=IndicatorCounted();
   int      limit1,i1;
   if(counted_bars1 < 0) return(-1);
   limit1 = Bars-counted_bars1;
   if (TimeFrame != Period())
      {
         limit1 = MathMax(limit1,TimeFrame/Period());
         datetime TimeArray[];
        ArrayCopySeries(TimeArray ,MODE_TIME ,NULL,TimeFrame);
            for(i1=0,int y=0; i1<limit1; i1++)
           {
              if(Time[i1]<TimeArray[y]) y++;
              ExtBuffer1   [i1]   = iCustom(NULL,TimeFrame,IndicatorCorrectName,period,0,y);
              ExtBuffer2   [i1]   = iCustom(NULL,TimeFrame,IndicatorCorrectName,period,1,y);

            }
         return(0);         
      }

   int   limit;
   int   counted_bars=IndicatorCounted();

   if(counted_bars>0) counted_bars--;
           limit=Bars-counted_bars;

   for(int i=limit; i>=0; i--)
   {  
      double MaxH  = High[iHighest(NULL,0,MODE_HIGH,period,i)];
      double MinL  = Low [iLowest( NULL,0,MODE_LOW, period,i)];
      double price = (High[i]+Low[i])/2;
      if (MaxH!=MinL)
 //           Value[i] = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value[i+1];
              Value[i] = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5);

 
      else  Value[i] = 0.00;
            Value[i] = MathMin(MathMax(Value[i],-0.999),0.999); 
//          ExtBuffer0[i]=0.5*MathLog((1+Value[i])/(1-Value[i]))+0.5*ExtBuffer0[i+1];
            ExtBuffer0[i]=0.5*MathLog((1+Value[i])/(1-Value[i]));

     }     

         for( i=limit; i>=0; i--)
     {
    
            ExtBuffer3[i]=iMAOnArray(ExtBuffer0,0,smoozing,0,MODE_EMA,i);


      //
      //
      //
      //
      //
      
      if(ExtBuffer3[i]<0)
      {
         ExtBuffer2[i]=ExtBuffer3[i];
         ExtBuffer1[i]=0.0;
      }
      else
      {
         ExtBuffer1[i]=ExtBuffer3[i];
         ExtBuffer2[i]=0.0;
      }
   }
   return(0);
}



Sample





Analysis



Market Information Used:

Series array that contains open time of each bar
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar


Indicator Curves created:


Implements a curve of type DRAW_HISTOGRAM

Indicators Used:


Moving average indicator


Custom Indicators Used:
IndicatorCorrectName

Order Management characteristics:

Other Features: