RSI de la stratégie d'inversion du MACD

Auteur:ChaoZhang est là., Date: 2024-01-15 12:33:14 Je suis désolé
Les étiquettes:

img

Résumé

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.

Principe de stratégie

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.

Analyse des avantages

  • Utiliser l'indicateur MACD pour déterminer les points d'inversion de tendance
  • Utiliser l'indicateur RSI pour déterminer les niveaux de surachat/survente afin de filtrer les faux signaux
  • Combinaison d'indicateurs doubles pour des points d'achat/de vente précis
  • Prise partielle de bénéfices pour prévenir une augmentation des pertes

Analyse des risques

  • Un jugement erroné de la tendance si les paramètres MACD ne sont pas corrects
  • Les zones surachetées/survendues sont jugées inexactes si les paramètres RSI sont incorrects
  • Le potentiel de perte d'une plus grande hausse si le profit est trop agressif

Les solutions:

  • Optimiser les paramètres MACD pour trouver la meilleure combinaison
  • Optimiser les paramètres RSI pour améliorer la précision
  • Réduisez les critères de prise de bénéfices afin d'atteindre des rendements plus élevés

Directions d'optimisation

La stratégie peut également être optimisée dans les aspects suivants:

  1. Ajouter une stratégie de stop loss pour contrôler davantage les risques à la baisse
  2. Ajouter un module de dimensionnement des positions pour augmenter progressivement les positions au fur et à mesure que les prix évoluent
  3. Intégrer des modèles d'apprentissage automatique formés sur des données historiques pour améliorer encore la précision des points d'achat/de vente
  4. tentative de courir sur des délais plus courts comme 15 ou 5 minutes pour améliorer la fréquence de la stratégie

Conclusion

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 
/////////////////////////////////////////////////////////////////////////////////



Plus de