//+------------------------------------------------------------------+ //| FibProgression.mq4 //+------------------------------------------------------------------+ #property indicator_chart_window extern double highLow = 0.0; extern int fibProgLines = 6; extern bool progressionUpward = FALSE; extern color color1 = Yellow; extern int lineThickness = 1; //---- int fibProgressStart = 0; bool onceThrough = FALSE; //+------------------------------------------------------------------+ //| Custom indicator initialization function //+------------------------------------------------------------------+ int init() { int i, startIndx = 0; //---- if((lineThickness < 1) || (lineThickness > 5 )) lineThickness = 1; if((fibProgLines < 2) || (fibProgLines > 20)) fibProgLines = 6; while(TRUE) { for(fibProgressStart = startIndx; ; fibProgressStart++) if(ObjectFind("Prog" + fibProgressStart) == -1) break; for(i = fibProgressStart; i < (fibProgressStart + fibProgLines); i++) if(ObjectFind("Prog" + i) == 0) break; if(i == (fibProgressStart + fibProgLines)) break; else startIndx += (fibProgressStart + fibProgLines); } //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function //+------------------------------------------------------------------+ int deinit() { int i; //---- for(i = fibProgressStart; i < (fibProgressStart + fibProgLines); i++) ObjectDelete("Prog" + i); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function //+------------------------------------------------------------------+ int start() { int i, prevAdder = 34, adder = 55; double tmp00, tmp01, tmp02; //---- if(!onceThrough) for(i = fibProgressStart; i < (fibProgressStart + fibProgLines); i++) { tmp00 = adder * Point; tmp01 = prevAdder * Point; if(progressionUpward) tmp02 = highLow + tmp00; else tmp02 = highLow - tmp00; ObjectCreate("Prog" + i, OBJ_HLINE, 0, Time[1], tmp02); ObjectSet("Prog" + i, OBJPROP_STYLE, STYLE_SOLID); ObjectSet("Prog" + i, OBJPROP_COLOR, color1); ObjectSet("Prog" + i, OBJPROP_WIDTH, lineThickness); adder += prevAdder; prevAdder = adder - prevAdder; } onceThrough = TRUE; //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: