Momentum suite à la stratégie de la CCI


Date de création: 2023-10-25 17:37:39 Dernière modification: 2023-10-25 17:37:39
Copier: 1 Nombre de clics: 762
1
Suivre
1617
Abonnés

Momentum suite à la stratégie de la CCI

Aperçu

Cette stratégie est basée sur l’indicateur CCI et vise à faire plus en cas de survente et à faire moins en cas de survente. Elle utilise également le filtre EMA pour contrôler les transactions uniquement dans la direction de la tendance. La stratégie offre également un stop-loss basé sur un pourcentage fixe ou une plage réelle moyenne (ATR).

Principe de stratégie

  1. Utiliser l’indicateur CCI pour déterminer les tendances du marché

    • Le CCI mesure la dynamique en comparant les prix actuels aux prix moyens d’une période donnée.

    • CCI au-dessus de 150 est un surachat, au-dessous de -100 est un survente

  2. Utilisation du filtre EMA

    • Faire plus si le prix est supérieur à l’EMA et faire moins si le prix est inférieur à l’EMA

    • Utilisez l’EMA pour déterminer la direction de la tendance et éviter les transactions contre la tendance

  3. Deux modes de coupe de la perte

    • Stop loss basé sur un pourcentage fixe: utilisez un pourcentage fixe du prix d’entrée pour définir un stop loss

    • Stop-loss basé sur l’ATR: utilisez le multiplicateur de l’ATR pour définir le stop-loss, puis calculez le stop-loss en fonction du ratio de risque-rendement

  4. Conditions d’entrée

    • La CCI sur la ligne 100 fait plus

    • La CCI est vide à 150 lignes.

    • Si l’EMA est activée, faites plus uniquement lorsque le prix est supérieur à l’EMA et faites moins lorsque le prix est inférieur à l’EMA

  5. Conditions de jeu

    • Le prix a touché le seuil de rupture

    • Le CCI est à nouveau en zone de survente

  6. Le dessin

    • Cartographie de l’indicateur CCI, région colorée

Analyse des avantages

  1. L’utilisation de l’indice CCI pour juger de l’excédent d’achat et de la survente est une utilisation classique de l’indice CCI.

  2. L’EMA optionnelle garantit que les transactions se déroulent dans le sens de la tendance et évite les retournements

  3. Offre deux modes de stop-loss qui permettent d’ajuster les paramètres de stop-loss en fonction du marché

  4. Les gains de l’indicateur CCI sont à nouveau en zone de sur-achat et de sur-vente, ce qui permet de bloquer la reprise de la tendance.

  5. Les cartes mettent en évidence les signaux CCI et sont faciles à lire.

  6. La logique de la stratégie est claire, simple, facile à comprendre et à optimiser

Analyse des risques

  1. Les indices CCI sont en retard, ce qui peut entraîner une inversion manquée ou un faux signal

  2. Une mauvaise configuration des paramètres EMA peut manquer une tendance ou annuler une stratégie

  3. Le stop-loss pourcentage est difficile à adapter aux changements de marché, avec des paramètres plus larges

  4. L’arrêt ATR est sensible aux cycles d’intervalle et doit être ajusté aux paramètres optimaux.

  5. Le risque de retrait est élevé et la gestion des positions doit être adaptée.

  6. Les paramètres de l’indicateur doivent être évalués en fonction de l’évolution du marché.

Direction d’optimisation

  1. Évaluer les paramètres CCI pour différents cycles et trouver la meilleure combinaison de paramètres

  2. Tester différents cycles d’EMA pour déterminer le cycle de jugement de tendance le plus approprié

  3. Ajuster les paramètres de stop-loss pour obtenir le meilleur rapport risque/bénéfice

  4. Ajout d’autres conditions de filtrage, telles que le volume des transactions, pour filtrer davantage les faux signaux

  5. Ligne de tendance ou graphique pour un jugement de forme plus efficace

  6. Augmentation des stratégies de gestion des positions, telles que la fixation des positions, pour contrôler le risque de retrait

  7. Récupération complète des données de différents environnements de marché, paramètres d’ajustement dynamique

Résumer

La stratégie utilise le principe classique de l’indicateur CCI pour l’introduction. L’ajout d’un filtre EMA permet de contrôler la direction de la tendance.

Code source de la stratégie
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 1h
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/
// © alifer123

//@version=5
// strategy("CCI+EMA Strategy with Percentage or ATR TP/SL [Alifer]", shorttitle = "CCI_EMA_%/ATR_TP/SL", overlay=false,
//      initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.045)

length = input(14, "CCI Length")
overbought = input.int(150, step = 10, title = "Overbought")
oversold = input.int(-140, step = 10, title = "Oversold")
src = hlc3
ma = ta.sma(src, length)
cci = (src - ma) / (0.015 * ta.dev(src, length))

// EMA
useEMA = input(true, "Use EMA", tooltip = "Only enters long when price is above the EMA, only enters short when price is below the EMA")
emaLength = input(55, "EMA Length")
var float ema = na
if useEMA
    ema := ta.ema(src, emaLength)

// Take Profit and Stop Loss Method
tpSlMethod_percentage = input(true, "Percentage TP/SL", group="TP/SL Method")
tpSlMethod_atr = input(false, "ATR TP/SL", group="TP/SL Method")

// Percentage-based Take Profit and Stop Loss
tp_percentage = input.float(10.0, title="Take Profit (%)", step=0.1, group="TP/SL Method")
sl_percentage = input.float(10.0, title="Stop Loss (%)", step=0.1, group="TP/SL Method")

// ATR-based Take Profit and Stop Loss
atrLength = input(20, title="ATR Length", group="TP/SL Method")
atrMultiplier = input(4, title="ATR SL Multiplier", group="TP/SL Method")
riskRewardRatio = input(2, title="Risk Reward Ratio", group="TP/SL Method")

// Calculate TP/SL levels based on the selected method, or leave them undefined if neither method is selected
longTP = tpSlMethod_percentage ? strategy.position_avg_price * (1 + tp_percentage / 100) : na
longSL = tpSlMethod_percentage ? strategy.position_avg_price * (1 - sl_percentage / 100) : na
shortTP = tpSlMethod_percentage ? strategy.position_avg_price * (1 - tp_percentage / 100) : na
shortSL = tpSlMethod_percentage ? strategy.position_avg_price * (1 + sl_percentage / 100) : na

if tpSlMethod_atr
    longSL := strategy.position_avg_price - ta.atr(atrLength) * atrMultiplier
    longTP := ((strategy.position_avg_price - longSL) * riskRewardRatio) + strategy.position_avg_price
    shortSL := strategy.position_avg_price + ta.atr(atrLength) * atrMultiplier
    shortTP := ((strategy.position_avg_price - shortSL) * riskRewardRatio) - strategy.position_avg_price

// Enter long position when CCI crosses below oversold level and price is above EMA
longCondition = ta.crossover(cci, oversold) and (not useEMA or close > ema)
if longCondition
    strategy.entry("Buy", strategy.long)

// Enter short position when CCI crosses above overbought level and price is below EMA
shortCondition = ta.crossunder(cci, overbought) and (not useEMA or close < ema)
if shortCondition
    strategy.entry("Sell", strategy.short)

// Close long positions with Take Profit or Stop Loss
if strategy.position_size > 0
    strategy.exit("Long Exit", "Buy", limit=longTP, stop=longSL)

// Close short positions with Take Profit or Stop Loss
if strategy.position_size < 0
    strategy.exit("Short Exit", "Sell", limit=shortTP, stop=shortSL)

// Close positions when CCI crosses back above oversold level in long positions or below overbought level in short positions
if ta.crossover(cci, overbought)
    strategy.close("Buy")
if ta.crossunder(cci, oversold)
    strategy.close("Sell")

// Plotting
color_c = cci > overbought ? color.red : (cci < oversold ? color.green : color.white)
plot(cci, "CCI", color=color_c)
hline(0, "Middle Band", color=color.new(#787B86, 50))
obband = hline(overbought, "OB Band", color=color.new(#78867a, 50))
osband = hline(oversold, "OS Band", color=color.new(#867878, 50))
fill(obband, osband, color=color.new(#787B86, 90))