Cette stratégie combine les indicateurs EMA et RSI pour identifier les opportunités d'ajustement à court terme dans Bitcoin. Elle utilise principalement l'EMA comme outil graphique principal et le RSI comme indicateur de jugement auxiliaire pour trouver des modèles d'ajustement évidents. Les signaux de trading sont générés lorsque le prix dépasse ou remonte au-dessus de la ligne EMA.
La stratégie utilise principalement la ligne EMA à 50 périodes et l'indicateur RSI à 25 périodes. La ligne EMA est considérée comme l'indicateur graphique principal et le RSI est utilisé pour déterminer les conditions de surachat et de survente pour aider à générer des signaux de trading. Un signal de vente est généré lorsque le prix tombe en dessous de la ligne EMA, et un signal d'achat est généré lorsque le prix dépasse la ligne EMA et que l'indicateur RSI montre un signal de non-surachat (valeur RSI inférieure à 70).
Après avoir entré dans une transaction, la stratégie définit également les niveaux de stop loss et de take profit. La distance de stop loss est réglable, par défaut à 5,1%; la distance de take profit est également réglable, par défaut à 9,6%. Cela limite efficacement la perte maximale par transaction.
En résumé, la stratégie repose principalement sur des modèles de ligne EMA, complétés par des indicateurs RSI pour éviter les conditions de surachat et de survente, tout en ayant des contrôles de stop loss et de prise de profit.
Les principaux avantages de cette stratégie sont les suivants:
Les signaux de stratégie sont relativement clairs sans trop d'entrées erronées aléatoires.
Ce système limite efficacement les pertes par transaction et constitue un outil très important de contrôle des risques.
Les paramètres de stratégie peuvent être optimisés. La longueur de l'EMA, la longueur du RSI et plus sont des paramètres réglables. Les utilisateurs peuvent trouver les ensembles de paramètres optimaux pour différentes conditions de marché.
La stratégie permet de définir une plage de dates de backtest en interne pour vérifier les performances.
La stratégie comporte également certains risques, principalement:
Bien que les stops soient définis, BT Bitcoin a souvent de grandes fluctuations de prix qui peuvent entraîner des stops conduisant à des pertes plus importantes que prévu.
Risque de tirage: la stratégie ne prend pas en compte le contrôle global du tirage, car il peut y avoir des tirages pendant des périodes d'ajustement prolongées.
Les signaux à court terme ont tendance à sous-performer, ce qui conduit à un arrêt des bonnes transactions.
Pour contrôler et atténuer ces risques:
Permettre des plages d'arrêt plus larges.
Ajouter d'autres filtres d'indicateurs. Des indicateurs de tendance peuvent être ajoutés pour éviter de faire des transactions pendant des périodes de consolidation prolongées.
Optimiser les paramètres. Les paramètres de test sont définis dans différentes conditions de marché. Les paramètres de commutation sont définis lorsque des tendances fortes émergent pour améliorer la qualité du signal.
Il y a encore des possibilités d'optimisation de cette stratégie:
Ajoutez un contrôle global du retrait, vous pouvez définir un pourcentage maximum de retrait, par exemple 20%, qui met en pause la négociation lorsqu'il est atteint pour limiter les pertes.
Limiter la fréquence d'entrée. Peut limiter le nombre de transactions par unité de temps, par exemple 2 transactions par heure maximum, pour éviter le sur-trading.
Optimiser les paramètres. Tester les combinaisons de paramètres pour différentes conditions de marché. Créer des modèles de paramètres pour basculer entre en temps réel correspondant aux conditions actuelles.
Intégrer la tendance, la volatilité et d'autres indicateurs pour créer des règles d'entrée plus complètes dans le système de négociation.
Dans l'ensemble, la stratégie repose principalement sur des modèles d'ajustement à court terme de BT Bitcoin, en utilisant l'EMA et le RSI pour générer des signaux de trading clairs, tout en ayant des contrôles de stop loss et de prise de profit.
/*backtest start: 2023-11-06 00:00:00 end: 2023-12-06 00:00:00 period: 1h basePeriod: 15m 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/ // © mmoiwgg //@version=4 strategy(title="EMA+RSI Pump & Drop Swing Sniper (With Alerts & SL+TP) - Strategy", shorttitle="EMA+RSI Swing Strategy", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=50, minval=0) emarsiSource = input(close, title="EMA+RSI Source") condSource = input(high, title="Long+Short Condition Source") emaVal = ema(emarsiSource, emaLength) rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0) rsiVal = rsi(emarsiSource, rsiLength) //Safety emaLength2 = input(title="Safety EMA Length", type=input.integer, defval=70, minval=0) emaSource2 = input(close, title="Safety EMA Source") ema = ema(emaSource2, emaLength2) emaColorSource2 = close emaBSource2 = close // Backtest+Dates FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2019, title = "From Year", minval = 2017) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest end window window() => time >= start and time <= finish ? true : false // create function - add window() to entry/exit/close // Conditions exit_long = crossover(emaVal, condSource) longCond = crossunder(emaVal, condSource) and close > ema //Stoploss + TakeProfit sl = input(0.051, step=0.001, title="Stop Loss") tp = input(0.096, step=0.001, title="Take Profit") // Plots Colors colors = emarsiSource > emaVal and rsiVal > 14 ? color.green : color.red emaColorSource = input(close, title="Line Color Source") emaBSource = input(close, title="Line Color B Source") // Plots plot(ema, color=emaColorSource2[1] > ema and emaBSource2 > ema ? color.green : color.red, linewidth=1) plot(emaVal, color=emaColorSource[1] > emaVal and emaBSource > emaVal ? color.green : color.red, linewidth=3) plotcandle(open, high, low, close, color=colors) //Strategy Entry+Exits strategy.entry("long",1,when=window() and longCond) strategy.close("long",when=window() and exit_long) strategy.exit("long tp/sl", "long", profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick)