
Die Strategie basiert auf dem CCI-Indikator und ist ein flexibler, automatisierter Handelssystem, der Trends verfolgt. Sie kann auf der 0-Achse des CCI-Indikators ein Handelssignal übertragen oder durchdringen, oder durch ein benutzerdefiniertes Up-Down-Channel-Band- und Cross-Channel-Band-Signal. Die Strategie kann eine feste Stop-Loss- und Stop-Stop-Ratio einrichten und verfügt über mehrere Funktionen wie Zeit- und Tageszeit-Trading.
Die 0-Achse-Kreuzung des CCI-Indikators wird verwendet, um den Markttrend zu bestimmen. Der CCI oben durch die 0-Achse ist ein bullish Signal und der CCI unten durch die 0-Achse ist ein bearish Signal.
Durch die benutzerdefinierte CCI-Ober-Unter-Kanal-Band, wenn die CCI-Ober-Ober-Kanal-Band als bullish Signal, CCI-Unter-Ober-Kanal-Band als bearish Signal. Die Kanal-Band-Kreuzung als Stop-Loss Signal.
Es ist möglich, nur in bestimmten Zeitabschnitten zu handeln, während der nicht gehandelten Zeitabschnitte ist die Position still. Es ist möglich, täglich in festen Zeitabschnitten zu handeln.
Ein Fixed Stop-Loss- und Stop-Stop-Verhältnis ist einstellbar.
Alert-Nachrichten, bei denen Sie Ihre Position anpassen können.
Die Strategie ist vollständig individuell und flexibel. Optimierungsstrategien wie CCI-Parameter, Gangband-Parameter und Stop-Loss-Parameter können angepasst werden.
Der CCI-Indikator wird verwendet, um Markttrends zu beurteilen. Der CCI ist empfindlich auf Preisänderungen und kann schnell Marktwendepunkte erfassen.
Die benutzerdefinierte Gangband kann an die Parameter der verschiedenen Märkte angepasst werden, und die Gangband-Kreuzverlust-Stop-Risiken können wirksam kontrolliert werden.
Unterstützt mehrere Handelszeit-Einstellungen, die Strategieparameter können je nach Zeitperiode angepasst werden, um zusätzliche Gewinne aus den Merkmalen der verschiedenen Zeiträume zu erzielen.
Unterstützt wird ein festes Stop-Loss-Stopp-System, mit dem die Gewinn- und Verlustquote vorab festgelegt und das Risiko für einzelne Geschäfte effektiv kontrolliert werden kann.
Die Parameter sind vollständig anpassbar und können für verschiedene Sorten und Marktbedingungen optimiert werden, um bessere Ergebnisse zu erzielen.
Der CCI-Indikator ist auf Preisänderungen empfindlich und kann teilweise falsche Signale erzeugen.
Die Fixed Stop-Loss-Stop-Ratio kann nicht an Marktveränderungen angepasst werden. Die Ratio sollte entsprechend konserviert werden.
Die festen Handelszeiten können die Möglichkeit einer kurzen Marktanpassung verpassen, und es sollten angemessen Zeiträume gewählt werden, in denen der Handel wertvoll ist.
Die Optimierung von Parametern ist häufig notwendig, da eine unzureichende Optimierung zu übertriebenen oder verpassten Handelsmöglichkeiten führen kann.
Es ist notwendig, mehrere Faktoren zu berücksichtigen, wie z. B. die Branchenlage und das makroökonomische Umfeld.
In Kombination mit einem langen oder kurzen Zyklus wird eine Verifizierung durchgeführt, um zu vermeiden, dass ein falsches Signal erzeugt wird.
Die dynamischen Stop-Loss-Stopps werden mit Indikatoren wie ATR eingestellt.
Testen Sie die Effektivität der Parameter für verschiedene Zeiträume und wählen Sie die Zeiten, in denen der Handel am effektivsten ist.
Optimierung der CCI-Parameter, der Gangband-Parameter und der Anpassung an Marktveränderungen.
Es ist wichtig, die Entwicklung, die Volatilität und die Transaktionsmenge zu berücksichtigen, um ein Gesamturteil zu fällen.
Die richtige Laufzeit für den Handel wird nach den Merkmalen des Handelssortiments gewählt.
Erwägen Sie, eine automatische Optimierung der Strategie mit einem Algorithmus des maschinellen Lernens zu implementieren.
Die Strategie als Ganzes ist ein sehr flexibles und anpassbares Trend-Tracking-Handelssystem. Die Strategie hat die Vorteile, dass sie die CCI-Trendentscheidung nutzt, die Risiken des benutzerdefinierten Gangbands kontrolliert, feste Stop-Loss-Sätze setzt und die Handelszeiträume wählt. Es ist auch darauf zu achten, dass die CCI anfällig für Falschsignale ist und die feste Stop-Loss-Rate nicht dynamisch angepasst werden kann.
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 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/
// © REV0LUTI0N
//@version=4
strategy(title="CCI Strategy", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)
//CCI Code
length = input(20, minval=1, title="CCI Length")
src = input(close, title="Source")
ma = sma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))
// Strategy Backtesting
startDate = input(timestamp("2099-10-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("9999-12-31T00:00:00"), type = input.time, title='Backtesting End Date')
time_cond = true
//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = true
timetoclose = true
//Strategy Settings
//Strategy Settings - Enable Check Boxes
enableentry = input(true, title="Enter First Trade ASAP")
enableconfirmation = input(false, title="Wait For Cross To Enter First Trade")
enablezero =input(true, title="Use CCI Simple Cross Line For Entries & Exits")
enablebands = input(false, title="Use Upper & Lower Bands For Entries & Exits")
//Strategy Settings - Band Sources
ccisource = input(0, title="CCI Simple Cross")
upperbandsource =input(100, title="CCI Enter Long Band")
upperbandexitsource =input(100, title="CCI Exit Long Band")
lowerbandsource =input(-100, title="CCI Enter Short Band")
lowerbandexitsource =input(-100, title="CCI Exit Short Band")
//Strategy Settings - Crosses
simplecrossup = crossover(cci, ccisource)
simplecrossdown = crossunder(cci, ccisource)
uppercrossup = crossover(cci, upperbandsource)
lowercrossdown = crossunder(cci, lowerbandsource)
uppercrossdown = crossunder(cci, upperbandexitsource)
lowercrossup = crossover(cci, lowerbandexitsource)
upperstop = crossunder(cci, upperbandsource)
lowerstop = crossover(cci, lowerbandsource)
// Stop Loss & Take Profit % Based
enablesl = input(false, title='Enable Stop Loss')
enabletp = input(false, title='Enable Take Profit')
stopTick = input(5.0, title='Stop Loss %', type=input.float, step=0.1) / 100
takeTick = input(10.0, title='Take Profit %', type=input.float, step=0.1) / 100
longStop = strategy.position_avg_price * (1 - stopTick)
shortStop = strategy.position_avg_price * (1 + stopTick)
shortTake = strategy.position_avg_price * (1 - takeTick)
longTake = strategy.position_avg_price * (1 + takeTick)
plot(strategy.position_size > 0 and enablesl ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesl ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enabletp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enabletp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")
// Alert messages
message_enterlong = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")
//Strategy Execution
//Strategy Execution - Simple Line Cross
if (cci > ccisource and enablezero and enableentry and time_cond and timetobuy)
strategy.entry("Long", strategy.long, alert_message = message_enterlong)
if (cci < ccisource and enablezero and enableentry and time_cond and timetobuy)
strategy.entry("Short", strategy.short, alert_message = message_entershort)
if (simplecrossup and enablezero and enableconfirmation and time_cond and timetobuy)
strategy.entry("Long", strategy.long, alert_message = message_enterlong)
if (simplecrossdown and enablezero and enableconfirmation and time_cond and timetobuy)
strategy.entry("Short", strategy.short, alert_message = message_entershort)
//Strategy Execution - Upper and Lower Band Entry
if (uppercrossup and enablebands and time_cond and timetobuy)
strategy.entry("Long", strategy.long, alert_message = message_enterlong)
if (lowercrossdown and enablebands and time_cond and timetobuy)
strategy.entry("Short", strategy.short, alert_message = message_entershort)
//Strategy Execution - Upper and Lower Band Exit
if strategy.position_size > 0 and uppercrossdown and enablebands and time_cond and timetobuy
strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and lowercrossup and enablebands and time_cond and timetobuy
strategy.close_all(alert_message = message_closeshort)
//Strategy Execution - Upper and Lower Band Stops
if strategy.position_size > 0 and upperstop and enablebands and time_cond and timetobuy
strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and lowerstop and enablebands and time_cond and timetobuy
strategy.close_all(alert_message = message_closeshort)
//Strategy Execution - Close Trade At End Of Time Frame
if strategy.position_size > 0 and timetoclose and enableclose and time_cond
strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and timetoclose and enableclose and time_cond
strategy.close_all(alert_message = message_closeshort)
//Strategy Execution - Stop Loss and Take Profit
if strategy.position_size > 0 and enablesl and time_cond
strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enablesl and time_cond
strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)
if strategy.position_size > 0 and enabletp and time_cond
strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enabletp and time_cond
strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)