//+--------------------------------------------------------------------------------+ //| Float.mq4 | //| Copyright © 2005 Barry Stander Barry_Stander_4@yahoo.com | //| http://www.4Africa.net/4meta/ | //| Float | //+--------------------------------------------------------------------------------+ #property copyright "Float converted from MT3 to MT4" #property link "http://www.4Africa.net/4meta/" #property link "Data window added by cja" //---- #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 MidnightBlue #property indicator_color2 Red //---- extern int float=50,use_fibos=0,Backtesting=0,from=0; string short_name; //---- double f,c1,high_bar,Low_bar; int bars_high,bars_low; double cumulativeV,FLOATV,cumulativeV2,swing; double newcv,CV,CV2; double fib23,fib38,fib50,fib62,fib76; double dinap0,dinap1,dinap2,dinap3,dinap4,dinap5; double CVL,CVL1,CVL2,CVL3,CVL4; double Buffer1[]; double Buffer2[]; //---- int shift,swing_time; int cvstart,cvend,bar; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void delete_objects() { string buff_str=""; for(int i=ObjectsTotal()-1;i>=0;i--) { buff_str=ObjectName(i); if(StringFind(buff_str,"float_",0)==0) ObjectDelete(buff_str); } Comment(""); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(2); delete_objects(); //---- short_name=("Float01 DATA"); IndicatorShortName(short_name); SetIndexLabel(0,short_name); //---- SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3 ); SetIndexBuffer(0,Buffer1); SetIndexDrawBegin(0,Buffer1); SetIndexStyle(1,DRAW_LINE ); SetIndexBuffer(1,Buffer2); SetIndexDrawBegin(1,Buffer2); //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int deinit() { delete_objects(); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void create_line(int from,double p1,int to,double p2,color c,int style,int w=1) { static int acc=0; string name="float_line_"+acc;acc++; datetime t0=Time[from]; if(from<0) t0=Time[0]-from*Period()*60; datetime t1=Time[to]; if(to<0) t1=Time[0]-to*Period()*60; //---- ObjectCreate(name, OBJ_TREND , 0, t0,p1,t1,p2); ObjectSet(name , OBJPROP_STYLE, style); ObjectSet(name , OBJPROP_COLOR , c ); ObjectSet(name , OBJPROP_RAY , 0 ); ObjectSet(name , OBJPROP_WIDTH , w ); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void place_text(string text,int from,double p,color c) { static int acc=0; string name="float_text_"+acc;acc++; ObjectCreate(name, OBJ_TEXT , 0, Time[from],p ); ObjectSetText(name , text, 8 , "Arial", c); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { static int last=0; if(last==Bars) return(0); last=Bars; int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); // Exit if na data //---- delete_objects(); cumulativeV=0; cumulativeV2=0; FLOATV=0; //---- bars_high=Highest(NULL,0,MODE_HIGH,float,from+1); bars_low =Lowest(NULL,0,MODE_LOW,float,from+1); high_bar=High[bars_high]; Low_bar=Low[bars_low]; swing=high_bar - Low_bar; swing_time=MathAbs(bars_low-bars_high); if(bars_high < bars_low ) { cvstart=bars_low; cvend=bars_high; } else { cvstart=bars_high; cvend=bars_low; } for( shift=cvstart;shift>=cvend;shift--) FLOATV=FLOATV+Volume[shift]; //find cumulative volume since last turnover for( shift=cvstart;shift>=from;shift--) { cumulativeV=cumulativeV+Volume[shift]; if(cumulativeV>=FLOATV)cumulativeV=0; //---- Buffer1[shift]=cumulativeV*0.001; //Blue Buffer2[shift]=FLOATV*0.001; //Red } // Float DATA window code double FirstValue=high_bar;//High bar Price double SecondValue=Low_bar;//Low bar Price double ThirdValue=bars_high*0.0001;//# of bars ago double ForthValue=bars_low*0.0001;//# of bars ago double FifthValue=FLOATV*0.0001; //Float volume double SixthValue=swing_time; // Float Time was double SeventhValue=FLOATV*0.0001 - cumulativeV*0.0001; //Float Vol left double EigthValue=float; //float period //---- ObjectCreate("Flt", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt",DoubleToStr(FirstValue,Digits),18, "Arial", PaleTurquoise); ObjectSet("Flt", OBJPROP_CORNER, 0); ObjectSet("Flt", OBJPROP_XDISTANCE, 120); ObjectSet("Flt", OBJPROP_YDISTANCE, 10); ObjectCreate("Flt2", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt2",DoubleToStr(SecondValue,Digits),18, "Arial", PaleTurquoise); ObjectSet("Flt2", OBJPROP_CORNER, 0); ObjectSet("Flt2", OBJPROP_XDISTANCE, 120); ObjectSet("Flt2", OBJPROP_YDISTANCE, 35); ObjectCreate("Flt3", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt3","HIGH Bar =",14, "tahoma", Yellow); ObjectSet("Flt3", OBJPROP_CORNER, 0); ObjectSet("Flt3", OBJPROP_XDISTANCE, 5); ObjectSet("Flt3", OBJPROP_YDISTANCE, 12); ObjectCreate("Flt4", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt4","LOW Bar =",14, "tahoma", Yellow); ObjectSet("Flt4", OBJPROP_CORNER, 0); ObjectSet("Flt4", OBJPROP_XDISTANCE, 5); ObjectSet("Flt4", OBJPROP_YDISTANCE, 35); ObjectCreate("Flt5", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt5",DoubleToStr(ThirdValue,Digits),14, "Arial", Red); ObjectSet("Flt5", OBJPROP_CORNER, 0); ObjectSet("Flt5", OBJPROP_XDISTANCE, 220); ObjectSet("Flt5", OBJPROP_YDISTANCE, 15); ObjectCreate("Flt6", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt6",DoubleToStr(ForthValue,Digits),14, "Arial", Red); ObjectSet("Flt6", OBJPROP_CORNER, 0); ObjectSet("Flt6", OBJPROP_XDISTANCE, 220); ObjectSet("Flt6", OBJPROP_YDISTANCE, 35); ObjectCreate("Flt7", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt7","+",14, "Arial", CadetBlue); ObjectSet("Flt7", OBJPROP_CORNER, 0); ObjectSet("Flt7", OBJPROP_XDISTANCE, 200); ObjectSet("Flt7", OBJPROP_YDISTANCE, 13); ObjectCreate("Flt8", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt8","+",14, "Arial", CadetBlue); ObjectSet("Flt8", OBJPROP_CORNER, 0); ObjectSet("Flt8", OBJPROP_XDISTANCE, 200); ObjectSet("Flt8", OBJPROP_YDISTANCE, 33); ObjectCreate("Flt9", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt9",DoubleToStr(FifthValue,Digits),14, "Arial", Coral); ObjectSet("Flt9", OBJPROP_CORNER, 0); ObjectSet("Flt9", OBJPROP_XDISTANCE, 410); ObjectSet("Flt9", OBJPROP_YDISTANCE, 40); ObjectCreate("Flt10", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt10","Float Volume =",9, "tahoma", Turquoise); ObjectSet("Flt10", OBJPROP_CORNER, 0); ObjectSet("Flt10", OBJPROP_XDISTANCE, 300); ObjectSet("Flt10", OBJPROP_YDISTANCE, 45); ObjectCreate("Flt11", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt11",DoubleToStr(SixthValue,Digits-4),14, "Arial",MediumPurple); ObjectSet("Flt11", OBJPROP_CORNER, 0); ObjectSet("Flt11", OBJPROP_XDISTANCE, 410); ObjectSet("Flt11", OBJPROP_YDISTANCE, 10); ObjectCreate("Flt12", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt12","Bars",9, "tahoma", CadetBlue); ObjectSet("Flt12", OBJPROP_CORNER, 0); ObjectSet("Flt12", OBJPROP_XDISTANCE,445); ObjectSet("Flt12", OBJPROP_YDISTANCE, 15); ObjectCreate("Flt13", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt13","Float Time =",9, "tahoma", Turquoise); ObjectSet("Flt13", OBJPROP_CORNER, 0); ObjectSet("Flt13", OBJPROP_XDISTANCE,300); ObjectSet("Flt13", OBJPROP_YDISTANCE, 15); ObjectCreate("Flt14", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt14",DoubleToStr(SeventhValue,Digits),14, "Arial",Coral); ObjectSet("Flt14", OBJPROP_CORNER, 0); ObjectSet("Flt14", OBJPROP_XDISTANCE, 410); ObjectSet("Flt14", OBJPROP_YDISTANCE, 25); ObjectCreate("Flt15", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt15","Float Vol left =",9, "tahoma", Turquoise); ObjectSet("Flt15", OBJPROP_CORNER, 0); ObjectSet("Flt15", OBJPROP_XDISTANCE,300); ObjectSet("Flt15", OBJPROP_YDISTANCE, 30); ObjectCreate("Flt16", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt16","Float Period",9, "tahoma", Turquoise); ObjectSet("Flt16", OBJPROP_CORNER, 0); ObjectSet("Flt16", OBJPROP_XDISTANCE,790); ObjectSet("Flt16", OBJPROP_YDISTANCE, 10); ObjectCreate("Flt17", OBJ_LABEL, WindowFind("Float01 DATA"), 0, 0); ObjectSetText("Flt17",DoubleToStr(EigthValue,Digits-4),14, "Arial",Coral); ObjectSet("Flt17", OBJPROP_CORNER, 0); ObjectSet("Flt17", OBJPROP_XDISTANCE, 866); ObjectSet("Flt17", OBJPROP_YDISTANCE, 8); //End Float DATA window code create_line(cvstart,high_bar,from+1,high_bar,Blue,STYLE_SOLID); // place_text("100.0",from+1,high_bar,Green); //100 fib level create_line(cvstart,Low_bar,from+1,Low_bar,Blue,STYLE_SOLID); // place_text("00.0",from+1,Low_bar,Green); //0.00 fib level // fib23=((high_bar-Low_bar)*0.236)+Low_bar; // fib38=((high_bar-Low_bar)*0.382)+Low_bar; // fib50=((high_bar-Low_bar)/2)+Low_bar; // fib62=((high_bar-Low_bar)*0.618)+Low_bar; // fib76=((high_bar-Low_bar)*0.764)+Low_bar; // dinap0=(Low_bar+fib23)/2; // dinap1=(fib23+fib38)/2; // dinap2=(fib38+fib50)/2; // dinap3=(fib50+fib62)/2; // dinap4=(fib62+fib76)/2; // dinap5=(high_bar+fib76)/2; create_line(cvstart,fib23,from+1,fib23,Green,STYLE_DASHDOTDOT); place_text("23.6",from+1,fib23,Green); create_line(cvstart,fib38,from+1,fib38,Green,STYLE_DASHDOTDOT); place_text("38.2",from+1,fib38,Green); create_line(cvstart,fib50,from+1,fib50,Red,STYLE_DASHDOTDOT,1); place_text("50.0",from+1,fib50,Red); create_line(cvstart,fib62,from+1,fib62,Green,STYLE_DASHDOTDOT); place_text("61.8",from+1,fib62,Green); create_line(cvstart,fib76,from+1,fib76,Green,STYLE_DASHDOTDOT); place_text("76.4",from+1,fib76,Green); //---- create_line(cvstart,dinap0,from+1,dinap0,MidnightBlue,STYLE_DOT); create_line(cvstart,dinap1,from+1,dinap1,MidnightBlue,STYLE_DOT); create_line(cvstart,dinap2,from+1,dinap2,MidnightBlue,STYLE_DOT); create_line(cvstart,dinap3,from+1,dinap3,MidnightBlue,STYLE_DOT); create_line(cvstart,dinap4,from+1,dinap4,MidnightBlue,STYLE_DOT); create_line(cvstart,dinap5,from+1,dinap5,MidnightBlue,STYLE_DOT); create_line(cvstart,high_bar,cvstart,Low_bar*Point,Blue,STYLE_SOLID); create_line(cvend,high_bar,cvend,Low_bar*Point,Red,STYLE_SOLID); //vert float predictions. These are only time based. //see blue histogram for real float values. //if you change "trendline" to "Vline" it will draw through oscillators too.might be fun for(int i=1;i<10;i++) { int x=cvend-(swing_time*i); create_line(x+5,high_bar,x+5,Low_bar,DarkSlateGray,STYLE_DOT); } // Comment( // "\n","high was ",bars_high," bars ago", // "\n","Low was ",bars_low," bars ago","\n", // "\n","Float time was = ",swing_time," bars", // "\n","Float Vol. left = ",FLOATV-cumulativeV, // "\n","Float Volume = ",FLOATV, // ); //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains tick volumes of each bar
Indicator Curves created:
Implements a curve of type DRAW_HISTOGRAM
Implements a curve of type DRAW_LINE
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: