Stratégie de trading multi-périodes basée sur les indicateurs Supertrend et CCI


Date de création: 2024-01-18 15:09:33 Dernière modification: 2024-01-18 15:09:33
Copier: 2 Nombre de clics: 855
1
Suivre
1617
Abonnés

Stratégie de trading multi-périodes basée sur les indicateurs Supertrend et CCI

Aperçu

Cette stratégie combine l’indicateur de super-tendance et l’indicateur du canal des marchandises (CCI) pour réaliser un suivi de tendance et la génération de signaux de transaction sur plusieurs périodes. L’idée principale de la stratégie est d’utiliser l’indicateur de CCI pour déterminer la direction de la tendance à court terme, tout en combinant l’indicateur de super-tendance pour déterminer la direction de la tendance à moyen et à long terme.

Principe de stratégie

Indicateur CCI sur les tendances à court terme

L’indicateur CCI peut être utilisé pour juger de l’excès de vente et de l’excès de vente. L’indicateur CCI est un signal à plusieurs têtes lorsque l’indicateur CCI traverse l’axe 0 de bas en haut.

cci_period = input(28, "CCI Period")  
cci = cci(source, cci_period)
ML = input(0, "CCI Mid Line pivot")

Le code ci-dessus définit la périodicité de l’indicateur CCI et sa position sur l’axe central.

TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up 
TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn

Cette partie du code détermine si la ligne ci-dessus traverse l’axe 0, si oui, elle met à jour la ligne supérieure de la tendance super, et si elle traverse la ligne inférieure, elle met à jour la ligne inférieure.

Indicateur de super-tendance pour évaluer les tendances à moyen et long terme

L’indicateur de super-tendance permet de déterminer la direction d’une tendance à moyen et long terme en combinant l’indicateur ATR avec le prix. Lorsqu’un prix franchit la super-tendance, il s’agit d’un signal à plusieurs têtes et d’un signal à tête vide.

La formule de calcul de l’indicateur de super-tendance dans cette stratégie est la suivante:

Up=hl2-(Factor*atr(Pd)) 
Dn=hl2+(Factor*atr(Pd))

Factor et Pd sont des paramètres réglables.

Les variables de tendance déterminent la direction actuelle de la tendance majeure:

Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1)

L’intégration de la CCI et du super-trend

En intégrant l’indicateur CCI et l’indicateur de super-tendance, cette stratégie permet de déterminer les tendances dans plusieurs périodes. L’indicateur CCI capture les tendances à court terme, l’indicateur de super-tendance les tendances à moyen et à long terme.

Les signaux de transaction sont plus fiables lorsque les deux sont alignés.

isLong  = st_trend == 1
isShort = st_trend == -1

Les temps d’entrée sont des périodes de synchronisation à court et moyen terme, et les temps de sortie sont des périodes de rétrogradation à court et moyen terme.

Avantages stratégiques

Détermination de plusieurs périodes

Cette stratégie intègre des indicateurs de jugement de tendance à court et à moyen terme, ce qui rend les signaux de trading plus fiables.

Paramètres modifiables

Les paramètres Factor dans l’indicateur de tendance supérieure et la période cc_period de l’indicateur CCI peuvent être ajustés en fonction du marché, ce qui donne plus de flexibilité à la stratégie.

La simplicité et la clarté

La structure de la stratégie est simple et claire, facile à comprendre et à mettre en œuvre, ce qui convient parfaitement aux débutants en trading quantitatif.

Une large portée

Il peut être utilisé pour des marchés tels que les actions, les devises et les crypto-monnaies, et peut également être ajusté en fonction des paramètres pour différentes variétés.

Risques stratégiques et solutions

Les prix ont explosé

Lorsque les prix fluctuent fortement, de nombreux faux signaux apparaissent. Les paramètres de facteur de la super tendance peuvent être amplifiés de manière appropriée, ce qui réduit la fréquence de négociation de la stratégie.

La force de suivi est insuffisante

Il est possible de considérer que la super tendance ne suffit pas à suivre la force, mais qu’elle peut être combinée avec un indicateur de dynamique pour suivre la tendance pendant la phase d’accélération de la tendance.

Stratégie de stop-loss

Il n’y a pas de stop loss pour cette stratégie, mais il est possible de mettre trails stop loss en combinaison avec la taille de l’indicateur ATR.

Orientation de l’optimisation de la stratégie

Pertinence du marché

Adapter les paramètres de la super tendance et du CCI en fonction des caractéristiques des différents marchés, afin d’améliorer la stabilité de la stratégie.

Indicateur de dynamique combiné

La combinaison avec des indicateurs de dynamique tels que MACD, KDJ, permet de suivre la tendance pendant la phase d’accélération de la tendance et de générer des rendements plus élevés.

Apprentissage intégré

Optimisation des paramètres stratégiques et des règles de négociation à l’aide de l’apprentissage automatique et de l’apprentissage intégré.

Résumer

Cette stratégie est une combinaison réussie de supertrends et d’indicateurs CCI, permettant de juger les tendances sur plusieurs périodes. La stratégie est simple et facile à comprendre, les paramètres sont réglables et le potentiel de gain est élevé.

Code source de la stratégie
/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//@author=Daveatt

StrategyName = "Best Supertrend CCI Strategy"
ShortStrategyName = "Best Supertrend CCI Strategy"

strategy(title=StrategyName, shorttitle=ShortStrategyName, overlay=true )

//////////////////////////
//* COLOR CONSTANTS *//
//////////////////////////

AQUA = #00FFFFFF
BLUE = #0000FFFF
RED  = #FF0000FF
LIME = #00FF00FF
GRAY = #808080FF
DARKRED   = #8B0000FF
DARKGREEN = #006400FF
GOLD = #FFD700
WHITE = color.white

// Plots
GREEN_LIGHT     = color.new(color.green, 40)
RED_LIGHT       = color.new(color.red, 40) 
BLUE_LIGHT      = color.new(color.aqua, 40)
PURPLE_LIGHT    = color.new(color.purple, 40) 

source = input(close)

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/////////////////////////////////// CCI /////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

cci_period = input(28, "CCI Period")
cci = cci(source, cci_period)
//UL = input(80, "Upper level")
//LL = input(20, "Lower Level")
ML = input(0, "CCI Mid Line pivot")

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////// SUPERTREND /////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

Factor=input(3,title="[ST] Factor", minval=1,maxval = 100, type=input.float)
Pd=input(3, title="[ST] PD", minval=1,maxval = 100)

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/////////////////////// SUPERTREND DETECTION //////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

f_supertrend(Factor, Pd) =>

    Up=hl2-(Factor*atr(Pd))
    Dn=hl2+(Factor*atr(Pd))
    
    TrendUp = 0.0
    TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up
    TrendDown = 0.0
    TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn
    Trend = 0.0
    Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1)
    Tsl = Trend==1? TrendUp: TrendDown

    [Trend, Tsl]

[st_trend, st_tsl] = f_supertrend(Factor, Pd)

// Plot the ST
linecolor = close >= st_tsl ? color.green : color.red
plot(st_tsl, color = linecolor , linewidth = 3,title = "SuperTrend", transp=0)

isLong  = st_trend == 1
isShort = st_trend == -1

longClose   = isLong[1] and isShort
shortClose  = isShort[1] and isLong

strategy.entry("Long", 1, when=isLong)
strategy.close("Long", when=longClose )

strategy.entry("Short", 0,  when=isShort)
strategy.close("Short", when=shortClose )