//+------------------------------------------------------------------+ //|Harmonic leftbrain_v2.mq4 | //|Harmonic Copyright © 2006, Akuma99. | //| http://www.beginnertrader.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, Akuma99." #property link "http://www.beginnertrader.com" #property indicator_chart_window extern int fib_number=180; extern int stickyBuffer=5; extern int sets=25; extern bool override=false; extern double baseline=0.0; double base1000[200], base382[200], base236[200], base146[200], base90[200], base50[200]; int deinit() { clearBuffers(); return(0); } int start() { double bases[200]; double base; int lineWidth; if (override == false) { string sym = Symbol(); if (sym == "EURUSD") base=1.2000; if (sym == "USDCHF") base=1.2000; if (sym == "USDCAD") base=1.2000; if (sym == "GBPUSD") base=2.0000; if (sym == "GBPCHF") base=2.0000; if (sym == "EURAUD") base=2.0000; if (sym == "USDJPY") base=100.00; if (sym == "AUDJPY") base=100.00; if (sym == "CHFJPY") base=100.00; if (sym == "CADJPY") base=100.00; if (sym == "NZDJPY") base=100.00; if (sym == "EURJPY") base=120.00; if (sym == "GBPJPY") base=200.00; if (sym == "USDCNY") base=8.0000; if (sym == "EURCHF") base=1.5000; if (sym == "AUDUSD") base=1.0000; if (sym == "EURGBP") base=1.0000; if (sym == "AUDCAD") base=1.0000; if (sym == "NZDUSD") base=0.5000; for (int i=99; i>0; i--) { bases[i] = base-((fib_number*Point)*(100-i)); base1000[i] = base-((1000*Point)*(100-i)); base382[i] = base-((382*Point)*(100-i)); base236[i] = base-((236*Point)*(100-i)); base146[i] = base-((146*Point)*(100-i)); base90[i] = base-((90*Point)*(100-i)); base50[i] = base-((50*Point)*(100-i)); } bases[100] = base; base1000[100] = base; base382[100] = base; base236[100] = base; base146[100] = base; base90[100] = base; base50[100] = base; for (i=101; i<201; i++) { bases[i] = base+((fib_number*Point)*(i-100)); base1000[i] = base+((1000*Point)*(i-100)); base382[i] = base+((382*Point)*(i-100)); base236[i] = base+((236*Point)*(i-100)); base146[i] = base+((146*Point)*(i-100)); base90[i] = base+((90*Point)*(i-100)); base50[i] = base+((50*Point)*(i-100)); } baseline = bases[ArrayBsearch(bases,Close[1],WHOLE_ARRAY,0,MODE_ASCEND)]; } double b; double bottom = baseline-((fib_number*(sets+1))*Point); int s = sets*2; // draw sets above baseline for (i=1; i<=s; i++) { b = bottom+((fib_number*i)*Point); lineWidth = getStickyValue(b); ObjectCreate("Harmonic Base line "+fib_number+" "+i, OBJ_HLINE, 0, Time[40], b); ObjectSet("Harmonic Base line "+fib_number+" "+i, OBJPROP_STYLE, STYLE_SOLID); ObjectSetText("Harmonic Base line "+fib_number+" "+i, "Harmonic baseline ("+DoubleToStr(b,4)+") ["+lineWidth+"]", 8, "Tahoma", Green); if (lineWidth > 0) { ObjectSet("Harmonic Base line "+fib_number+" "+i, OBJPROP_COLOR, Red); } else { ObjectSet("Harmonic Base line "+fib_number+" "+i, OBJPROP_COLOR, LimeGreen); } } setFibonaccis(bottom); Comment("" + fib_number + " Harmonic Fibo by Akuma99 and Accrete", "\n1/2 Beat Harmonics on a " + DoubleToStr(baseline,4)," Baseline", "\nVisit beginnertrader.com and accrete.com :-)",); // "\nBaseline used: " + DoubleToStr(baseline,4)," with 1/2Beat Harmonics and 34CHLema Tunnel",); return(0); } void setFibonaccis (double b) { double f146,f236,f382,f50,f618,f764,f854,b1; int lineWidth; lineWidth = getStickyValue(f146); int i; int s = sets*2; // draw sets above baseline for (i=1; i<=s; i++) { b1 = b+((fib_number*i)*Point); f146 = b1+((fib_number*0.146)*Point); lineWidth = getStickyValue(f146); ObjectCreate("Harmonic f146"+fib_number+" "+i, OBJ_HLINE, 0, Time[40], f146); ObjectSet("Harmonic f146"+fib_number+" "+i, OBJPROP_STYLE, STYLE_SOLID); ObjectSetText("Harmonic f146"+fib_number+" "+i, "Harmonic 14.6% ("+DoubleToStr(f146,4)+") ["+lineWidth+"]", 8, "Tahoma", Purple); if (lineWidth > 0) { ObjectSet("Harmonic f146"+fib_number+" "+i, OBJPROP_COLOR, FireBrick); } else { ObjectSet("Harmonic f146"+fib_number+" "+i, OBJPROP_COLOR, Purple); } } for (i=1; i<=s; i++) { b1 = b+((fib_number*i)*Point); f236 = b1+((fib_number*0.236)*Point); lineWidth = getStickyValue(f236); ObjectCreate("Harmonic f236"+fib_number+" "+i, OBJ_HLINE, 0, Time[40], f236); ObjectSet("Harmonic f236"+fib_number+" "+i, OBJPROP_STYLE, STYLE_SOLID); ObjectSetText("Harmonic f236"+fib_number+" "+i, "Harmonic 23.6% ("+DoubleToStr(f236,4)+") ["+lineWidth+"]", 8, "Tahoma", Purple); if (lineWidth > 0) { ObjectSet("Harmonic f236"+fib_number+" "+i, OBJPROP_COLOR, Orange); } else { ObjectSet("Harmonic f236"+fib_number+" "+i, OBJPROP_COLOR, Aqua); } } for (i=1; i<=s; i++) { b1 = b+((fib_number*i)*Point); f382 = b1+((fib_number*0.382)*Point); lineWidth = getStickyValue(f382); ObjectCreate("Harmonic f382"+fib_number+" "+i, OBJ_HLINE, 0, Time[40], f382); ObjectSet("Harmonic f382"+fib_number+" "+i, OBJPROP_STYLE, STYLE_SOLID); ObjectSetText("Harmonic f382"+fib_number+" "+i, "Harmonic 38.2% ("+DoubleToStr(f382,4)+") ["+lineWidth+"]", 8, "Tahoma", Green); if (lineWidth > 0) { ObjectSet("Harmonic f382"+fib_number+" "+i, OBJPROP_COLOR, Orange); } else { ObjectSet("Harmonic f382"+fib_number+" "+i, OBJPROP_COLOR, Aqua); } } for (i=1; i<=s; i++) { b1 = b+((fib_number*i)*Point); f50 = b1+((fib_number*0.500)*Point); lineWidth = getStickyValue(f50); ObjectCreate("Harmonic f50"+fib_number+" "+i, OBJ_HLINE, 0, Time[40], f50); ObjectSet("Harmonic f50"+fib_number+" "+i, OBJPROP_STYLE, STYLE_SOLID); ObjectSetText("Harmonic f50"+fib_number+" "+i, "Harmonic 50.0% ("+DoubleToStr(f50,4)+") ["+lineWidth+"]", 8, "Tahoma", Green); if (lineWidth > 0) { ObjectSet("Harmonic f50"+fib_number+" "+i, OBJPROP_COLOR, Orange); } else { ObjectSet("Harmonic f50"+fib_number+" "+i, OBJPROP_COLOR, Aqua); } } for (i=1; i<=s; i++) { b1 = b+((fib_number*i)*Point); f618 = b1+((fib_number*0.618)*Point); lineWidth = getStickyValue(f618); ObjectCreate("Harmonic f618"+fib_number+" "+i, OBJ_HLINE, 0, Time[40], f618); ObjectSet("Harmonic f618"+fib_number+" "+i, OBJPROP_STYLE, STYLE_SOLID); ObjectSetText("Harmonic f618"+fib_number+" "+i, "Harmonic 61.8% ("+DoubleToStr(f618,4)+") ["+lineWidth+"]", 8, "Tahoma", Green); if (lineWidth > 0) { ObjectSet("Harmonic f618"+fib_number+" "+i, OBJPROP_COLOR, Orange); } else { ObjectSet("Harmonic f618"+fib_number+" "+i, OBJPROP_COLOR, Aqua); } } for (i=1; i<=s; i++) { b1 = b+((fib_number*i)*Point); f764 = b1+((fib_number*0.764)*Point); lineWidth = getStickyValue(f764); ObjectCreate("Harmonic f764"+fib_number+" "+i, OBJ_HLINE, 0, Time[40], f764); ObjectSet("Harmonic f764"+fib_number+" "+i, OBJPROP_STYLE, STYLE_SOLID); ObjectSetText("Harmonic f764"+fib_number+" "+i, "Harmonic 76.4% ("+DoubleToStr(f764,4)+") ["+lineWidth+"]", 8, "Tahoma", Green); if (lineWidth > 0) { ObjectSet("Harmonic f764"+fib_number+" "+i, OBJPROP_COLOR, Orange); } else { ObjectSet("Harmonic f764"+fib_number+" "+i, OBJPROP_COLOR, Aqua); } } for (i=1; i<=s; i++) { b1 = b+((fib_number*i)*Point); f854 = b1+((fib_number*0.854)*Point); lineWidth = getStickyValue(f764); ObjectCreate("Harmonic f854"+fib_number+" "+i, OBJ_HLINE, 0, Time[40], f854); ObjectSet("Harmonic f854"+fib_number+" "+i, OBJPROP_STYLE, STYLE_SOLID); ObjectSetText("Harmonic f854"+fib_number+" "+i, "Harmonic 85.4% ("+DoubleToStr(f854,4)+") ["+lineWidth+"]", 8, "Tahoma", Purple); if (lineWidth > 0) { ObjectSet("Harmonic f854"+fib_number+" "+i, OBJPROP_COLOR, FireBrick); } else { ObjectSet("Harmonic f854"+fib_number+" "+i, OBJPROP_COLOR, Purple); } } return(0); } int getStickyValue (double val) { int cnt=0; for (int i=0; i<201; i++) { if ((base1000[i] >= val-stickyBuffer*Point) && (base1000[i] <= val+stickyBuffer*Point) && fib_number != 1000) cnt++; if ((base382[i] >= val-stickyBuffer*Point) && (base382[i] <= val+stickyBuffer*Point) && fib_number != 382) cnt++; if ((base236[i] >= val-stickyBuffer*Point) && (base236[i] <= val+stickyBuffer*Point) && fib_number != 236) cnt++; if ((base146[i] >= val-stickyBuffer*Point) && (base146[i] <= val+stickyBuffer*Point) && fib_number != 146) cnt++; if ((base90[i] >= val-stickyBuffer*Point) && (base90[i] <= val+stickyBuffer*Point) && fib_number != 90) cnt++; if ((base50[i] >= val-stickyBuffer*Point) && (base50[i] <= val+stickyBuffer*Point) && fib_number != 50) cnt++; } return (cnt); } void clearBuffers () { int s = sets*2, i; for (i=1; i<=s; i++) { ObjectDelete("Harmonic f854"+fib_number+" "+i); ObjectDelete("Harmonic f764"+fib_number+" "+i); ObjectDelete("Harmonic f618"+fib_number+" "+i); ObjectDelete("Harmonic f50"+fib_number+" "+i); ObjectDelete("Harmonic f382"+fib_number+" "+i); ObjectDelete("Harmonic f236"+fib_number+" "+i); ObjectDelete("Harmonic f146"+fib_number+" "+i); ObjectDelete("Harmonic Base line "+fib_number+" "+i); } }
Sample
Analysis
Market Information Used:
Series array that contains close prices for each bar
Series array that contains open time of each bar
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: