Quantitative Trendfilterstrategie basierend auf Keltner-Kanal und CCI-Indikator


Erstellungsdatum: 2024-02-27 15:47:20 zuletzt geändert: 2024-02-27 15:47:20
Kopie: 0 Klicks: 715
1
konzentrieren Sie sich auf
1617
Anhänger

Quantitative Trendfilterstrategie basierend auf Keltner-Kanal und CCI-Indikator

Überblick

Diese Strategie kombiniert die Kennel, den CCI-Indikator und die RSI-Indikator mit den Bedingungen für die Handelsmenge und ermöglicht eine vollständige Trendüberschuss-Handelsstrategie. Die Strategie kann Kauf- und Verkaufssignale erzeugen, wenn sie die Schlüsselpreisregion durchbricht, wenn der Indikator ein Handelssignal ausstrahlt und wenn ein großer Handelsvolumen auftritt. Die Strategie enthält auch eine Trendbeurteilung, um zu vermeiden, dass ein Trend ohne eindeutige Trends gehandelt wird.

Strategieprinzip

Die Strategie basiert auf den folgenden Indikatoren und Bedingungen:

  1. Kenner-Kanal: Der Kurs innerhalb des Kanalbereichs wird anhand der typischen Preise und der ATR-Berechnung in einem bestimmten Zeitraum berechnet.

  2. Der CCI-Indikator ist ein Indikator, der verwendet wird, um zu beurteilen, ob der Preis überkauft oder überverkauft ist.

  3. Der RSI-Indikator hilft bei der Bestimmung, ob der Preis überkauft oder überverkauft ist.

  4. Umsatz: Der Umsatz muss einen gewissen Durchschnittswert überschreiten, um einen Umsatz zu erzielen.

  5. Durchschnittstrendfilter: Kombination von durchschnittlichen Indikatoren wie SMA, EMA und anderen, um die Gesamttrendrichtung des Preises zu bestimmen.

Unter Bedingungen, die der Trendrichtung entsprechen, erzeugen Kauf- und Verkaufssignale, wenn der Preis den Kenter-Kanal überschreitet und die CCI- und RSI-Indikatoren signalisieren, während das Handelsvolumen stark ansteigt.

Strategische Vorteile

Die Strategie kombiniert verschiedene Indikatoren und Bedingungen, um einige unsichere Handelssignale effektiv zu filtern und Handelsentscheidungen stabiler und zuverlässiger zu machen. Die Hauptvorteile sind:

  1. Die Trend-Filtermechanismen können unklaren und wackligen Märkten vorbeugen.

  2. Der Preis für Kettner Passage hat die Schlüsselfläche überschritten.

  3. Der CCI und der RSI geben die überkaufenden und überverkauften Signale zu einem genaueren Zeitpunkt ab.

  4. Die Bedingungen für hohe Transaktionsvolumina verhindern einige falsche Durchbrüche.

Strategisches Risiko

Die Risiken dieser Strategie sind:

  1. Die Trendscheidung ist unvollständig und es kann zu einer Verpassung einer stärkeren Trendchance kommen. Verschiedene Parameter der Durchschnittslinie können getestet werden.

  2. Die Parameter des Indikators sind falsch eingestellt und können wichtige Handelszeiten verpassen oder falsche Signale erzeugen. Die Parameter können optimiert werden.

  3. Es besteht ein gewisses Risiko für einen falschen Durchbruch, wenn der Effekt der Vergrößerung der Transaktionsmenge nicht sichtbar ist. Verschiedene Vergrößerungsmengen können getestet werden.

Richtung der Strategieoptimierung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Testen Sie Mittellinien verschiedener Typen und Längen, um die geeignetsten Trendfilterparameter zu finden.

  2. Optimierung von Kennzahlen wie Kenter-Channel, CCI, RSI und anderen, um die Signale genauer zu machen.

  3. Versuchen Sie mit verschiedenen Transaktionen, die Multiplikatoren zu vergrößern, um die passendsten Multiplikatoren zu finden.

  4. Ein Stop-Loss-Strategie kann in Betracht gezogen werden, um den maximalen Verlust eines einzelnen Handels zu kontrollieren.

Zusammenfassen

Insgesamt erzeugt diese Strategie, die Keltner-Kanal-, CCI-, RSI- und Volumenbedingungen kombiniert, eine relativ vollständige Trend-Over-Quantifizierungs-Trading-Strategie. Es kann ein Kauf- und Verkaufssignal erzeugen, wenn der Preis eine kritische Region durchbricht, der Indikator ein Handelssignal gibt und ein großer Handelsvolumen auftritt. Gleichzeitig wird ein Trend mit einem Moving Average beurteilt, um einen Handel ohne klaren Trend zu vermeiden.

Strategiequellcode
/*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)