Stratégie de base de SuperTrend

Auteur:ChaoZhang est là., Date: 2023-10-11 15:14:54 Je suis désolé
Les étiquettes:

Résumé

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 logique de la stratégie

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.

Analyse des avantages

Les avantages de cette stratégie:

  1. Combinaison de 3 indicateurs, détection fiable de tendance

  2. SuperTrend identifie clairement la tendance haussière et la tendance baissière

  3. Le RSI filtre les faux écarts, évite les surachats/survente

  4. L' EMA confirme l' orientation générale de la tendance

  5. Signaux de trading simples et clairs, faciles à suivre

  6. Période ATR personnalisable, paramètres RSI et période EMA à optimiser

  7. Arrêter les pertes et réaliser des bénéfices pour contrôler le risque

  8. Mode long uniquement ou mode court uniquement pour différents marchés

  9. Applicable à n'importe quelle période

Analyse des risques

Les principaux risques:

  1. Le retard de SuperTrend dans l'inversion de tendance peut entraîner des pertes.

  2. Les petits arrêts-pertes/prêts-gains ne parviennent pas à attraper les grands mouvements

  3. L' EMA ne peut détecter les points de renversement de tendance

  4. Aucune détection de divergence

  5. Le risque de volatilité et le risque de temps

Les solutions:

  1. Ajouter d'autres indicateurs pour détecter l'inversion

  2. Optimiser le stop loss/take profit

  3. Ajouter d'autres indicateurs à l'inversion au comptant

  4. Incorporer des indicateurs de divergence

  5. Ajustez le dimensionnement de la position

Directions d'optimisation

Façons d'optimiser la stratégie:

  1. Optimiser la période ATR pour la sensibilité et la stabilité

  2. Optimiser les paramètres RSI pour une plus grande précision

  3. Optimiser la période EMA pour les différents marchés

  4. Ajouter des indicateurs tels que MACD, KD pour la détection de l'inversion

  5. Ajouter des indicateurs de divergence

  6. Utilisez les ondes d'Elliott pour repérer les inversions

  7. Utiliser l'apprentissage automatique pour optimiser dynamiquement les paramètres

  8. Des algorithmes avancés de stop loss comme le stop loss de suivi

  9. Optimiser la taille des positions pour les différentes volatilités

  10. Tester des conditions d'entrée et de sortie plus complexes

Conclusion

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')

//

Plus de