//+------------------------------------------------------------------+ //| BID_VIEW.mq4 | //| Copyright © 2008, "OTCFX" | //| Revision 1.6 | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008 OTCFX" #property indicator_separate_window extern bool Bid_Colors = True; extern string FontType=" Sans MS"; extern color ColorHeading = Gainsboro ; extern color ColorValue = CadetBlue ; extern int TimeFrame = 1440; extern int Trend_Bars = 10; extern bool show.Trend = true ; extern int price.x.offset= 50; extern int price.y.offset= 10; color ColorPrice = CadetBlue; int MAP =1; int Spread; int Local_Time; string labelNames; string shortName; int corner; int totalLabels; int window; int nDigits; int pZX; int PTL; double O_P; double O_P1; double O_P2; int F_Offset=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { corner = 0; shortName = MakeUniqueName("BT ",""); labelNames = shortName; IndicatorShortName(shortName); string S = Symbol(); if(S=="GBPJPY" ||S=="EURJPY" || S=="USDJPY" || S=="GOLD" )nDigits = 2; if(S=="GBPUSD" || S=="EURUSD" ||S=="NZDUSD" || S=="USDCHF" || S=="USDCAD" ||S=="AUDUSD" || S=="EURUSD" ||S=="EURCHF" || S=="EURGBP" || S=="EURCAD" ||S=="EURAUD" || S=="AUDNZD")nDigits = 4; int result; if (TimeFrame == 0) result = Period(); else { switch(TimeFrame) { case 1 : result = PERIOD_M1; break; case 5 : result = PERIOD_M5; break; case 15 : result = PERIOD_M15; break; case 30 : result = PERIOD_M30; break; case 60 : result = PERIOD_H1; break; case 240 : result = PERIOD_H4; break; case 1440 : result = PERIOD_D1; break; case 7200 : result = PERIOD_W1; break; case 28800: result = PERIOD_MN1; break; default : result = Period(); break; } } return(result); } int deinit() { while (totalLabels>0) { ObjectDelete(StringConcatenate(labelNames,totalLabels)); totalLabels--;} return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { window = WindowFind(shortName); ObjectsDeleteAll( window, 21); ObjectsDeleteAll( window, 22); ObjectsDeleteAll( window, 23); int i=0; int R77=0,CD=0,AM=0; double HD,DL,BTX1,BTX1_1,BTX2,BTX2_2,BTX3,BTX3_3,BTX4,BTX4_4,BTX5,BTX5_5; double BTX6,BTX6_6,BTX7,BTX7_7,BTX8,BTX8_8,BTX9,BTX9_9,BTX10,BTX10_10,DC,DO; double PercentUp,Perc,Per; string FX_T="Verdana Bold"; string T= TimeFrame; if (TimeFrame==0) TimeFrame=Period(); int yPos = 24, xPos = 10; int xSpacer = 140; string SpacerText1 = "__________________________"; string SpacerText2 = "__________________________________________________________________________________________________________"; if(F_Offset>0) F_Offset=0; if(Trend_Bars>15) Trend_Bars=15; if(price.y.offset<10) price.y.offset=10; if(price.y.offset>20) price.y.offset=20; string S = Symbol(); if(S=="GBPJPY" ||S=="EURJPY" || S=="USDJPY" || S=="GOLD" || S=="ES"|| S=="FGBL") {pZX = 100000;} else{pZX = 1000;} if(S=="FTSE" ||S=="FDAX" || S=="FESX" || S=="YM"){PTL = 1;} else {PTL = 100;} R77 =(iClose(NULL,PERIOD_D1,0)-iOpen(NULL,PERIOD_D1,0))/Point; DO = iOpen(NULL,PERIOD_D1,0); DC =iClose(NULL,PERIOD_D1,0); HD = iHigh(NULL,PERIOD_D1,0); DL = iLow(NULL,PERIOD_D1,0); //open0 = iOpen(NULL,PERIOD_D1,0); PercentUp = ((R77)/(DC))/100; Per = PercentUp*pZX; Perc = Per/1000; Spread=NormalizeDouble((Ask-Bid)/Point,0); if(Spread<0) Spread=0; if (Bid_Colors == True) { if (Close[i] > O_P) ColorPrice = DodgerBlue; if (Close[i] < O_P) ColorPrice = LightGray; O_P = Close[i]; } color ColorCT709; if( Close[i] < O_P2 ) { ColorCT709 =Red;} O_P2 = Close[i]; color ColorCT708; if( Close[i] > O_P1 ) { ColorCT708 =Lime;} O_P1 = Close[i]; string Market_Price = DoubleToStr(Close[i], Digits); color ColorCH704 ; if(R77 >= 0 ) { ColorCH704 =LimeGreen ; } color ColorCH705 ; if(R77 < 0 ) { ColorCH705 =Red ; } ///////ARROWS>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> setObject(next(),"^",115+price.x.offset, 2+price.y.offset,ColorCT708 ,"Arial Bold",20+F_Offset,0); setObject(next(),"^",127+price.x.offset, 32+price.y.offset,ColorCT709 ,"Arial Bold",20+F_Offset,180); setObject(next(),"^",227+price.x.offset, 2+price.y.offset,ColorCH704 ,"Arial Bold",18+F_Offset,0);// setObject(next(),"^",240+price.x.offset, 32+price.y.offset,ColorCH705 ,"Arial Bold",18+F_Offset,180);// //////// Value inputs>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> setObject(next(),Market_Price ,140+price.x.offset, 5+price.y.offset,ColorPrice ,FX_T,16+F_Offset); setObject(next(),StringSubstr(Symbol(),0),22+price.x.offset, 5+price.y.offset,ColorValue ,FX_T,13+F_Offset); setObject(next(),DoubleToStr(DO ,Digits),383+price.x.offset, 5+price.y.offset,ColorValue ,FX_T,13+F_Offset); setObject(next(),DoubleToStr(HD ,Digits),472+price.x.offset, 5+price.y.offset,ColorValue ,FX_T,13+F_Offset); setObject(next(),DoubleToStr(DL ,Digits),555+price.x.offset, 5+price.y.offset,ColorValue ,FX_T,13+F_Offset); setObject(next(),DoubleToStr(R77 ,0),247+price.x.offset, 5+price.y.offset,ColorValue ,FX_T,13+F_Offset); setObject(next(),TimeToStr(CurTime(),TIME_SECONDS),777+price.x.offset, 5+price.y.offset,ColorValue ,FX_T,13+F_Offset); setObject(next(),TimeToStr(LocalTime(),TIME_MINUTES),880+price.x.offset, 5+price.y.offset,ColorValue ,FX_T,13+F_Offset); setObject(next(),DoubleToStr(Spread ,Digits-3),970+price.x.offset, 5+price.y.offset,ColorValue ,FX_T,13+F_Offset); setObject(next(),DoubleToStr(Perc ,nDigits),300+price.x.offset, 5+price.y.offset,ColorValue ,FX_T,13+F_Offset); ///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //HEADINGS>>>>> setObject(next(),"Name",45+price.x.offset, -10+price.y.offset,ColorHeading ,FX_T,9+F_Offset); setObject(next(),"Last",157+price.x.offset, -10+price.y.offset,ColorHeading ,FX_T,9+F_Offset); setObject(next(),"Change",237+price.x.offset, -10+price.y.offset,ColorHeading ,FX_T,9+F_Offset); setObject(next(),"%CH",317+price.x.offset, -10+price.y.offset,ColorHeading ,FX_T,9+F_Offset); setObject(next(),"Open",398+price.x.offset, -10+price.y.offset,ColorHeading ,FX_T,9+F_Offset); setObject(next(),"High",484+price.x.offset, -10+price.y.offset,ColorHeading ,FX_T,9+F_Offset); setObject(next(),"Low",571+price.x.offset, -10+price.y.offset,ColorHeading ,FX_T,9+F_Offset); setObject(next(),"BidTime",795+price.x.offset, -10+price.y.offset,ColorHeading ,FX_T,9+F_Offset); setObject(next(),"LocalTime",880+price.x.offset, -10+price.y.offset,ColorHeading ,FX_T,9+F_Offset); setObject(next(),"Spread",970+price.x.offset, -10+price.y.offset,ColorHeading ,FX_T,9+F_Offset); setObject(next(),"1",630+price.x.offset, -10+price.y.offset,ColorHeading ,"Verdana",8+F_Offset); setObject(next(),DoubleToStr(Trend_Bars ,0),755+price.x.offset, -10+price.y.offset,ColorHeading ,"Verdana",8+F_Offset); setObject(next(),"Trend",695+price.x.offset, -10+price.y.offset,ColorHeading ,FX_T,9+F_Offset); setObject(next(),StringSubstr((T),0),655+price.x.offset, -10+price.y.offset,ColorHeading ,FX_T,9+F_Offset); /////BORDERS>>>>>>>>>>>>>>>>>>>> setObject(next(),SpacerText1,88+price.x.offset, 30+price.y.offset,DarkGray ,FX_T,17+F_Offset,90); setObject(next(),SpacerText1,199+price.x.offset, 30+price.y.offset,DarkGray ,FX_T,17+F_Offset,90); setObject(next(),SpacerText1,270+price.x.offset, 30+price.y.offset,DarkGray ,FX_T,17+F_Offset,90); setObject(next(),SpacerText1,350+price.x.offset, 30+price.y.offset,DarkGray ,FX_T,17+F_Offset,90); setObject(next(),SpacerText1,430+price.x.offset, 30+price.y.offset,DarkGray ,FX_T,17+F_Offset,90); setObject(next(),SpacerText1,520+price.x.offset, 30+price.y.offset,DarkGray ,FX_T,17+F_Offset,90); setObject(next(),SpacerText1,600+price.x.offset, 30+price.y.offset,DarkGray ,FX_T,17+F_Offset,90); setObject(next(),SpacerText1,745+price.x.offset, 30+price.y.offset,DarkGray ,FX_T,17+F_Offset,90); setObject(next(),SpacerText1,840+price.x.offset, 30+price.y.offset,DarkGray ,FX_T,17+F_Offset,90); setObject(next(),SpacerText1,930+price.x.offset, 30+price.y.offset,DarkGray ,FX_T,17+F_Offset,90); setObject(next(),SpacerText1,1002+price.x.offset, 30+price.y.offset,DarkGray ,FX_T,17+F_Offset,90); setObject(next(),SpacerText1,-25+price.x.offset, 30+price.y.offset,DarkGray ,FX_T,17+F_Offset,90); /////////LINES>>>>>>>>>>>>>>>> setObject(next(),SpacerText2,0+price.x.offset, -5+price.y.offset, DarkGray ,FX_T,6+F_Offset); setObject(next(),SpacerText2,250+price.x.offset, -5+price.y.offset,DarkGray ,FX_T,6+F_Offset); setObject(next(),SpacerText2,450+price.x.offset, -5+price.y.offset,DarkGray ,FX_T,6+F_Offset); setObject(next(),SpacerText2,650+price.x.offset, -5+price.y.offset,DarkGray ,FX_T,6+F_Offset); setObject(next(),SpacerText2,650+price.x.offset, 21+price.y.offset,DarkGray ,FX_T,6+F_Offset); setObject(next(),SpacerText2,380+price.x.offset, 21+price.y.offset,DarkGray ,FX_T,6+F_Offset); setObject(next(),SpacerText2,100+price.x.offset, 21+price.y.offset,DarkGray ,FX_T,6+F_Offset); setObject(next(),SpacerText1,0+price.x.offset, 21+price.y.offset,DarkGray ,FX_T,6+F_Offset); ////BIDTREND>>>>>>>>>>>>>>>>>>>>>>>>> //if(show.Trend){ color LabelColor; int SpX = 615, SpX2=7; for(i=0;i<=Trend_Bars;i++) { BTX1 =iMA(S, TimeFrame,MAP,0,1,1,i); BTX1_1 =iMA(S, TimeFrame,MAP,0,0,0,i); LabelColor =Red; if(BTX1_1 > BTX1) LabelColor =Lime; SpX = SpX+ SpX2; if(show.Trend){ setObject(next(),"-",SpX+price.x.offset, 25+price.y.offset,LabelColor ,FX_T,30,90);} } return(0); } string next() { totalLabels++; return(totalLabels); } string MakeUniqueName(string first, string rest) { string result = first+(MathRand()%1001)+rest; while (WindowFind(result)> 0) result = first+(MathRand()%1001)+rest; return(result); } void setObject(string name,string text,int x,int y,color theColor, string font = "Arial",int size=10,int angle=0) { string labelName = StringConcatenate(labelNames,name); if (ObjectFind(labelName) == -1) { ObjectCreate(labelName,OBJ_LABEL,window,0,0); ObjectSet(labelName,OBJPROP_CORNER,corner); if (angle != 0) ObjectSet(labelName,OBJPROP_ANGLE,angle); } ObjectSet(labelName,OBJPROP_XDISTANCE,x); ObjectSet(labelName,OBJPROP_YDISTANCE,y); ObjectSetText(labelName,text,size,font,theColor); //} //---- done return(0); }
Sample
Analysis
Market Information Used:
Series array that contains open prices of each bar
Series array that contains close prices for each bar
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Indicator Curves created:
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Other Features: