Cette stratégie utilise les indicateurs de convergence moyenne mobile (MACD) et d'indice de force relative (RSI) pour identifier les signaux de trading pour les crypto-monnaies.
Calculer l'EMA à 12 jours et l'EMA à 26 jours comme moyennes mobiles à court et à long terme.
Calculer la différence entre les courts et les longs EMA sous forme d'histogramme MACD.
Calculer l'EMA à 9 jours du MACD comme ligne de signal.
Calculer le RSI de 14 jours pour juger des niveaux de surachat/survente.
Afficher le signal d'achat lorsque le MACD traverse au-dessus de la ligne de signal et que le RSI est supérieur à 81.
Affichage du signal de vente lorsque le MACD traverse la ligne de signal et que le RSI est inférieur à 27.
Utiliser le module de stratégie intégré pour les entrées et les sorties.
Le MACD peut identifier les tendances et les changements, le RSI montre les niveaux de surachat/survente.
Le MACD au-dessus/au-dessous de la ligne zéro indique la direction/la force de la tendance à court terme par rapport à la tendance à long terme.
L'indicateur RSI à des niveaux élevés/faibles indique une possible surchauffe/survente.
Des signaux de trading clairs et simples, faciles à exécuter systématiquement.
Paramètres personnalisables pour l'optimisation et l'adaptation aux différentes conditions du marché.
Les données MACD et RSI, sujettes à de fausses ruptures et anomalies, peuvent générer des signaux incorrects.
Les paramètres fixes peuvent ne pas s'adapter à l'évolution des marchés et doivent être optimisés.
Les signaux peuvent être retardés, incapables de négocier à des moments cruciaux.
Seulement long/short, incapable de tirer profit de divers marchés.
Testez différentes combinaisons de paramètres pour trouver les paramètres optimaux.
Ajoutez des filtres pour éviter les faux échanges.
Ajouter un stop loss pour limiter les pertes sur les marchés unilatéraux.
Gérer la taille des positions, l'augmentation des tendances et la diminution des fourchettes.
Combinez avec d'autres indicateurs pour obtenir des signaux plus précis.
Test sur différents instruments et délais.
Cette stratégie utilise les forces complémentaires du MACD et du RSI pour identifier les tendances et les signaux de trading. Les paramètres de réglage fin et l'ajout de filtres peuvent améliorer la robustesse et la rentabilité.
/*backtest start: 2023-09-11 00:00:00 end: 2023-09-12 04:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Revision: 5 // Author: @Hugo_Moriceau //study("Thesis_EMLYON_Withdate-strategies-Daily_Crypto_Moriceau_indicator",overlay=true) // Pyramide 10 order size 100, every tick strategy("Daily_Crypto_Moriceau_indicator",overlay=true) // === GENERAL INPUTS === fast = 12, slow = 26 fastMA = ema(close, fast) slowMA = ema(close, slow) macd = fastMA - slowMA signal = sma(macd, 9) rsi = rsi(close,14) tradeInvert = input(defval = false, title = "Invert Trade Direction?") // === LOGIC === // is fast ma above slow ma? aboveBelow = fastMA >= slowMA ? true : false // are we inverting our trade direction? tradeDirection = tradeInvert ? aboveBelow ? false : true : aboveBelow ? true : false // === Plot Setting === //plot(fastMA,color=red) //plot(slowMA,color=blue) //barcolor(color=iff(fastMA > slowMA, yellow, na)) //barcolor(color=iff(fastMA < slowMA, black, na)) barcolor(color=iff(macd > 0.12*close , fuchsia, na)) barcolor(color=iff(macd < -0.1*close , lime, na)) dataS= macd > 0.125 and rsi>81 and fastMA > slowMA dataB= macd < -0.1 and rsi<27 and fastMA< slowMA plotchar(dataB, char='B',color=black,size = size.tiny,location = location.belowbar,transp= 0) plotchar(dataS, char='S',color=black,size = size.tiny,location = location.abovebar,transp= 0) // === BACKTEST RANGE === FromMonth = input(defval = 01, title = "From Month", minval = 1) FromDay = input(defval = 01, title = "From Day", minval = 1) FromYear = input(defval = 2017, title = "From Year", minval = 2014) ToMonth = input(defval = 2, title = "To Month", minval = 1) ToDay = input(defval = 10, title = "To Day", minval = 1) ToYear = input(defval = 2019, title = "To Year", minval = 2018) // === STRATEGY RELATED INPUTS ===+ // the risk management inputs inpTakeProfit = input(defval = 20000, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 1500, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 100, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) // === RISK MANAGEMENT VALUE PREP === // if an input is less than 1, assuming not wanted so we assign 'na' value to disable it. useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na // === STRATEGY - LONG POSITION EXECUTION === enterLong() => not tradeDirection[1] and tradeDirection exitLong() => tradeDirection[1] and not tradeDirection strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in strategy.close(id = "Long", when = exitLong()) // ...and when to get out // === STRATEGY - SHORT POSITION EXECUTION === enterShort() => tradeDirection[1] and not tradeDirection exitShort() => not tradeDirection[1] and tradeDirection strategy.entry(id = "Short", long = false, when = enterShort()) strategy.close(id = "Short", when = exitShort()) // === STRATEGY RISK MANAGEMENT EXECUTION === // finally, make use of all the earlier values we got prepped strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset) strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)