//+------------------------------------------------------------------+ //| Fx10 setup | //| Copyright © 2000-2007, MetaQuotes Software Corp. | //| http://www.metaquotes.ru | //+------------------------------------------------------------------+ //revised: Tartan //mod2008tsd ki #property copyright "palanka è ïðèìàçàâøèéñÿ ê íåìó Òàðòàí" #property link "" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 LimeGreen #property indicator_color2 Red //---- extern double ParmMult=2.0; // multiply the standard parameters by this scale factor extern int fastMA=5; extern int fastMAmode=3; extern int fastMAprice=0; extern int slowMA=10; extern int slowMAmode=3; extern int slowMAprice=0; extern int RSIperiod=14; extern int StoK=5; extern int StoD=3; extern int StoSl=3; extern int MacdFastMA=12; extern int MacdSlowMA=26; extern int MacdSigMA=9; extern double del=30; extern string note_Price_ = "0C,1O 2H3L,4Md 5Tp 6WghC: Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6"; extern string note_MAmode = "SMA0 EMA1 SMMA2 LWMA3"; //---- int shift,ks,kl; bool first=true; int prevbars=0; bool RsiUp=false, RsiDown=false; double signal_long[]; double signal_short[]; bool up=false; bool down=false; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { SetIndexBuffer(0,signal_long); SetIndexBuffer(1,signal_short); IndicatorShortName("Fx10Setup"); SetIndexEmptyValue(0, 0.0) ; SetIndexEmptyValue(1, 0.0) ; // SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,241); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,242); // IndicatorDigits(1); //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { if (prevbars==Bars) return(0); // check for additional bars loading or total reloading if ((Bars < prevbars) || (Bars - prevbars > 1)) first=true; //---- prevbars=Bars; if (first) { int limit= MathMax(fastMA,slowMA); limit= MathMax(limit,MacdSlowMA); if (Bars<=limit * ParmMult) // if (Bars<=26 * ParmMult) return(0); first=false; } shift=Bars; while(shift>=0) { signal_long[shift]=0.0; signal_short[shift]=0.0; //---- double fast_MA=iMA(NULL, 0, fastMA * ParmMult, 0, fastMAmode, fastMAprice, shift); double slow_MA=iMA(NULL, 0, slowMA * ParmMult, 0, slowMAmode, slowMAprice, shift); //---- if (fast_MA > slow_MA && kl==0) { RsiUp=iRSI(NULL, 0, RSIperiod * ParmMult, PRICE_CLOSE, shift)>=55.0; //and iRSI(p1, 1) > iRSI(p1, 2) double Stoch0=iStochastic(NULL, 0, StoK*ParmMult, StoD*ParmMult, StoSl*ParmMult, MODE_SMA, PRICE_CLOSE, MODE_MAIN, shift); // double Stoch1 = iStochastic(NULL, 0, 5*ParmMult, 3*ParmMult, 3*ParmMult, MODE_SMA, PRICE_CLOSE, MODE_MAIN, shift + 1); double StochSig0=iStochastic(NULL, 0, StoK*ParmMult, StoD*ParmMult, StoSl*ParmMult, MODE_SMA, PRICE_CLOSE, MODE_SIGNAL, shift); bool StochUp=(Stoch0 > StochSig0); //and Stoch0 > Stoch1 //and Stoch0 >= StochHigh double MacdCurrent=iMACD(NULL, 0, MacdFastMA*ParmMult, MacdSlowMA*ParmMult, MacdSigMA*ParmMult, PRICE_CLOSE, MODE_MAIN, shift); // double MacdPrevious = iMACD(NULL, 0, 12*ParmMult, 26*ParmMult, 9*ParmMult, PRICE_CLOSE, MODE_MAIN, shift + 1); double MacdSig0=iMACD(NULL, 0, MacdFastMA*ParmMult, MacdSlowMA*ParmMult, MacdSigMA*ParmMult, PRICE_CLOSE, MODE_SIGNAL, shift); bool MacdUp=(MacdCurrent > MacdSig0); //and MacdCurrent > MacdPrevious //and MacdCurrent > 50 if (StochUp && RsiUp && MacdUp) { kl=1;ks=0; signal_long[shift]=Low[shift] - del*Point; } else kl=0; } else if (fastMA < slowMA && ks==0) { RsiDown=iRSI(NULL, 0, RSIperiod * ParmMult, PRICE_CLOSE, shift)<=45.0; //and iRSI(p1, 2) > iRSI(p1, 1) Stoch0=iStochastic(NULL, 0, StoK*ParmMult, StoD*ParmMult, StoSl*ParmMult, MODE_SMA, PRICE_CLOSE, MODE_MAIN, shift); // double Stoch1 = iStochastic(NULL, 0, 5*ParmMult, 3*ParmMult, 3*ParmMult, MODE_SMA, PRICE_CLOSE, MODE_MAIN, shift + 1); StochSig0=iStochastic(NULL, 0, StoK*ParmMult, StoD*ParmMult, StoSl*ParmMult, MODE_SMA, PRICE_CLOSE, MODE_SIGNAL, shift); bool StochDown=(Stoch0 < StochSig0); //and Stoch0 < Stoch1 //and Stoch0 <= StochLow MacdCurrent=iMACD(NULL, 0, MacdFastMA*ParmMult, MacdSlowMA*ParmMult, MacdSigMA*ParmMult, PRICE_CLOSE, MODE_MAIN, shift); // double MacdPrevious = iMACD(NULL, 0, 12*ParmMult, 26*ParmMult, 9*ParmMult, PRICE_CLOSE, MODE_MAIN, shift + 1); MacdSig0=iMACD(NULL, 0, MacdFastMA*ParmMult, MacdSlowMA*ParmMult, MacdSigMA*ParmMult, PRICE_CLOSE, MODE_SIGNAL, shift); bool MacdDown=(MacdCurrent < MacdSig0); //and MacdCurrent < MacdPrevious //and MacdCurrent < 50 if (StochDown && RsiDown && MacdDown) { ks=1;kl=0; signal_short[shift]=High[shift] + del*Point; } else ks=0; } shift--; } //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains the lowest prices of each bar
Series array that contains the highest prices of each bar
Indicator Curves created:
Implements a curve of type DRAW_ARROW
Indicators Used:
Moving average indicator
Relative strength index
Stochastic oscillator
MACD Histogram
Custom Indicators Used:
Order Management characteristics:
Other Features: