SignalTable_Sar_Stochastic_TEMA

Author: Copyright © 2007, Antonuk Oleg
Indicators Used
Stochastic oscillatorParabolic Stop and Reverse system
0 Views
0 Downloads
0 Favorites
SignalTable_Sar_Stochastic_TEMA
ÿþ//+------------------------------------------------------------------+

//|                              SignalTable_Sar_Stochastic_TEMA.mq5 |

//|                                   Copyright © 2007, Antonuk Oleg |

//|                                            antonukoleg@gmail.com | 

//+------------------------------------------------------------------+

#property copyright "Copyright © 2007, Antonuk Oleg"

#property link      "antonukoleg@gmail.com"

#property version   "1.00"

#property description "C83=0;K =0 ?>:C?:C 8 ?@>406C A =5A:>;L:8E 8=48:0B>@>2 8 @07=KE B09<D@59<>2 2 2845 B01;8FK"



//---- =><5@ 25@A88 8=48:0B>@0

#property version   "2.00"

//---- >B@8A>2:0 8=48:0B>@0 2 3;02=>< >:=5

#property indicator_chart_window

//---- 4;O @0AGQB0 8 >B@8A>2:8 8=48:0B>@0 =5 8A?>;L7>20=> 1CD5@>2

#property indicator_buffers 0

//---- 8A?>;L7>20=> 0 3@0D8G5A:8E ?>AB@>5=89

#property indicator_plots   0

//+----------------------------------------------+

//|  >1JO2;5=85 :>=AB0=B                         |

//+----------------------------------------------+

#define RESET 0 // >=AB0=B0 4;O 2>72@0B0 B5@<8=0;C :><0=4K =0 ?5@5AGQB 8=48:0B>@0

//+----------------------------------------------+

// ?8A0=85 ?5@5G8A;5=8O type_font               |

// ?8A0=85 :;0AA0 CFontName                     | 

//+----------------------------------------------+ 

#include <GetFontName.mqh>

//+----------------------------------------------+

//| E>4=K5 ?0@0<5B@K 8=48:0B>@0                 |

//+----------------------------------------------+

input string Symbol_="";                              // D8=0=A>2K9 0:B82

input ENUM_TIMEFRAMES TimeFrame1=PERIOD_M1;           // 5@8>4 3@0D8:0 1

input ENUM_TIMEFRAMES TimeFrame2=PERIOD_M5;           // 5@8>4 3@0D8:0 2

input ENUM_TIMEFRAMES TimeFrame3=PERIOD_M15;          // 5@8>4 3@0D8:0 3

input ENUM_TIMEFRAMES TimeFrame4=PERIOD_M30;          // 5@8>4 3@0D8:0 4

input ENUM_TIMEFRAMES TimeFrame5=PERIOD_H1;           // 5@8>4 3@0D8:0 5

input ENUM_TIMEFRAMES TimeFrame6=PERIOD_H4;           // 5@8>4 3@0D8:0 6

input ENUM_TIMEFRAMES TimeFrame7=PERIOD_D1;           // 5@8>4 3@0D8:0 7

input ENUM_TIMEFRAMES TimeFrame8=PERIOD_W1;           // 5@8>4 3@0D8:0 8

input ENUM_TIMEFRAMES TimeFrame9=PERIOD_MN1;          // 5@8>4 3@0D8:0 9



sinput string info1="<<<==============  0@0<5B@K iSAR ===============>>>";

//--- ?0@0<5B@K iSAR

input double SARStep=0.02;                            // (03 iSAR

input double SARMaximum=0.2;                          // 0:A8<C< iSAR

input uint SARNumberofBar=0;                          // ><5@ 10@0 4;O ?>;CG5=8O A83=0;0 iSAR

sinput string info2="<<<============  0@0<5B@K C28=3>2 =============>>>";

//---- 0@0<5B@K <C28=3>2

input uint   FastTEMA=13;                             // 1KAB@K9 TEMA

input uint   SlowTEMA=24;                             // <54;5=K9 TEMA

input ENUM_APPLIED_PRICE TEMAPrice=PRICE_CLOSE;       // F5=0 TEMA

input uint TEMANumberofBar=0;                         // ><5@ 10@0 4;O ?>;CG5=8O A83=0;0 C28=3>2

sinput string info3="<<<==============  0@0<5B@K iStochastic ===============>>>";

//---- 0@0<5B@K Stochastic

input uint KPeriod=5;

input uint DPeriod=3;

input uint Slowing=3;

input ENUM_MA_METHOD STO_Method=MODE_SMA;

input ENUM_STO_PRICE Price_field=STO_LOWHIGH;

input uint StochasticHighLevel=60;                           // C@>25=L ?5@570:C?0 iStochastic

input uint StochasticLowLevel=40;                            // C@>25=L ?5@5?@>40==>AB8 iStochastic

input bool StochasticInvert=true;                            // 8=25@B8@>20=85 A83=0;>2 iStochastic

input uint StochasticNumberofBar=0;                          // ><5@ 10@0 4;O ?>;CG5=8O A83=0;0 Stochastic



sinput string info4="<<< === 0@0<5B@K 287C0;L=>3> >B>1@065=8O 8=48:0B>@0 === >>>";

//---- 0@0<5B@K 287C0;L=>3> >B>1@065=8O 8=48:0B>@>2

input color  TextColor=clrBlueViolet;                 // F25B B5:AB0

input color  UpColor=clrLimeGreen;                    // F25B @0ABCI53> B@5=40

input color  MdColor=clrGray;                         // F25B >BACBAB28O B@5=40

input color  DnColor=clrDeepPink;                     // F25B ?040NI53> B@5=40

input int    FontSize=15;                             // @07<5@ H@8DB0

input type_font FontType=Font14;                      // B8? H@8DB0

input ENUM_BASE_CORNER  WhatCorner=CORNER_LEFT_LOWER; // C3>; @0A?>;>65=8O

input uint Y_=20;                                     // @0A?>;>65=85 ?> 25@B8:0;8

input uint X_=5;                                      // @0A?>;>65=85 ?> 3>@87>=B0;8

input string LableSirname="SignalTable_Sar_Stochastic_TEMA 1";

//+----------------------------------------------+

//---- >1JO2;5=85 F5;>G8A;5==KE ?5@5<5==KE =0G0;0 >BAG5B0 40==KE

int min_rates_total;

double Width;

ENUM_ANCHOR_POINT SPoint;

string sFontType,Lable1,Lable2,Lable3,Lable4,Lable1_[9],Lable2_[9],Lable3_[9],Lable4_[9],symbol;

uint shift_1,shift_2,shift_3,shift_4,X1,X2,X2i[9];

ENUM_TIMEFRAMES period[9];

//---- A>7405< 5I5 >48= <0AA82 A =0720=8O<8 8=48:0B>@>2

string signalNameString[]={"TEMA","Stochastic","SAR"};

//---- 1JO2;5=85 F5;KE ?5@5<5==KE 4;O E5=4;>2 8=48:0B>@>2

int FsTEMA_Handle[9],SlTEMA_Handle[9],Stochastic_Handle[9],SAR_Handle[9];

//+------------------------------------------------------------------+   

//| Custom indicator initialization function                         | 

//+------------------------------------------------------------------+ 

void OnInit()

  {

//---- 8=8F80;870F8O ?5@5<5==KE =0G0;0 >BAG5B0 40==KE

   min_rates_total=1;

   period[0]=TimeFrame1;

   period[1]=TimeFrame2;

   period[2]=TimeFrame3;

   period[3]=TimeFrame4;

   period[4]=TimeFrame5;

   period[5]=TimeFrame6;

   period[6]=TimeFrame7;

   period[7]=TimeFrame8;

   period[8]=TimeFrame9;

//---- 8=8F80;870F8O ?5@5<5==KE 

   if(Symbol_!="") symbol=Symbol_;

   else symbol=Symbol();

   Width=3.3; //H8@8=0 <564C A8<2>;0<8

   SPoint=ENUM_ANCHOR_POINT(2*WhatCorner);



//---- ?>;CG5=85 E5=4;>2

   for(int iii=0; iii<9; iii++)

     {

      //---- ?>;CG5=85 E5=4;0 8=48:0B>@0 iTEMA

      FsTEMA_Handle[iii]=iTEMA(symbol,period[iii],FastTEMA,0,TEMAPrice);

      if(FsTEMA_Handle[iii]==INVALID_HANDLE) Print(" 5 C40;>AL ?>;CG8BL E5=4; 8=48:0B>@0 iTEMA");



      //---- ?>;CG5=85 E5=4;0 8=48:0B>@0 iTEMA

      SlTEMA_Handle[iii]=iTEMA(symbol,period[iii],SlowTEMA,0,TEMAPrice);

      if(SlTEMA_Handle[iii]==INVALID_HANDLE) Print(" 5 C40;>AL ?>;CG8BL E5=4; 8=48:0B>@0 iTEMA");



      //---- ?>;CG5=85 E5=4;0 8=48:0B>@0 iStochastic

      Stochastic_Handle[iii]=iStochastic(symbol,period[iii],KPeriod,DPeriod,Slowing,STO_Method,Price_field);

      if(Stochastic_Handle[iii]==INVALID_HANDLE) Print(" 5 C40;>AL ?>;CG8BL E5=4; 8=48:0B>@0 iStochastic");



      //---- ?>;CG5=85 E5=4;0 8=48:0B>@0 iSAR

      SAR_Handle[iii]=iSAR(symbol,period[iii],SARStep,SARMaximum);

      if(SAR_Handle[iii]==INVALID_HANDLE) Print(" 5 C40;>AL ?>;CG8BL E5=4; 8=48:0B>@0 iSAR");

     }



//----

   CFontName FONT;

   sFontType=FONT.GetFontName(FontType);

   Deinit();

//---- 

   Lable1=LableSirname+"_"+"String_0";

   Lable2=LableSirname+"_"+"String_1";

   Lable3=LableSirname+"_"+"String_2";

   Lable4=LableSirname+"_"+"String_3";



   for(int iii=0; iii<9; iii++)

     {

      Lable1_[iii]=LableSirname+"_"+"String_0_"+string(iii);

      Lable2_[iii]=LableSirname+"_"+"String_1_"+string(iii);

      Lable3_[iii]=LableSirname+"_"+"String_2_"+string(iii);

      Lable4_[iii]=LableSirname+"_"+"String_3_"+string(iii);

     }



//----

   switch(WhatCorner)

     {

      case CORNER_RIGHT_LOWER:

        {

         shift_1=int(Y_+FontSize*6);

         shift_2=int(Y_+FontSize*4);

         shift_3=int(Y_+FontSize*2);

         shift_4=int(Y_+0);

         X1=int(X_+FontSize*3);

         X2=int(X_);

         break;

        }



      case CORNER_LEFT_LOWER:

        {

         shift_1=int(Y_+FontSize*6);

         shift_2=int(Y_+FontSize*4);

         shift_3=int(Y_+FontSize*2);

         shift_4=int(Y_+0);

         X1=int(X_);

         X2=X_+FontSize*5;

         break;

        }



      case CORNER_RIGHT_UPPER:

        {

         shift_1=int(Y_+0);

         shift_2=int(Y_+FontSize*2);

         shift_3=int(Y_+FontSize*4);

         shift_4=int(Y_+FontSize*6);

         X1=int(X_+FontSize*3);

         X2=int(X_);

         break;

        }



      case CORNER_LEFT_UPPER:

        {

         shift_1=int(Y_+0);

         shift_2=int(Y_+FontSize*2);

         shift_3=int(Y_+FontSize*4);

         shift_4=int(Y_+FontSize*6);

         X1=int(X_);

         X2=int(X_+FontSize*5);

        }

     }



   SetTLabel(0,Lable1,0,WhatCorner,SPoint,X1,shift_1,"Sar: ",TextColor,sFontType,FontSize);

   SetTLabel(0,Lable2,0,WhatCorner,SPoint,X1,shift_2,"Stoch: ",TextColor,sFontType,FontSize);

   SetTLabel(0,Lable3,0,WhatCorner,SPoint,X1,shift_3,"TEMA: ",TextColor,sFontType,FontSize);



   for(int iii=0; iii<9; iii++) X2i[iii]=X2+int(Width*iii*FontSize);



   for(int iii=0; iii<9; iii++)

      SetTLabel(0,Lable4_[iii],0,WhatCorner,SPoint,X2i[iii],shift_4,GetStringTimeframe(period[iii]),TextColor,sFontType,FontSize);

//---- 7025@H5=85 8=8F80;870F88

  }

//+------------------------------------------------------------------+

//| Custom indicator deinitialization function                       |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//----

   Deinit();

//----

   ChartRedraw(0);

  }

//+------------------------------------------------------------------+

//|  0AA82K ?5@5<5==KE 4;O A>740=8O 8=48:0B>@=KE 7=0G5=89           |

//+------------------------------------------------------------------+  

class CArray

  {

public: double    IndArr[];

  };

//+------------------------------------------------------------------+ 

//| Custom indicator iteration function                              | 

//+------------------------------------------------------------------+ 

int OnCalculate(

                const int rates_total,    // :>;8G5AB2> 8AB>@88 2 10@0E =0 B5:CI5< B8:5

                const int prev_calculated,// :>;8G5AB2> 8AB>@88 2 10@0E =0 ?@54K4CI5< B8:5

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[]

                )

  {

//---- ?@>25@:0 :>;8G5AB20 10@>2 =0 4>AB0B>G=>ABL 4;O @0AGQB0

   for(int iii=0; iii<9; iii++)

      if(BarsCalculated(FsTEMA_Handle[iii])<min_rates_total

         || BarsCalculated(SlTEMA_Handle[iii])<min_rates_total

         || BarsCalculated(Stochastic_Handle[iii])<min_rates_total

         || BarsCalculated(SAR_Handle[iii])<min_rates_total)

         return(RESET);



//----

   CArray FsTEMA[9],SlTEMA[9],Stochastic[9],SAR[9];

   string Symb;

   color Color;



//---- :>?8@C5< 2=>2L ?>O282H85AO 40==K5 2 <0AA82K

   for(int iii=0; iii<9; iii++)

     {

      if(CopyBuffer(Stochastic_Handle[iii],0,StochasticNumberofBar,1,Stochastic[iii].IndArr)<=0) return(RESET);

      if(CopyBuffer(SAR_Handle[iii],0,SARNumberofBar,1,SAR[iii].IndArr)<=0) return(RESET);

      if(CopyBuffer(FsTEMA_Handle[iii],0,TEMANumberofBar,1,FsTEMA[iii].IndArr)<=0) return(RESET);

      if(CopyBuffer(SlTEMA_Handle[iii],0,TEMANumberofBar,1,SlTEMA[iii].IndArr)<=0) return(RESET);

     }

//---- 

   for(int iii=0; iii<9; iii++)

     {

      if(SAR[iii].IndArr[0]<close[rates_total-1])

        {

         Symb="3";

         Color=UpColor;

        }

      else if(SAR[iii].IndArr[0]>close[rates_total-1])

        {

         Symb="4";

         Color=DnColor;

        }

      else

        {

         Symb="2";

         Color=MdColor;

        }



      SetTLabel(0,Lable1_[iii],0,WhatCorner,SPoint,X2i[iii],shift_1,Symb,Color,"Wingdings 3",FontSize);

     }

//----

   for(int iii=0; iii<9; iii++)

     {

      if(Stochastic[iii].IndArr[0]<StochasticLowLevel)

        {

         if(StochasticInvert)

           {

            Symb="3";

            Color=UpColor;

           }

         else

           {

            Symb="4";

            Color=DnColor;

           }

        }

      else if(Stochastic[iii].IndArr[0]>StochasticHighLevel)

        {

         if(StochasticInvert)

           {

            Symb="4";

            Color=DnColor;

           }

          else

           {

            Symb="3";

            Color=UpColor;

           }

        }

      else

        {

         Symb="2";

         Color=MdColor;

        }



      SetTLabel(0,Lable2_[iii],0,WhatCorner,SPoint,X2i[iii],shift_2,Symb,Color,"Wingdings 3",FontSize);

     }

//----

   for(int iii=0; iii<9; iii++)

     {

      if(FsTEMA[iii].IndArr[0]>SlTEMA[iii].IndArr[0])

        {

         Symb="3";

         Color=UpColor;

        }

      else if(FsTEMA[iii].IndArr[0]<SlTEMA[iii].IndArr[0])

        {

         Symb="4";

         Color=DnColor;

        }

      else

        {

         Symb="2";

         Color=MdColor;

        }



      SetTLabel(0,Lable3_[iii],0,WhatCorner,SPoint,X2i[iii],shift_3,Symb,Color,"Wingdings 3",FontSize);

     }

//----  

   ChartRedraw(0);

   return(rates_total);

  }

//+------------------------------------------------------------------+

//| Custom indicator deinitialization function                       |

//+------------------------------------------------------------------+    

void Deinit()

  {

//----

   ObjectDelete(0,Lable1);

   ObjectDelete(0,Lable2);

   ObjectDelete(0,Lable3);

   ObjectDelete(0,Lable4);



   for(int iii=0; iii<9; iii++)

     {

      ObjectDelete(0,Lable1_[iii]);

      ObjectDelete(0,Lable2_[iii]);

      ObjectDelete(0,Lable3_[iii]);

      ObjectDelete(0,Lable4_[iii]);

     }

//----

  }

//+------------------------------------------------------------------+

//|  >;CG5=85 AB@8=3>2>3> B09<D@59<0                                |

//+------------------------------------------------------------------+

string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)

  {

//----

   return(StringSubstr(EnumToString(timeframe),7,-1));

//----

  }

//+------------------------------------------------------------------+

//|  !>740=85 B5:AB>2>9 ;591K                                        |

//+------------------------------------------------------------------+

void CreateTLabel

(

 long   chart_id,         // 845=B8D8:0B>@ 3@0D8:0

 string name,             // 8<O >1J5:B0

 int    nwin,             // 8=45:A >:=0

 ENUM_BASE_CORNER corner,// ?>;>65=85 C3;0 ?@82O7:8

 ENUM_ANCHOR_POINT point, // ?>;>65=85 B>G:8 ?@82O7:8

 int    X,                // 48AB0=F8O 2 ?8:A5;OE ?> >A8 X >B C3;0 ?@82O7:8

 int    Y,                // 48AB0=F8O 2 ?8:A5;OE ?> >A8 Y >B C3;0 ?@82O7:8

 string text,             // B5:AB

 color  Color,            // F25B B5:AB0

 string Font,             // H@8DB B5:AB0

 int    Size              // @07<5@ H@8DB0

 )

//---- 

  {

//----

   ObjectCreate(chart_id,name,OBJ_LABEL,0,0,0);

   ObjectSetInteger(chart_id,name,OBJPROP_CORNER,corner);

   ObjectSetInteger(chart_id,name,OBJPROP_ANCHOR,point);

   ObjectSetInteger(chart_id,name,OBJPROP_XDISTANCE,X);

   ObjectSetInteger(chart_id,name,OBJPROP_YDISTANCE,Y);

   ObjectSetString(chart_id,name,OBJPROP_TEXT,text);

   ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);

   ObjectSetString(chart_id,name,OBJPROP_FONT,Font);

   ObjectSetInteger(chart_id,name,OBJPROP_FONTSIZE,Size);

   ObjectSetInteger(chart_id,name,OBJPROP_BACK,true);

//----

  }

//+------------------------------------------------------------------+

//|  5@5CAB0=>2:0 B5:AB>2>9 ;591K                                   |

//+------------------------------------------------------------------+

void SetTLabel

(

 long   chart_id,         // 845=B8D8:0B>@ 3@0D8:0

 string name,             // 8<O >1J5:B0

 int    nwin,             // 8=45:A >:=0

 ENUM_BASE_CORNER corner,// ?>;>65=85 C3;0 ?@82O7:8

 ENUM_ANCHOR_POINT point, // ?>;>65=85 B>G:8 ?@82O7:8

 int    X,                // 48AB0=F8O 2 ?8:A5;OE ?> >A8 X >B C3;0 ?@82O7:8

 int    Y,                // 48AB0=F8O 2 ?8:A5;OE ?> >A8 Y >B C3;0 ?@82O7:8

 string text,             // B5:AB

 color  Color,            // F25B B5:AB0

 string Font,             // H@8DB B5:AB0

 int    Size              // @07<5@ H@8DB0

 )

//---- 

  {

//----

   if(ObjectFind(chart_id,name)==-1) CreateTLabel(chart_id,name,nwin,corner,point,X,Y,text,Color,Font,Size);

   else

     {

      ObjectSetString(chart_id,name,OBJPROP_TEXT,text);

      ObjectSetInteger(chart_id,name,OBJPROP_XDISTANCE,X);

      ObjectSetInteger(chart_id,name,OBJPROP_YDISTANCE,Y);

      ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);

      ObjectSetString(chart_id,name,OBJPROP_FONT,Font);

      ObjectSetInteger(chart_id,name,OBJPROP_FONTSIZE,Size);

     }

//----

  }

//+------------------------------------------------------------------+

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