Indicators Used
2
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