Trois stratégies de super-tendance qui se chevauchent

Auteur:ChaoZhang est là., Date: le 26 février 2024 10:04:18
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie qui prend des décisions de trading basées sur trois indicateurs SuperTrend qui se chevauchent.

La logique de la stratégie

La stratégie utilise la fonction ta.supertrend() pour calculer trois indicateurs de SuperTrend avec des paramètres différents, à savoir SuperTrend1 avec 10 jours et un multiplicateur de 3, SuperTrend2 avec 14 jours et un multiplicateur de 2 et SuperTrend3 avec 20 jours et un multiplicateur de 2.5. Un signal d'achat est généré lorsque le prix traverse au-dessus des trois lignes SuperTrend. Un signal de vente est généré lorsque le prix traverse en dessous des trois lignes SuperTrend.

L'indicateur SuperTrend intègre l'indicateur ATR pour suivre efficacement les changements de tendance des prix.

Les avantages

  1. Le mécanisme à triple filtre évite les faux signaux et améliore la qualité du signal
  2. Le SuperTrend lui-même a une bonne capacité de réduction du bruit
  3. Plusieurs combinaisons d'hyperparamètres peuvent être configurées pour s'adapter à plus d'environnements de marché
  4. Bonne performance historique avec un taux de rendement/risque élevé

Les risques

  1. Des signaux de filtrage multiples peuvent manquer certaines opportunités
  2. Ne fonctionne pas bien sur différents marchés
  3. Requiert l'optimisation des combinaisons de trois ensembles d'hyperparamètres
  4. Le temps de négociation concentré est sujet à des événements soudains

Pour réduire les risques, les mesures suivantes peuvent être prises:

  1. Ajustez les conditions de filtrage, gardez une ou deux SuperTrends
  2. Ajouter une stratégie de stop loss
  3. Optimiser les hyperparamètres pour améliorer le taux de victoire

Directions d'optimisation

  1. Testez plus de combinaisons de paramètres pour trouver des hyperparamètres optimaux
  2. Ajouter des algorithmes d'apprentissage automatique pour l'optimisation des paramètres en temps réel
  3. Ajouter des stratégies de stop loss pour contrôler les pertes uniques
  4. Incorporer d'autres indicateurs pour identifier les tendances et les fourchettes
  5. Prolonger le temps de négociation pour éviter les risques à un moment unique

Conclusion

Cette stratégie prend des décisions basées sur trois SuperTrends qui se chevauchent, ce qui permet d'identifier efficacement la direction de la tendance. Elle présente des avantages tels qu'une qualité de signal élevée et des paramètres configurables. En même temps, il existe également certains risques. Les paramètres et le timing de sortie doivent être ajustés pour s'adapter à différents environnements de marché. Dans l'ensemble, la stratégie fonctionne exceptionnellement bien et mérite d'être étudiée et appliquée.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Combined Supertrend Strategy - Ajit Prasad', overlay=true)

// Function to calculate Supertrend
supertrendFunc(atrLength, factor) =>
    [supertrend, direction] = ta.supertrend(factor, atrLength)
    [supertrend, direction]

// Input parameters for the first Supertrend
atrPeriod1 = input(10, 'ATR Length 1')
factor1 = input(3, 'Factor 1')

// Calculate the first Supertrend
[supertrend1, direction1] = supertrendFunc(atrPeriod1, factor1)

// Input parameters for the second Supertrend
atrPeriod2 = input(14, 'ATR Length 2') // Change values as needed
factor2 = input(2, 'Factor 2') // Change values as needed

// Calculate the second Supertrend
[supertrend2, direction2] = supertrendFunc(atrPeriod2, factor2)

// Input parameters for the third Supertrend
atrPeriod3 = input(20, 'ATR Length 3') // Change values as needed
factor3 = input(2.5, 'Factor 3') // Change values as needed

// Calculate the third Supertrend
[supertrend3, direction3] = supertrendFunc(atrPeriod3, factor3)

// Define market opening and closing times
marketOpenHour = 9
marketOpenMinute = 15
marketCloseHour = 15
marketCloseMinute = 30
exitTimeHour = 15
exitTimeMinute = 10

// Fetch historical close values using security function
histClose = request.security(syminfo.tickerid, "D", close)

// Buy condition
buyCondition = close > supertrend1 and close > supertrend2 and close > supertrend3 and close[1] <= supertrend1[1]

// Sell condition
sellCondition = close < supertrend1 and close < supertrend2 and close < supertrend3 and close[1] >= supertrend1[1]

// Exit conditions
buyExitCondition = close < supertrend1[1] or close < supertrend2[1] or close < supertrend3[1]
sellExitCondition = close > supertrend1[1] or close > supertrend2[1] or close > supertrend3[1]

// Execute orders with market timing
if true
    // Buy condition without 'and not'
    strategy.entry('Buy', strategy.long, when = buyCondition)

    // Sell condition without 'and not'
    strategy.entry('Sell', strategy.short, when = sellCondition)

    // Close conditions
    strategy.close('Buy', when = buyExitCondition )
    strategy.close('Sell', when = sellExitCondition)

// Close all trades at 3:10 pm IST
if true
    strategy.close_all()

// Plot Supertrends
plot(supertrend1, 'Supertrend 1', color=color.new(color.green, 0), style=plot.style_linebr)
plot(supertrend2, 'Supertrend 2', color=color.new(color.red, 0), style=plot.style_linebr)
plot(supertrend3, 'Supertrend 3', color=color.new(color.blue, 0), style=plot.style_linebr)

// Plot labels
plotshape(buyCondition, style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), size=size.large, text='Buy Signal', textcolor=color.new(color.white, 0))
plotshape(sellCondition, style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), size=size.large, text='Sell Signal', textcolor=color.new(color.white, 0))

Plus de