//+------------------------------------------------------------------+ //| TTF+-+MW.mq4 | //| MojoFX | //| http://fx.studiomojo.com | //+------------------------------------------------------------------+ #property copyright "MojoFX" #property link "http://fx.studiomojo.com" //---- indicators setting #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Red #property indicator_color2 Green //---- input parameters extern int TTFbars=12; extern int t3_period=6; extern double b=1.618; //---- buffers double ExtMapBuffer1[],ExtMapBuffer2[]; double b2,b3,c1,c2,c3,c4,e1,e2,e3,e4,e5,e6,w1,w2,TTF,r; double HighestHighRecent,HighestHighOlder,LowestLowRecent,LowestLowOlder; double BuyPower,SellPower; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,159); SetIndexBuffer(0,ExtMapBuffer1); SetIndexEmptyValue(0,0.0); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,159); SetIndexBuffer(1,ExtMapBuffer2); SetIndexEmptyValue(1,0.0); //---- b2=b*b; b3=b2*b; c1=-b3; c2=(3*(b2+b3)); c3=-3*(2*b2+b+b3); c4=(1+3*b+b3+3*b2); r=t3_period; if(r<1) r=1; r=1+0.5*(r-1); w1=2/(r + 1); w2=1 - w1; // e1=0; e2=0; e3=0; e4=0; e5=0; e6=0; //---- 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(); if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; int limit=Bars-counted_bars; if(counted_bars==0) limit-=1+TTFbars+1; //---- for(int i=limit; i>=0; i--) { HighestHighRecent=High[Highest(NULL,0,2,TTFbars,i-TTFbars+1)]; HighestHighOlder =High[Highest(NULL,0,2,TTFbars,i+1)]; LowestLowRecent=Low[Lowest(NULL,0,1,TTFbars,i-TTFbars+1)]; LowestLowOlder =Low[Lowest(NULL,0,1,TTFbars,i+1)]; BuyPower =HighestHighRecent-LowestLowOlder; SellPower=HighestHighOlder -LowestLowRecent; TTF=(BuyPower-SellPower)/(0.5*(BuyPower+SellPower))*100; // e1=w1*TTF + w2*e1; e2=w1*e1 + w2*e2; e3=w1*e2 + w2*e3; e4=w1*e3 + w2*e4; e5=w1*e4 + w2*e5; e6=w1*e5 + w2*e6; // TTF=c1*e6+c2*e5+c3*e4+c4*e3; // if(TTF<=(-100)) { ExtMapBuffer1[i]=High[i]+4*Point; ExtMapBuffer2[i]=0; } if(TTF>=100) { ExtMapBuffer1[i]=0; ExtMapBuffer2[i]=Low[i]-4*Point; } if(TTF>(-100) && TTF<100) { ExtMapBuffer1[i]=0; ExtMapBuffer2[i]=0; } } //---- return(0); } //+------------------------------------------------------------------+