Stochastic classical

Stochastic classical
1 Views
0 Downloads
0 Favorites
Stochastic classical
//+------------------------------------------------------------------+
//|                                         Stochastic classical.mq4 |
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_buffers    2
#property indicator_color1     Green
#property indicator_width1     2
#property indicator_color2     DarkOrange
#property indicator_style2     STYLE_DOT
//#property indicator_minimum    0
//#property indicator_maximum    100
//#property indicator_level1     80
//#property indicator_level2     20
#property indicator_levelcolor DarkSlateGray

//
//
//
//
//

extern int  KPeriod        =  14;
extern int  Slowing        =  1;
extern int  SlowingMode    =  MODE_SMA;
extern int  DSmoothing     =  1;
extern int  DSmoothingMode =  MODE_SMA;
extern bool HighLow        = true;
extern int  calcVersion    = 0;

//
//
//
//
//

double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
double MainBuffera[];


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//
//
//
//
//

int init()
{
   IndicatorBuffers(5);
   SetIndexBuffer(0, MainBuffer);   SetIndexLabel(0,"%K");
   SetIndexBuffer(1, SignalBuffer); SetIndexLabel(1,"%D");
   SetIndexBuffer(2, HighesBuffer);
   SetIndexBuffer(3, LowesBuffer);
   SetIndexBuffer(4, MainBuffera);

   //
   //
   //
   //
   //
   
   Slowing        = MathMax(Slowing,1);
   DSmoothing     = MathMax(DSmoothing,1);
   SlowingMode    = MathMax(MathMin(SlowingMode,3),0);
   DSmoothingMode = MathMax(MathMin(DSmoothingMode,3),0);
   
   string speed = "Full";
      switch (Slowing)
      {
         case 0:
         case 1: speed = "Fast"; break;
         case 3: speed = "Slow"; break;
      }         
   IndicatorShortName(speed+" stochastic ("+KPeriod+","+Slowing+","+MaName(SlowingMode)+","+DSmoothing+","+MaName(DSmoothingMode)+")");
   return(0);
}
int deinit() { return(0); }



//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//
//
//
//
//

int start()
{
   int counted_bars=IndicatorCounted();
   int i,limit;

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
         limit = MathMin(Bars-counted_bars,Bars-1);

   //
   //
   //
   //
   //
   
   for(i = limit; i >= 0 ; i--)
   {
      if (HighLow) { LowesBuffer[i] = Low[  ArrayMinimum(Low  ,KPeriod,i)]; HighesBuffer[i]=High[ ArrayMaximum(High ,KPeriod,i)]; }
      else         { LowesBuffer[i] = Close[ArrayMinimum(Close,KPeriod,i)]; HighesBuffer[i]=Close[ArrayMaximum(Close,KPeriod,i)]; }
      
      //
      //
      //
      //
      //

      if (LowesBuffer[i] != HighesBuffer[i])
         switch (calcVersion)
         {
            case 0  : MainBuffera[i] = 100.00*(Close[i]-LowesBuffer[i]) /(HighesBuffer[i]-LowesBuffer[i]); break;
            case 1  : MainBuffera[i] = 100.00*(HighesBuffer[i]-Close[i])/(HighesBuffer[i]-LowesBuffer[i]); break;
            default : MainBuffera[i] = 100.00*(HighesBuffer[i]-Close[i])/(LowesBuffer[i]-HighesBuffer[i]);
         }            
      else  MainBuffera[i] = 0.00;
   }
   for(i=0; i<limit; i++) MainBuffer[i] = iMAOnArray(MainBuffera,0,Slowing   ,0,SlowingMode   ,i);
   for(i=0; i<limit; i++) SignalBuffer[i]=iMAOnArray(MainBuffer ,0,DSmoothing,0,DSmoothingMode,i);
   
   //
   //
   //
   //
   //
   
   return(0);
}


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//
//
//
//
//

string MaName(int MaMethod)
{
   string name="";
   switch(MaMethod)
   {
      case 0 :  name="sma";  break;
      case 1 :  name="ema";  break;
      case 2 :  name="smma"; break;
      case 3 :  name="lwma";
   }
   return(name);
}   

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 ---