Cette stratégie est basée sur deux indicateurs Super Trend avec des paramètres différents et l'indicateur CCI, visant à capturer les fluctuations de prix à court terme pour le trading à haute fréquence.
Utilisez 14 périodes ATR pour calculer la Super Tendance rapide, avec un facteur défini à 3; utilisez 14 périodes ATR pour calculer la Super Tendance lente, avec un facteur défini à 6. La Super Tendance rapide est plus sensible et peut capturer les changements à court terme; la Super Tendance lente détermine la direction de la tendance principale.
Lorsque la tendance super rapide dépasse le prix et que la tendance super lente est toujours au-dessus du prix, elle est jugée comme un signal d'inversion possible pour aller long; lorsque la tendance super rapide dépasse le prix et que la tendance super lente est toujours au-dessous du prix, elle est jugée comme un signal d'inversion possible pour aller court.
Dans le même temps, utilisez l'ICC pour juger si le marché est suracheté ou survendu.
La probabilité que l'indicateur Super Trend émette un signal d'inversion est plus élevée lorsque le marché est suracheté ou survendu.
La combinaison de Super Trend pour déterminer les points d'inversion de tendance et de CCI pour juger des conditions de surachat/survente peut filtrer efficacement les fausses ruptures et améliorer la qualité du signal.
Des croisements rapides et lents de Super Trend forment des signaux de trading pour atteindre une entrée et une sortie à haute fréquence.
Les paramètres CCI et les paramètres Super Trend peuvent être ajustés de manière flexible pour s'adapter aux différentes conditions du marché.
L'idée de stratégie est claire et facile à comprendre, et l'ajustement des paramètres est également relativement simple.
Super Trend lui-même a un effet de retard, peut-être manquant la première opportunité d'inversion.
Le CCI comporte des risques de callback et des fluctuations excessives peuvent également entraîner des transactions répétitives.
Le trading à haute fréquence est sujet à une augmentation de la fréquence des transactions et des coûts de négociation.
La combinaison de paramètres peut être traversée et optimisée en fonction du tirage maximal ou du ratio profit/perte pour trouver le paramètre optimal.
Les méthodes d'apprentissage automatique telles que Random Forest peuvent être utilisées pour la sélection de fonctionnalités sur les paramètres afin d'obtenir une optimisation automatique des paramètres.
Examiner la possibilité de limiter le nombre maximal de positions ouvertes dans un certain cycle afin de contrôler les risques.
La stratégie utilise pleinement l'indicateur Super Trend pour déterminer les points d'inversion de tendance à court terme, complété par l'indicateur CCI pour filtrer les signaux. Lorsque les paramètres sont raisonnables, elle peut réaliser un trading à court terme efficace.
/*backtest start: 2023-02-19 00:00:00 end: 2024-02-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Supertrend & CCI Strategy Scalp", overlay=true) // SuperTrend Settings atrLength1 = input(14, "ATR Length 1") factor1 = input(3.0, "Factor 1" ) atrLength2 = input(14, "ATR Length 2") factor2 = input(6.0, "Factor 2") // Calculate SuperTrend 1 [superTrend1, direction1] = ta.supertrend(factor1, atrLength1) // // Calculate SuperTrend 2 [superTrend2, direction2] = ta.supertrend(factor2, atrLength2) // superTrend1 := barstate.isfirst ? na : superTrend1 // upTrend1 = plot(direction1 < 0 ? superTrend1 : na, "Up Trend", color = color.green, style = plot.style_linebr) // downTrend1 = plot(direction1 < 0 ? na : superTrend1, "Down Trend", color = color.red, style = plot.style_linebr) // bodyMiddle1 = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle",display = display.none) // fill(bodyMiddle1, upTrend1, color.new(color.green, 90), fillgaps = false) // fill(bodyMiddle1, downTrend1, color.new(color.red, 90), fillgaps = false) // superTrend2 := barstate.isfirst ? na : superTrend2 // upTrend2 = plot(direction1 < 0 ? superTrend2 : na, "Up Trend", color = color.green, style = plot.style_linebr) // downTrend2 = plot(direction1 < 0 ? na : superTrend2, "Down Trend", color = color.red, style = plot.style_linebr) // bodyMiddle2 = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle",display = display.none) // fill(bodyMiddle2, upTrend2, color.new(color.green, 90), fillgaps = false) // fill(bodyMiddle2, downTrend2, color.new(color.red, 90), fillgaps = false) // CCI Settings //cciLength = input.int(14, title="CCI Length") cciLevel = input.int(100, title="CCI Level") // Calculate CCI length = input.int(20, minval=1) src = input(hlc3, title="Source") ma = ta.sma(src, length) cci = (src - ma) / (0.015 * ta.dev(src, length)) //plot(cci, "CCI", color=#2962FF) //band1 = hline(100, "Upper Band", color=#787B86, linestyle=hline.style_dashed) //hline(0, "Middle Band", color=color.new(#787B86, 50)) //band0 = hline(-100, "Lower Band", color=#787B86, linestyle=hline.style_dashed) //fill(band1, band0, color=color.rgb(33, 150, 243, 90), title="Background") ma(source, length, type) => switch type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing") smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing") smoothingLine = ma(cci, smoothingLength, typeMA) //plot(smoothingLine, title="Smoothing Line", color=#f37f20, display=display.none) // Entry conditions longCondition = superTrend1 > close and superTrend2 < close and smoothingLine < -100 shortCondition = superTrend1 < close and superTrend2 > close and smoothingLine > 100 /// Initialize variables to track trade direction var bool isLong = na var bool isShort = na // Strategy entry and exit if (longCondition) strategy.entry("Long", strategy.long) isLong := true isShort := false if (shortCondition) strategy.entry("Short", strategy.short) isShort := true isLong := false // Close Long positions if (isLong) strategy.close("Long", when = superTrend1 < close or superTrend2 > close or cci > 100) // Close Short positions if (isShort) strategy.close("Short", when = superTrend1 > close or superTrend2 < close or cci < -100) // Plotting plot(superTrend1, color=color.blue, title="SuperTrend 1") plot(superTrend2, color=color.red, title="SuperTrend 2") //plot(cci, color=color.orange, title="CCI")