//+------------------------------------------------------------------+ //| TSI.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ //mod2009fxtsd #property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 White #property indicator_color2 Red //#property indicator_maximum 100 //#property indicator_minimum -100 //#property indicator_level1 0 //---- input parameters extern int MAPeriod=3; extern int MAmode =1; extern int MAPrice =5; extern int MomPeriod=1; extern int First_R=8; extern int Second_S=5; extern int SignalPeriod=5; extern int Mode_Smooth=1; extern string note_Price = "0C 1O 2H 3L 4Md 5Tp 6WghC, Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6"; extern string MA_Method_ = "SMA0 EMA1 SMMA2 LWMA3"; //---- buffers double TSI_Buffer[]; double SignalBuffer[]; double MTM_Buffer[]; double EMA_MTM_Buffer[]; double EMA2_MTM_Buffer[]; double ABSMTM_Buffer[]; double EMA_ABSMTM_Buffer[]; double EMA2_ABSMTM_Buffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(8); SetIndexBuffer(2, MTM_Buffer); SetIndexBuffer(3, EMA_MTM_Buffer); SetIndexBuffer(4, EMA2_MTM_Buffer); SetIndexBuffer(5, ABSMTM_Buffer); SetIndexBuffer(6, EMA_ABSMTM_Buffer); SetIndexBuffer(7, EMA2_ABSMTM_Buffer); SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,TSI_Buffer); SetIndexLabel(0,"TSI"); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,SignalBuffer); SetIndexLabel(1,"Signal"); IndicatorShortName("TSI "+MAPeriod+"("+First_R+","+Second_S+","+SignalPeriod+")"); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- TODO: add your code here //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int limit,i; if (counted_bars<0) return(-1); if (counted_bars>0) counted_bars--; limit=Bars-counted_bars-1; for (i=limit;i>=0;i--) { //MTM_Buffer[i]=Close[i]-Close[i+1]; //MTM_Buffer[i]=iMomentum(NULL,0,MomPeriod,MomPrice,i); MTM_Buffer[i]=iMA(NULL,0,MAPeriod,0,MAmode,MAPrice,i)-iMA(NULL,0,MAPeriod,0,MAmode,MAPrice,i+MomPeriod); ABSMTM_Buffer[i]=MathAbs(MTM_Buffer[i]); } for (i=limit;i>=0;i--) { EMA_MTM_Buffer[i]=iMAOnArray(MTM_Buffer,0,First_R,0,MODE_EMA,i); EMA_ABSMTM_Buffer[i]=iMAOnArray(ABSMTM_Buffer,0,First_R,0,MODE_EMA,i); } for (i=limit;i>=0;i--) { EMA2_MTM_Buffer[i]=iMAOnArray(EMA_MTM_Buffer,0,Second_S,0,MODE_EMA,i); EMA2_ABSMTM_Buffer[i]=iMAOnArray(EMA_ABSMTM_Buffer,0,Second_S,0,MODE_EMA,i); } for (i=limit;i>=0;i--) if (EMA2_ABSMTM_Buffer[i]!=0) TSI_Buffer[i]=100.0*EMA2_MTM_Buffer[i]/EMA2_ABSMTM_Buffer[i]; for (i=limit;i>=0;i--) SignalBuffer[i]=iMAOnArray(TSI_Buffer,0,SignalPeriod,0,Mode_Smooth,i); //---- TODO: add your code here //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Implements a curve of type DRAW_LINE
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Other Features: