La stratégie de base de SuperTrend est une stratégie de trading algorithmique fiable et rentable basée sur trois indicateurs puissants: SuperTrend (ATR), RSI et EMA. Elle vise à identifier la direction et la force des tendances du marché, à entrer sur le marché à des points optimaux et à sortir lorsque l'arrêt de la perte ou le profit est atteint.
La stratégie utilise l'indicateur SuperTrend pour déterminer si le prix est en tendance haussière ou baissière.
Le RSI est utilisé pour détecter les conditions de surachat / survente. Au-dessus de 50 est haussier et en dessous de 50 baissier.
L'EMA évalue la direction de la tendance à long terme. Au-dessus de l'EMA est la tendance haussière, en dessous est la tendance baissière. Il confirme la direction du commerce.
Les signaux de négociation sont les suivants:
Entrée longue: prix supérieur à SuperTrend et RSI supérieur à 50 et prix supérieur à EMA Sortie longue: le prix se ferme en dessous de SuperTrend ou Stop loss ou Take profit
Entrée courte: prix inférieur à SuperTrend et RSI inférieur à 50 et prix inférieur à EMA Sortie courte: le prix se ferme au-dessus de SuperTrend ou Stop loss ou Take profit
Le stop loss et le take profit peuvent être définis en pourcentage du prix d'entrée.
Les avantages de cette stratégie:
Combinaison de 3 indicateurs, détection fiable de tendance
SuperTrend identifie clairement la tendance haussière et la tendance baissière
Le RSI filtre les faux écarts, évite les surachats/survente
L' EMA confirme l' orientation générale de la tendance
Signaux de trading simples et clairs, faciles à suivre
Période ATR personnalisable, paramètres RSI et période EMA à optimiser
Arrêter les pertes et réaliser des bénéfices pour contrôler le risque
Mode long uniquement ou mode court uniquement pour différents marchés
Applicable à n'importe quelle période
Les principaux risques:
Le retard de SuperTrend dans l'inversion de tendance peut entraîner des pertes.
Les petits arrêts-pertes/prêts-gains ne parviennent pas à attraper les grands mouvements
L' EMA ne peut détecter les points de renversement de tendance
Aucune détection de divergence
Le risque de volatilité et le risque de temps
Les solutions:
Ajouter d'autres indicateurs pour détecter l'inversion
Optimiser le stop loss/take profit
Ajouter d'autres indicateurs à l'inversion au comptant
Incorporer des indicateurs de divergence
Ajustez le dimensionnement de la position
Façons d'optimiser la stratégie:
Optimiser la période ATR pour la sensibilité et la stabilité
Optimiser les paramètres RSI pour une plus grande précision
Optimiser la période EMA pour les différents marchés
Ajouter des indicateurs tels que MACD, KD pour la détection de l'inversion
Ajouter des indicateurs de divergence
Utilisez les ondes d'Elliott pour repérer les inversions
Utiliser l'apprentissage automatique pour optimiser dynamiquement les paramètres
Des algorithmes avancés de stop loss comme le stop loss de suivi
Optimiser la taille des positions pour les différentes volatilités
Tester des conditions d'entrée et de sortie plus complexes
La stratégie de base de SuperTrend intègre SuperTrend, RSI et EMA dans un système de suivi de tendance simple et pratique. Il identifie clairement la direction de la tendance, filtre les faux signaux et confirme la tendance globale. règles d'entrée, de sortie claires et configuration stop loss/take profit. facile à utiliser, rentabilité fiable. applicable à tout laps de temps. Il peut être optimisé en ajustant les paramètres, en ajoutant des outils d'inversion, en améliorant les arrêts pour devenir un système de trading plus puissant.
/*backtest start: 2023-09-10 00:00:00 end: 2023-10-10 00:00:00 period: 2h 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/ // © JS_TechTrading //@version=5 // strategy("Supertrend", overlay=true,default_qty_type =strategy.percent_of_equity,default_qty_value = 1,process_orders_on_close = false) // group string//// var string group_text000="Choose Strategy" var string group_text0="Supertrend Settings" var string group_text0000="Ema Settings" var string group_text00="Rsi Settings" var string group_text1="Backtest Period" var string group_text2="Trade Direction" // var string group_text3="Quantity Settings" var string group_text4="Sl/Tp Settings" //////////////////// option_ch=input.string('Pullback',title = "Type Of Strategy",options =['Pullback','Simple']) //atr period input supertrend atrPeriod = input(10, "ATR Length",group = group_text0) factor = input.float(3.0, "Factor", step = 0.01,group=group_text0) [supertrend, direction] = ta.supertrend(factor, atrPeriod) bodyMiddle = plot((open + close) / 2, display=display.none) upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr) downTrend = plot(direction < 0? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr) fill(bodyMiddle, upTrend, color.new(color.green, 90), fillgaps=false) fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false) long=direction < 0 ? supertrend : na short=direction < 0? na : supertrend longpos=false shortpos=false longpos :=long?true :short?false:longpos[1] shortpos:=short?true:long?false:shortpos[1] fin_pullbuy= (ta.crossunder(low[1],long) and long and high>high[1]) fin_pullsell=(ta.crossover(high[1],short) and short and low<low[1]) //Ema 1 on_ma=input.bool(true,"Ema Condition On/Off",group=group_text0000) ma_len= input.int(200, minval=1, title="Ema Length",group = group_text0000) ma_src = input.source(close, title="Ema Source",group = group_text0000) ma_out = ta.ema(ma_src, ma_len) ma_buy=on_ma?close>ma_out?true:false:true ma_sell=on_ma?close<ma_out?true:false:true // rsi indicator and condition // Get user input en_rsi = input.bool(true,"Rsi Condition On/Off",group = group_text00) rsiSource = input(title='RSI Source', defval=close,group = group_text00) rsiLength = input(title='RSI Length', defval=14,group = group_text00) rsiOverbought = input(title='RSI BUY Level', defval=50,group = group_text00) rsiOversold = input(title='RSI SELL Level', defval=50,group = group_text00) // Get RSI value rsiValue = ta.rsi(rsiSource, rsiLength) rsi_buy=en_rsi?rsiValue>=rsiOverbought ?true:false:true rsi_sell=en_rsi?rsiValue<=rsiOversold?true:false:true // final condition buy_cond=option_ch=='Simple'?long and not(longpos[1]) and rsi_buy and ma_buy:option_ch=='Pullback'?fin_pullbuy and rsi_buy and ma_buy:na sell_cond=option_ch=='Simple'?short and not(shortpos[1]) and rsi_sell and ma_sell:option_ch=='Pullback'?fin_pullsell and rsi_sell and ma_sell:na //backtest engine start = input(timestamp('2005-01-01'), title='Start calculations from',group=group_text1) end=input(timestamp('2045-03-01'), title='End calculations',group=group_text1) time_cond =true // Make input option to configure trade direction tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Both',group = group_text2) // Translate input into trading conditions longOK = (tradeDirection == "Long") or (tradeDirection == "Both") shortOK = (tradeDirection == "Short") or (tradeDirection == "Both") // strategy start if buy_cond and longOK and time_cond and strategy.position_size==0 strategy.entry('long',direction = strategy.long) if sell_cond and shortOK and time_cond and strategy.position_size==0 strategy.entry('short',direction =strategy.short) // fixed percentage based stop loss and take profit // User Options to Change Inputs (%) stopPer = input.float(1.0,step=0.10, title='Stop Loss %',group =group_text4) / 100 takePer = input.float(1.0,step =0.10, title='Take Profit %',group =group_text4) / 100 // Determine where you've entered and in what direction longStop = strategy.position_avg_price * (1 - stopPer) shortStop = strategy.position_avg_price * (1 + stopPer) shortTake = strategy.position_avg_price * (1 - takePer) longTake = strategy.position_avg_price * (1 + takePer) if strategy.position_size > 0 strategy.exit(id='Close Long',stop=longStop, limit=longTake) if strategy.position_size < 0 strategy.exit(id='Close Short',stop=shortStop, limit=shortTake) //PLOT FIXED SLTP LINE plot(strategy.position_size > 0 ? longStop : na, style=plot.style_linebr, color=color.new(color.red, 0), linewidth=1, title='Long Fixed SL') plot(strategy.position_size < 0 ? shortStop :na, style=plot.style_linebr, color=color.new(color.red, 0), linewidth=1, title='Short Fixed SL') plot(strategy.position_size > 0 ? longTake : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='Long Take Profit') plot(strategy.position_size < 0 ? shortTake : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='Short Take Profit') //