Cette stratégie est basée sur les valeurs du RSI de l'indicateur MACD pour déterminer les signaux d'achat et de vente.
Cette stratégie combine les avantages des deux indicateurs MACD et RSI.
Tout d'abord, les trois courbes de l'indicateur MACD sont calculées, y compris les lignes DIF, DEA et MACD. Ensuite, l'indicateur RSI est calculé sur la ligne MACD pour former le RSI de MACD.
Lorsque le RSI de l'indicateur MACD dépasse la fourchette de surachat de 30 ou 35, un signal d'achat est généré, indiquant que la ligne MACD est entrée dans la fourchette de surachat et que la tendance des prix a commencé à s'inverser vers le haut.
Lorsque l'indicateur RSI du MACD dépasse le niveau de surachat de 80, une partie de la position peut être vendue pour obtenir des bénéfices partiels.
Les solutions:
La stratégie peut également être optimisée dans les aspects suivants:
La philosophie de conception globale de la stratégie est claire, avec l'idée de base d'utiliser l'inversion MACD combinée au filtre RSI pour déterminer les points d'achat / vente.
/*backtest start: 2024-01-07 00:00:00 end: 2024-01-14 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © mohanee //@version=4 strategy(title="RSI of MACD Strategy[Long only]", shorttitle="RSIofMACD" , overlay=false, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=20, initial_capital=10000, currency=currency.USD) //default_qty_value=10, default_qty_type=strategy.fixed, ///////////////////////////////////////////////////////////////////////////////// // MACD Inputs /// fastLen = input(12, title="Fast Length") slowLen = input(21, title="Slow Length") sigLen = input(9, title="Signal Length") rsiLength = input(14, title="RSI of MACD Length") riskCapital = input(title="Risk % of capital", defval=10, minval=1) stopLoss=input(3,title="Stop Loss",minval=1) takeProfit=input(false, title="Take Profit") [macdLine, signalLine, _] = macd(close, fastLen, slowLen, sigLen) rsiOfMACD = rsi(macdLine, rsiLength) emaSlow = ema(close, slowLen) //drawings ///////////////////////////////////////////////////////////////////////////////// obLevelPlot = hline(80, title="Overbought / Profit taking line", color=color.blue , linestyle=hline.style_dashed) osLevelPlot = hline(30, title="Oversold / entry line", color=color.green, linestyle=hline.style_dashed) exitLinePlot = hline(15, title="Exit line", color=color.red, linestyle=hline.style_dashed) plot(rsiOfMACD, title = "rsiOfMACD" , color=color.purple) //drawings ///////////////////////////////////////////////////////////////////////////////// //Strategy Logic ///////////////////////////////////////////////////////////////////////////////// //Entry-- //Echeck how many units can be purchased based on risk manage ment and stop loss qty1 = (strategy.equity * riskCapital / 100 ) / (close*stopLoss/100) //check if cash is sufficient to buy qty1 , if capital not available use the available capital only qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1 strategy.entry(id="RSIofMACD", long=true, qty=qty1, when = ( crossover(rsiOfMACD, 30) or crossover(rsiOfMACD, 35) ) and close>=emaSlow ) bgcolor(abs(strategy.position_size)>=1 ? color.blue : na , transp=70) barcolor(abs(strategy.position_size)>=1 and ( crossover(rsiOfMACD, 30) or crossover(rsiOfMACD, 35) ) ? color.purple : abs(strategy.position_size)>=1 ? color.blue : na ) //partial exit strategy.close(id="RSIofMACD", comment="PExit Profit is "+tostring(close - strategy.position_avg_price, "###.##") , qty=strategy.position_size/3, when= takeProfit and abs(strategy.position_size)>=1 and close > strategy.position_avg_price and crossunder(rsiOfMACD,80) ) //Close All strategy.close(id="RSIofMACD", comment="Close All Profit is "+tostring(close - strategy.position_avg_price, "###.##"), when=abs(strategy.position_size)>=1 and crossunder(rsiOfMACD,15) ) //and close > strategy.position_avg_price ) //Strategy Logic /////////////////////////////////////////////////////////////////////////////////