
Die Strategie ist ein Trend-Tracking-Trading-System, das mehrere technische Indikatoren kombiniert. Es erfasst die Trenddynamik über MACD, verwendet den RSI und den StochRSI, um den Überkauf-Überverkauf zu bestätigen, und verwendet den Transaktionsvolumen-Indikator, um die Effektivität der Handelssignale zu überprüfen. Die Strategie verwendet eine dynamische Transaktionsminderung, um sicherzustellen, dass der Handel nur ausgeführt wird, wenn die Marktaktivität ausreicht.
Die Kernlogik der Strategie basiert auf den folgenden Schlüsselelementen:
Das System eröffnet mehr Positionen, wenn die folgenden Bedingungen erfüllt sind:
Das System kann Positionen abschließen, wenn folgende Bedingungen erfüllt sind:
Vorschläge zur Risikokontrolle:
Die Strategie baut durch die synchronische Zusammenarbeit mehrerer technischer Indikatoren ein relativ vollständiges Handelssystem auf. Die Hinzufügung von Bilanzbestätigungsmechanismen erhöht die Zuverlässigkeit der Handelssignale, aber das System muss noch in Bezug auf Risikokontrolle und Parameteroptimierung verbessert werden. Die Kernvorteile der Strategie liegen in ihrer logischen Klarheit, ihrer Anpassbarkeit und der Eignung für weitere Optimierungen und Erweiterungen des Basisrahmens.
/*backtest
start: 2024-02-22 00:00:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("BTCUSDT Strategy with Volume, MACD, RSI, StochRSI", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Input parameters
macdFastLength = input.int(12, title="MACD Fast Length")
macdSlowLength = input.int(26, title="MACD Slow Length")
macdSignalSmoothing = input.int(9, title="MACD Signal Smoothing")
rsiLength = input.int(14, title="RSI Length")
stochRsiLength = input.int(14, title="StochRSI Length")
stochRsiSmoothing = input.int(3, title="StochRSI Smoothing")
stochRsiK = input.int(3, title="StochRSI %K")
stochRsiD = input.int(3, title="StochRSI %D")
volumeThreshold = input.float(1.5, title="Volume Threshold (Multiplier of Average Volume)")
// Calculate indicators
[macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalSmoothing)
rsi = ta.rsi(close, rsiLength)
stochRsi = ta.stoch(rsi, rsi, rsi, stochRsiLength)
stochRsiKSmoothed = ta.sma(stochRsi, stochRsiK)
stochRsiDSmoothed = ta.sma(stochRsiKSmoothed, stochRsiD)
averageVolume = ta.sma(volume, 14)
volumeSpike = volume > averageVolume * volumeThreshold
// Entry conditions
longCondition = ta.crossover(macdLine, signalLine) and rsi > 50 and stochRsiKSmoothed > stochRsiDSmoothed and volumeSpike
shortCondition = ta.crossunder(macdLine, signalLine) and rsi < 50 and stochRsiKSmoothed < stochRsiDSmoothed and volumeSpike
// Execute trades
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Plot indicators for visualization
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.red, title="Signal Line")
hline(0, "Zero Line", color=color.black)
plot(rsi, color=color.purple, title="RSI")
plot(stochRsiKSmoothed, color=color.green, title="StochRSI %K")
plot(stochRsiDSmoothed, color=color.orange, title="StochRSI %D")