另一种指标是震荡指标。 震荡指标在单独的窗口中绘制,它们在高价和低价极值之间震荡。 它们以中性轴(通常为 0)为中心,或者以上限或下限(例如 0 和 100)为界。
震荡指标的例子包括动量、随机指标和 RSI。 在这篇 MQL4 振荡器指标 EA 文章中了解如何对 Expert Advisor 进行编程以使用最流行的振荡器进行交易。
振荡器指示超买和超卖水平。 虽然它们可以用作趋势指标,但它们通常用于定位待逆转的区域。 这些用于产生反趋势信号。
MACD(1) | |
---|---|
笔记 | //买入:MACD 上升到信号线上方 //卖出:MACD跌破信号线 |
Extern | int fastmacd=12; //Averaging period for calculation of a quick MA extern int slowmacd=26; //Averaging period for calculation of a slow MA extern int signalmacd=9; //Averaging period for calculation of a signal line |
Indicator Calling | macdmaincurr=iMACD(NULL,0,fastmacd,slowmacd,signalmacd,0,MODE_MAIN,0); macdmainprev=iMACD(NULL,0,fastmacd,slowmacd,signalmacd,0,MODE_MAIN,1); macdsigcurr=iMACD(NULL,0,fastmacd,slowmacd,signalmacd,0,MODE_SIGNAL,0); macdsigprev=iMACD(NULL,0,fastmacd,slowmacd,signalmacd,0,MODE_SIGNAL,1); |
BuyCond | if (macdmainprev < <macdsignalprevious&&macdmaincurrent>macdsignalprev && macdmaincurr >= macdsignalcurr) </macdsignalprevious&&macdmaincurrent> |
SellCond | if (macdmainprev > macdsignalprev && macdmaincurr <=macdsignalcurr) |
MACD(2) | |
---|---|
Note | //Buy: crossing 0 upwards //Sell: crossing 0 downwards |
Extern | int fastmacd=12; //Averaging period for calculation of a quick MA extern int slowmacd=26; //Averaging period for calculation of a slow MA extern int signalmacd=9; //Averaging period for calculation of a signal line |
Indicator Calling | macdmaincurr=iMACD(NULL,0,fastmacd,slowmacd,signalmacd,0,MODE_MAIN,0); macdmainprev=iMACD(NULL,0,fastmacd,slowmacd,signalmacd,0,MODE_MAIN,1); macdsigcurr=iMACD(NULL,0,fastmacd,slowmacd,signalmacd,0,MODE_SIGNAL,0); macdsigprev=iMACD(NULL,0,fastmacd,slowmacd,signalmacd0,MODE_SIGNAL,1); |
BuyCond | if (macdmainprev < 0<macdsignalprevious&&macdmaincurrent> && macdmaincurr >= 0) </macdsignalprevious&&macdmaincurrent> |
SellCond | if (macdmainprev > 0 && macdmaincurr <= 0) |
RSI | |
---|---|
Note | //Buy: crossing 30 upwards //Sell: crossing 70 downwards |
Extern | rsiu = 14; // averaging period lowerband = 30; upperband = 70; |
Indicator Calling | rsicurrent=iRSI(NULL,0,rsiu,PRICE_CLOSE,0); rsiprevious=iRSI(NULL,0,rsiu,PRICE_CLOSE,1); |
BuyCond | if (rsiprevious<lowerband&&rsicurrent>=lowerband) |
SellCond | if (rsiprevious>upperband&&rsicurrent<=upperband) |
Stochastics Occilator(1) | |
---|---|
Note | //Buy: main line rises above 20 after it fell below this point //Sell: main line falls lower than 80 after it rose above this point |
Extern | stok = 5; // Period(amount of bars) for the calculation of %K line stod = 3; //Averaging period for the calculation of %D line stslow =3; // Value of slowdown mamode = 1; lowerband = 20; upperband = 80; |
Indicator Calling | stocurrent=iStochastic(NULL,0,stok,stod,stslow,mamode,0,MODE_MAIN,0); stoprevious=iStochastic(NULL,0,stok,stod,stslow,mamode,0,MODE_MAIN,1); |
BuyCond | if (stoprevious<lowerband&&stocurrent>=lowerband) |
SellCond | if (stoprevious>upperband&&stocurrent<=upperband) |
Stochastics Occilator(2) | |
---|---|
Note | //Buy: main line goes above the signal line //Sell: signal line goes above the main line |
Extern | stok = 5; // Period(amount of bars) for the calculation of %K line stod = 3; //Averaging period for the calculation of %D line stslow =3; // Value of slowdown mamode = 1; lowerband = 20; upperband = 80; |
Indicator Calling | stomaincurr=iStochastic(NULL,0,stok,stod,stslow,mamode,0,MODE_MAIN,0); stomainprev=iStochastic(NULL,0,stok,stod,stslow,mamode,0,MODE_MAIN,1); stosignalcurr=iStochastic(NULL,0,stok,stod,stslow,mamode,0,MODE_SIGNAL,0); stosignalprev=iStochastic(NULL,0,stok,stod,stslow,mamode,0,MODE_SIGNAL,1); |
BuyCond | if (stomainprev<stosignalprev&&stomaincurr>=stosignalcurr) |
SellCond | if (stomainprev>stosignalprev&&stomaincurr<=stosignalcurr) |
Williams % Range | |
---|---|
Note | //Buy: crossing -80 upwards //Sell: crossing -20 downwards |
Extern | willperiod = 14; // averaging period lowerband = -20; upperband = -80; |
Indicator Calling | willcurrent=iWPR(NULL,0,willperiod,0); willprevious=iWPR(NULL,0,willperiod,1); |
BuyCond | if (willprevious<upperband>willcurrent>= upperband) |
SellCond | if (willprevious>lowerband&&willcurrent<=lowerband) |
Force Index | |
---|---|
Note | /Flag 14 is 1, when FI recommends to buy (i.e. FI<0) //Flag 14 is -1, when FI recommends to sell (i.e. FI>0) |
Extern | forceu = 2; // averaging period |
Indicator Calling | forcecurrent=iForce(NULL,0,forceu,MODE_SMA,PRICE_CLOSE,0); |
BuyCond | if (forcecurrent<0) |
SellCond | if (forcecurrent>0) |