//+-------------------------------------------------------------------------------------- // 10/11/2007 - Modified to work with IBFX mini accounts and dropped USDJPY references // 10/11/2007 - Corrected local/global variable usage in init() and initialization of tik & t #property indicator_separate_window #property indicator_buffers 4 #property indicator_color1 Green //gbpusd #property indicator_color2 Red //chart limits #property indicator_color3 White //eurusd #property indicator_color4 Yellow //usdchf extern int period=200; extern bool IBFXMiniAcct=true; double ExtMapBuffer1[],ExtMapBuffer2[],ExtMapBuffer3[],ExtMapBuffer4[]; int tik=0,t=0; double bufGU[],MaxB,MinB=1000, bufEU[],bufUCH[]; double startpricegbpusd,startpriceeurusd,startpriceusdchf; double avgvalue; string eurusd="EURUSD",gbpusd="GBPUSD",usdchf="USDCHF"; //+------------------------------------------------------------------+ int init() { SetIndexStyle(0,DRAW_SECTION); SetIndexBuffer(0,ExtMapBuffer1); SetIndexLabel(0,"GBPUSD Tick"); SetIndexStyle(1,DRAW_NONE); SetIndexBuffer(1,ExtMapBuffer2); SetIndexLabel(1,"Chart Limit"); SetIndexStyle(2,DRAW_SECTION); SetIndexBuffer(2,ExtMapBuffer3); SetIndexLabel(2,"EURUSD Tick"); SetIndexStyle(3,DRAW_SECTION); SetIndexBuffer(3,ExtMapBuffer4); SetIndexLabel(3,"USDCHF Tick"); if(IBFXMiniAcct) { eurusd="EURUSDm"; gbpusd="GBPUSDm"; usdchf="USDCHFm"; } startpricegbpusd=MarketInfo(gbpusd,MODE_BID); startpriceeurusd=MarketInfo(eurusd,MODE_BID); startpriceusdchf=MarketInfo(usdchf,MODE_BID); return(0); } //+------------------------------------------------------------------+ int start() { int i,b; double bidgbpusd=MarketInfo(gbpusd,MODE_BID); double pointgbpusd=MarketInfo(gbpusd,MODE_POINT); double bideurusd=MarketInfo(eurusd,MODE_BID); double pointeurusd=MarketInfo(eurusd,MODE_POINT); double bidusdchf=MarketInfo(usdchf,MODE_BID); double pointusdchf=MarketInfo(usdchf,MODE_POINT); t++; b=period; ArrayResize(bufGU,b); ArrayResize(bufEU,b); ArrayResize(bufUCH,b); if(tik==0) { for(i=0;i<b;i++) { bufGU[i]=0; startpricegbpusd=bidgbpusd; bufEU[i]=0; startpriceeurusd=bideurusd; bufUCH[i]=0; startpriceusdchf=bidusdchf; } ExtMapBuffer2[0]=+5; ExtMapBuffer2[1]=-5; tik=1; } MaxB=-1;MinB=1000; for(i=b-1;i>0;i--) { bufGU[i]=bufGU[i-1]; if(MaxB<bufGU[i])MaxB=bufGU[i]; if(MinB>bufGU[i])MinB=bufGU[i]; bufEU[i]=bufEU[i-1]; if(MaxB<bufEU[i])MaxB=bufEU[i]; if(MinB>bufEU[i])MinB=bufEU[i]; bufUCH[i]=bufUCH[i-1]; if(MaxB<bufUCH[i])MaxB=bufUCH[i]; if(MinB>bufUCH[i])MinB=bufUCH[i]; } bufGU[0]=(bidgbpusd-startpricegbpusd)/pointgbpusd; bufEU[0]=(bideurusd-startpriceeurusd)/pointeurusd; bufUCH[0]=(bidusdchf-startpriceusdchf)/pointusdchf* (-1); for(i=0;i<b;i++) { ExtMapBuffer1[i]=bufGU[i]; ExtMapBuffer3[i]=bufEU[i]; ExtMapBuffer4[i]=bufUCH[i]; } if(MathCeil(t/10)*10==t) { for(i=b;i<Bars;i++) { ExtMapBuffer1[i]=(bidgbpusd-startpricegbpusd)/pointgbpusd; ExtMapBuffer3[i]=(bideurusd-startpriceeurusd)/pointeurusd; ExtMapBuffer4[i]=(bidusdchf-startpriceusdchf)/pointusdchf* (-1); avgvalue=( ((bidgbpusd-startpricegbpusd)/pointgbpusd)+ ((bideurusd-startpriceeurusd)/pointeurusd)+ (((bidusdchf-startpriceusdchf)/pointusdchf)* (-1)) ) /4; } ArrayInitialize(ExtMapBuffer2,avgvalue); if(MaxB-avgvalue<5)ExtMapBuffer2[0]=avgvalue+5; if( (avgvalue-MinB)<5)ExtMapBuffer2[1]=(avgvalue)-5; } return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Implements a curve of type DRAW_SECTION
Implements a curve of type DRAW_NONE
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: