La stratégie de base de super-trend est une stratégie de trading algorithmique fiable et rentable basée sur trois indicateurs forts: l’indicateur de super-trend (ATR), l’indicateur de force relative (RSI) et l’indicateur de moyenne mobile (EMA). Cette stratégie vise à identifier la direction et la force des tendances du marché, à entrer dans le marché au point d’entrée optimal et à sortir du marché lorsqu’un point d’arrêt ou d’arrêt est atteint.
La stratégie utilise un indicateur de super-tendance pour déterminer si le prix est en tendance haussière ou baissière. L’indicateur de super-tendance est basé sur la moyenne de l’amplitude réelle et un facteur, qui est en hausse lorsque le prix est supérieur à la super-tendance et en baisse lorsque le prix est inférieur à la super-tendance.
L’indice de la relative faiblesse est utilisé pour détecter les conditions de surchauffe et de surachat ou de survente. Lorsque le RSI est supérieur à 50, c’est un marché fort et vice versa. Le RSI peut filtrer les fausses ruptures.
Les moyennes mobiles indicielles sont utilisées pour déterminer la direction de la tendance à long terme. Les prix sont tendance à la hausse quand ils sont supérieurs à l’EMA et à la baisse quand ils sont inférieurs.
Les signaux de trading de cette stratégie sont les suivants:
Entrée multiple: le prix est supérieur à la tendance super et le RSI est supérieur à 50 et le prix est supérieur à l’EMA Sortie multiple: la clôture est inférieure à la tendance super ou à la rupture ou à la rupture
Entrée à zéro: le cours est en dessous de la tendance et le RSI est en dessous de 50 et le cours est en dessous de l’EMA
Sortie à vide: la clôture est supérieure à la tendance super ou à la rupture ou à la rupture
Le stop loss et le stop stop stop peuvent être définis en pourcentage du prix d’entrée.
Cette stratégie présente les avantages suivants:
Utilisez une combinaison de trois indicateurs pour déterminer de manière fiable la direction de la tendance
L’indicateur de super-tendance détermine clairement les tendances haussières et baissières
Le RSI peut filtrer les fausses ruptures pour éviter les surachats
L’EMA peut être utilisée pour déterminer la direction des grandes tendances.
Les signaux stratégiques sont simples, clairs et faciles à utiliser
Vous pouvez personnaliser les cycles ATR, les paramètres RSI et les cycles EMA pour optimiser
Un arrêt de perte réglable pour contrôler les risques
Il est possible de faire plus ou moins pour s’adapter aux différentes conditions du marché.
Peut être utilisé dans n’importe quel cycle de temps
Les principaux risques de cette stratégie sont les suivants:
Les indicateurs de super-tendance sont retardés et peuvent entraîner des pertes lorsque la tendance majeure est inversée.
Le stop-loss est trop petit pour capturer le gros du marché
L’EMA n’est pas en mesure de déterminer le point de basculement
Je ne peux pas juger le phénomène.
Il y a un certain risque de volatilité et de transaction temporelle.
La réponse:
En combinaison avec d’autres indicateurs, le renversement de tendance
Optimisation des paramètres de stop-loss
En combinaison avec d’autres indicateurs, le renversement de tendance
Combiné avec des indices de déviation
Adaptation appropriée de la gestion des positions
Cette stratégie peut être optimisée dans les domaines suivants:
Optimisation des paramètres de cycle ATR pour équilibrer sensibilité et stabilité
Optimiser les paramètres RSI pour une meilleure précision
Optimiser le cycle EMA pour l’adapter aux différents marchés
Ajout d’autres indicateurs pour juger de l’inversion, comme le MACD, le KD, etc.
Augmentation de la déviation de l’indicateur
Réversion de jugement combinée à la théorie des vagues
Paramètres d’optimisation dynamique utilisant des algorithmes tels que l’apprentissage automatique
Ajout d’algorithmes de stop-loss avancés, tels que le stop-loss de suivi et le stop-loss mobile
Optimisation de la gestion des positions et adaptation aux différents marchés à taux de volatilité
Test de combinaisons de conditions d’entrée et de sortie plus complexes
La stratégie de base de super-tendance regroupe les trois indicateurs majeurs de la super-tendance, le RSI et l’EMA, formant une stratégie de suivi de tendance simple et pratique. Elle permet d’identifier clairement la direction de la tendance, de filtrer les faux signaux et de confirmer la tendance majeure.
/*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')
//