//+--------------------------------------------------------------------------+ //| Sonic_StoIK.mq4 | //| Copyright © 2008, Sonicdeejay | //| | //+--------------------------------------------------------------------------+ #property copyright "Copyright © 2008, DGC & Sonic" #property link "http://tinyurl.com/497h3s/" #include <WinUser32.mqh> #property indicator_separate_window #property indicator_buffers 4 #property indicator_color1 Brown #property indicator_width1 2 #property indicator_color2 DodgerBlue #property indicator_width2 2 #property indicator_color3 Red #property indicator_width3 2 #property indicator_color4 White #property indicator_width4 1 #property indicator_style4 2 #property indicator_level1 0 #property indicator_minimum -1.2 #property indicator_maximum 1.2 extern string SEP1 = "----SIGNAL CONTROLS----"; extern bool Show_Sonic_Signals = true; extern bool Show_AES_Signals = false; extern string SEP2 = "----FILTER CONTROLS----"; extern bool Show_SMA_Filter = false; extern int SMA_Filter_Period = 200; extern bool Show_RSI_Filter = false; extern int RSI_Filter_Period = 45; /*extern string SEP3 = "----ALERT CONTROLS----"; extern bool Popup_Alerts_On = false; extern bool Audio_Alerts_On = false; extern bool EMail_Alerts_On = false; extern int Alert_Signal = 0; extern bool Alert_SMA_Filtered = false; extern bool Alert_RSI_Filtered = false; */ double OzFX_Regular[]; double OzFX_AES[]; double Filter_SMA[]; double Filter_RSI[]; double ItrendLevel = 0.0018; //iTrend line must be above this level int iLastRegular; double dLastAES; int k; bool bAlertSounded; int init() { SetIndexStyle(0, DRAW_HISTOGRAM); SetIndexBuffer(0, OzFX_Regular); SetIndexStyle(1, DRAW_HISTOGRAM); SetIndexBuffer(1, OzFX_AES); SetIndexStyle(2, DRAW_LINE); SetIndexBuffer(2, Filter_SMA); SetIndexStyle(3, DRAW_LINE); SetIndexBuffer(3, Filter_RSI); iLastRegular = 0; dLastAES = 0; bAlertSounded = false; return(0); } int start() { for (k = Bars - 205; k >= 0; k --) { //--- Stochastics double sMain = iStochastic(NULL,0,14,5,5,MODE_SMA,0,MODE_MAIN,k); double sSignal = iStochastic(NULL,0,14,5,5,MODE_SMA,0,MODE_SIGNAL,k); double sMainprev = iStochastic(NULL,0,14,5,5,MODE_SMA,0,MODE_MAIN,k+1); double sSignalprev = iStochastic(NULL,0,14,5,5,MODE_SMA,0,MODE_SIGNAL,k+1); //--- i-Trend Index double iTredn1 =iCustom(NULL, 0, "i_Trend", 0, 0, 0, 20, 2, 13, 300, 0, k); //green double iTredn2 =iCustom(NULL, 0, "i_Trend", 0, 0, 0, 20, 2, 13, 300, 1, k); //red //--- RSI double sRSI = iRSI(NULL,0,14,0,k); double sRSIL1 = 51; double sRSIL2 = 49; //DeMaker and FI double DEM = iDeMarker(NULL, 0, 14, k); double DEML = 0.5; double FI = iForce(NULL, 0, 14, 1, PRICE_CLOSE, k); /*---------------------*/ /* OZFX REGULAR CODE */ /*---------------------*/ OzFX_Regular[k] = 0; if ((sMain>sSignal)&& (sMain>sMainprev)&&(iTredn1>ItrendLevel && iTredn1>iTredn2)&& (sRSI>=sRSIL1)&&(DEM>DEML)&&(FI>0)) // BUY { if (iLastRegular != 1) OzFX_Regular[k] = 1; iLastRegular = 1; } if ((sMain<sSignal)&&(sMain<sMainprev)&&(iTredn2>ItrendLevel && iTredn2>iTredn1)&& (sRSI<=sRSIL2)&&(DEM<DEML)&&(FI<0)) // SELL { if (iLastRegular != -1) OzFX_Regular[k] = -1; iLastRegular = -1; } if (Show_Sonic_Signals == false) OzFX_Regular[k] = 0.0; /*-----------------*/ /* OZFX AES CODE */ /*-----------------*/ OzFX_AES[k] = 0; if (/*iAC(Symbol(), 0, k) > 0 &&*/ iAC(Symbol(), 0, k) > iAC(Symbol(), 0, k + 1) && iStochastic(Symbol(), 0, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, k) > iStochastic(Symbol(), 0, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, k) /*&& iStochastic(Symbol(), 0, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, k + 1) < iStochastic(Symbol(), 0, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, k + 1) && iAO(Symbol(), 0, k) > iAO(Symbol(), 0, k + 1)*/) { if (dLastAES != 0.7) OzFX_AES[k] = 0.7; dLastAES = 0.7; } if (/*iAC(Symbol(), 0, k) < 0 &&*/ iAC(Symbol(), 0, k) < iAC(Symbol(), 0, k + 1) && iStochastic(Symbol(), 0, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, k) < iStochastic(Symbol(), 0, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, k) /*&& iStochastic(Symbol(), 0, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, k + 1) > iStochastic(Symbol(), 0, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, k + 1) && iAO(Symbol(), 0, k) < iAO(Symbol(), 0, k + 1)*/) { if (dLastAES != -0.7) OzFX_AES[k] = -0.7; dLastAES = -0.7; } if (Show_AES_Signals == false) OzFX_AES[k] = 0.0; /*-------------------*/ /* SMA FILTER CODE */ /*-------------------*/ Filter_SMA[k] = 0; if (Close[k] > iMA(Symbol(), 0, SMA_Filter_Period, 0, MODE_SMA, PRICE_CLOSE, k)) Filter_SMA[k] = 1; if (Close[k] <= iMA(Symbol(), 0, SMA_Filter_Period, 0, MODE_SMA, PRICE_CLOSE, k)) Filter_SMA[k] = -1; if (Show_SMA_Filter == false) Filter_SMA[k] = EMPTY_VALUE; /*-------------------*/ /* RSI FILTER CODE */ /*-------------------*/ Filter_RSI[k] = 0; if (50 > iRSI(Symbol(), 0, RSI_Filter_Period, PRICE_CLOSE, k)) Filter_RSI[k] = -1; if (50 <= iRSI(Symbol(), 0, RSI_Filter_Period, PRICE_CLOSE, k)) Filter_RSI[k] = 1; if (Show_RSI_Filter == false) Filter_RSI[k] = EMPTY_VALUE; } return(0); }
Sample
Analysis
Market Information Used:
Series array that contains close prices for each bar
Indicator Curves created:
Implements a curve of type DRAW_HISTOGRAM
Implements a curve of type DRAW_LINE
Indicators Used:
Stochastic oscillator
Relative strength index
DeMarker indicator
Force index
Bill Williams Accelerator/Decelerator oscillator
Bill Williams Awesome oscillator
Moving average indicator
Custom Indicators Used:
i_Trend
Order Management characteristics:
Other Features: