Stratégie quantitative de filtrage des tendances basée sur le canal Keltner et l'indicateur CCI


Date de création: 2024-02-27 15:47:20 Dernière modification: 2024-02-27 15:47:20
Copier: 0 Nombre de clics: 715
1
Suivre
1617
Abonnés

Stratégie quantitative de filtrage des tendances basée sur le canal Keltner et l’indicateur CCI

Aperçu

Cette stratégie combine les conditions de la voie de Kentner, de l’indicateur CCI et de l’indicateur RSI et du volume des transactions pour réaliser une stratégie de négociation de tendance plus complète. Cette stratégie peut générer des signaux d’achat et de vente lors de la rupture des zones de prix critiques, de l’émission de signaux de négociation par l’indicateur et de l’apparition d’un volume de transactions important.

Principe de stratégie

La stratégie est basée sur les indicateurs et conditions suivants:

  1. Le canal de Kettner: en fonction du prix typique d’un certain cycle et du calcul de l’ATR pour déterminer si le prix est dans la zone du canal.

  2. Indicateur CCI: utilisé pour juger si le prix est sur-acheté ou sur-vendu.

  3. L’indicateur RSI: aide à déterminer si le prix est trop cher ou trop vendu.

  4. Le volume de transaction: Le volume de transaction est nécessaire pour que la transaction atteigne une certaine valeur moyenne.

  5. Filtre de tendance moyenne: en combinant des indicateurs de tendance moyenne tels que SMA, EMA, etc., pour déterminer la direction de la tendance générale des prix.

Dans des conditions conformes à la direction de la tendance, des signaux d’achat et de vente sont générés si le prix franchit le canal de Kentner et se déplace vers le bas, et si les indicateurs CCI et RSI émettent des signaux et que le volume de transactions augmente considérablement.

Avantages stratégiques

Cette stratégie, combinant plusieurs indicateurs et conditions, permet d’éliminer efficacement certains signaux de trading incertains, rendant les décisions de trading plus stables et plus fiables. Les principaux avantages sont:

  1. Le mécanisme de filtrage des tendances évite des marchés incertains et instables.

  2. Le prix de l’aéroport de Kettner a atteint une zone critique.

  3. Le CCI et le RSI sont plus précis dans le moment où ils émettent des signaux de survente.

  4. Les conditions d’un volume de transactions élevé permettent d’éviter certaines fausses percées.

Risque stratégique

Les principaux risques liés à cette stratégie sont les suivants:

  1. Le mécanisme de jugement des tendances est imparfait et peut manquer des occasions de tendances plus fortes. Différents paramètres de la moyenne peuvent être testés.

  2. Les paramètres de l’indicateur ne sont pas correctement configurés, ce qui peut entraîner une perte d’un moment clé de la transaction ou un mauvais signal. Les paramètres peuvent être optimisés.

  3. Il existe un certain risque de fausse rupture lorsque l’effet d’amplification du volume de transaction n’est pas évident. Il est possible de tester différents doublons d’amplification du volume de transaction.

Orientation de l’optimisation de la stratégie

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Testez des moyennes de différents types et de différentes longueurs pour trouver les paramètres de filtrage de tendance les plus appropriés.

  2. Optimiser les paramètres des indicateurs tels que le canal de Kentner, le CCI et le RSI pour rendre le signal plus précis.

  3. Testez différents volumes de transactions pour trouver le multiplicateur qui vous convient le mieux.

  4. Vous pouvez envisager d’inclure une stratégie de stop-loss pour contrôler la perte maximale d’une transaction.

Résumer

Dans l’ensemble, cette stratégie combine les canaux Keltner, les indices CCI, RSI et les conditions de volume de transactions pour créer une stratégie de trading de tendance relativement complète. Elle peut générer des signaux d’achat et de vente lorsque les prix franchissent des zones critiques, que l’indicateur donne un signal de transaction et que des volumes importants de transactions apparaissent.

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

//@version=4
strategy("Custom Keltner CCI Strategy with Trend Filter", overlay=true )
// Input Parameters for allowing long and short trades
allowLong = input(true, title="Allow Long Trades")
allowShort = input(true, title="Allow Short Trades")
// Trend Filter Inputs
maType = input(title="MA Type", options=["OFF", "SMA", "EMA", "SMMA", "CMA", "TMA"], defval="OFF")
trendFilterMethod = input(title="Trend Filter Method", options=["OFF", "Normal", "Reversed"], defval="OFF")
maLength = input(14, title="MA Length")
// Other Input Parameters
lengthKC = input(30, title="Keltner Channels Length")
multKC = input(0.7, title="Keltner Channels Multiplier")
lengthCCI = input(5, title="CCI Length")
overboughtCCI = input(75, title="CCI Overbought Level")
oversoldCCI = input(-75, title="CCI Oversold Level")
rsiPeriod = input(30, title="RSI Period")
rsiOverbought = input(60, title="RSI Overbought Level")
rsiOversold = input(60, title="RSI Oversold Level")
volumeMultiplier = input(0, title="Volume Multiplier", type=input.float, step=0.1, minval=0)
// Define Moving Averages
var float maValue = na
if (maType == "SMA")
    maValue := sma(close, maLength)
else if (maType == "EMA")
    maValue := ema(close, maLength)
else if (maType == "SMMA")
    maValue := na(maValue[1]) ? sma(close, maLength) : (maValue[1] * (maLength - 1) + close) / maLength
else if (maType == "CMA")
    maValue := na(maValue[1]) ? sma(close, maLength) : (sma(close, maLength) + (sma(close, maLength) - maValue[1])) / 2
else if (maType == "TMA")
    maValue := sma(sma(close, round(maLength/2)), round(maLength/2)+1)
// Entry Conditions with Trend Filter
longCondition = allowLong and (trendFilterMethod == "OFF" or (trendFilterMethod == "Normal" and close > maValue) or (trendFilterMethod == "Reversed" and close < maValue))
shortCondition = allowShort and (trendFilterMethod == "OFF" or (trendFilterMethod == "Normal" and close < maValue) or (trendFilterMethod == "Reversed" and close > maValue))
// Keltner Channels
typicalPrice = hlc3
middleLine = sma(typicalPrice, lengthKC)
range = multKC * atr(lengthKC)
upperChannel = middleLine + range
lowerChannel = middleLine - range
// CCI
cci = cci(close, lengthCCI)
// RSI
rsi = rsi(close, rsiPeriod)
// Volume
volCondition = volume > sma(volume, 50) * volumeMultiplier
// Combined Entry Conditions with Trend Filter
longCondition := longCondition and cci < oversoldCCI and low < lowerChannel and rsi < rsiOversold and volCondition
shortCondition := shortCondition and cci > overboughtCCI and high > upperChannel and rsi > rsiOverbought and volCondition
// Execute orders at the open of the new bar after conditions are met
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)
// Exit Conditions
strategy.close("Long", when = cci > 0)
strategy.close("Short", when = cci < 0)
// Plotting
plot(upperChannel, color=color.red, linewidth=1)
plot(lowerChannel, color=color.green, linewidth=1)
hline(overboughtCCI, "Overbought", color=color.red)
hline(oversoldCCI, "Oversold", color=color.green)