
Die Strategie ist ein Anpassungssystem, das Trendverfolgung und Spaltgeschäfte kombiniert, um die Marktlage anhand des Volatilitätsindex (CI) zu beurteilen und die entsprechende Handelslogik für verschiedene Marktumstände zu verwenden. In Trendmärkten handelt die Strategie mit EMA-Kreuzungen und RSI-Überkauf-Überverkaufssignalen; in Spaltmärkten handelt sie hauptsächlich anhand des RSI-Grenzwerts. Die Strategie enthält auch einen Stop-Loss-Stopp-Mechanismus, um Risiken zu kontrollieren und Gewinne zu sperren.
Der Kern der Strategie besteht darin, die Märkte durch den Schwankungsindex (CI) in Trendmärkte (CI < 38,2) und Intervallmärkte (CI > 61,8) zu unterteilen. In Trendmärkten wird ein Plus eröffnet, wenn ein schneller EMA (9-Zyklen) ein langsamer EMA (21-Zyklen) durchläuft und der RSI unter 70 liegt.
Die Strategie baut ein anpassungsfähiges Handelssystem auf, das durch die Kombination mehrerer technischer Indikatoren in der Lage ist, in verschiedenen Marktumgebungen eine stabile Leistung zu erzielen. Die Kernvorteile der Strategie liegen in ihrer Marktadaptivität und ihren ausgefeilten Risikomanagementmechanismen, wobei jedoch auch auf Fragen wie Parameteroptimierung und Abhängigkeit von Marktbedingungen geachtet werden muss. Durch kontinuierliche Optimierung und Verbesserung wird die Strategie zu besseren Handelsergebnissen in verschiedenen Marktumgebungen führen.
/*backtest
start: 2024-12-19 00:00:00
end: 2024-12-26 00:00:00
period: 45m
basePeriod: 45m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © nopology
//@version=6
strategy("CI, EMA, RSI", overlay=false)
// Input parameters
lengthCI = input(14, title="CI Length")
lengthRSI = input(14, title="RSI Length")
fastLength = input(9, title="Fast EMA Length")
slowLength = input(21, title="Slow EMA Length")
// Calculate CI
atr = ta.atr(lengthCI)
highLowRange = math.log10(math.max(high[lengthCI], high) - math.min(low[lengthCI], low))
sumATR = math.sum(atr, lengthCI)
ci = 100 * (math.log10(sumATR / highLowRange) / math.log10(lengthCI))
// Calculate RSI
rsi = ta.rsi(close, lengthRSI)
// Calculate EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)
// Define conditions
trendingMarket = ci < 38.2
rangingMarket = ci > 61.8
bullishSignal = ta.crossover(fastEMA, slowEMA) and rsi < 70
bearishSignal = ta.crossover(slowEMA, fastEMA) and rsi > 30
// Plot indicators for visualization
plot(ci, title="Choppiness Index", color=color.purple, linewidth=2)
plot(fastEMA, title="Fast EMA", color=color.blue)
plot(slowEMA, title="Slow EMA", color=color.red)
// Strategy Execution
if (trendingMarket)
if (bullishSignal)
strategy.entry("Long", strategy.long)
if (bearishSignal)
strategy.entry("Short", strategy.short)
else if (rangingMarket)
if (rsi < 30)
strategy.entry("Long", strategy.long)
if (rsi > 70)
strategy.entry("Short", strategy.short)
// Close positions when conditions no longer met or reverse
if (trendingMarket and not bullishSignal)
strategy.close("Long")
if (trendingMarket and not bearishSignal)
strategy.close("Short")
if (rangingMarket and rsi > 40)
strategy.close("Long")
if (rangingMarket and rsi < 60)
strategy.close("Short")
// Optional: Add stop loss and take profit
stopLossPerc = input.float(2, title="Stop Loss (%)", minval=0.1, step=0.1) / 100
takeProfitPerc = input.float(4, title="Take Profit (%)", minval=0.1, step=0.1) / 100
strategy.exit("Exit Long", "Long", stop=close*(1-stopLossPerc), limit=close*(1+takeProfitPerc))
strategy.exit("Exit Short", "Short", stop=close*(1+stopLossPerc), limit=close*(1-takeProfitPerc))