
Die Strategie ist ein Handelssystem, das Trendverfolgung und Dynamikumkehr kombiniert. Sie beurteilt den Gesamttrend hauptsächlich anhand der 34-Zyklus-EMA-Mittel, identifiziert überkaufte und überverkaufte Bereiche anhand des RSI-Indikators und kombiniert die K-Linie-Form mit dem Transaktionsvolumen, um das Handelssignal zu bestätigen. Die Strategie verwendet eine dynamische Stop-Loss- und Profit-Methode, die auf der ATR basiert und die Handelsparameter an die Marktvolatilität anpassen kann.
Die Kernlogik der Strategie umfasst die folgenden Schlüsselelemente:
Die Strategie baut durch die Kombination mehrerer technischer Kennzahlen ein vollständiges Handelssystem auf, das eine gute Anpassungsfähigkeit und Skalierbarkeit aufweist. Die Kernvorteile der Strategie liegen in der mehrdimensionalen Signalerkennung und dem dynamischen Risikomanagement, wobei jedoch auch auf die Optimierung der Parameter und die Anpassungsfähigkeit der Marktumgebung geachtet werden muss. Durch kontinuierliche Optimierung und Verbesserung wird die Strategie in der Lage sein, in verschiedenen Marktumgebungen eine stabile Leistung zu erzielen.
/*backtest
start: 2024-08-01 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"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/
// © bommytarton
//@version=6
strategy("Improved Momentum and Pivot Reversal Strategy", overlay=true)
// Define user inputs
lengthEMA = input.int(34, title="EMA Length", minval=1)
lengthRSI = input.int(14, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100)
rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50)
lengthATR = input.int(14, title="ATR Length", minval=1)
multATR = input.float(1.5, title="ATR Multiplier for Take-Profit", minval=1.0)
stopLossMultiplier = input.float(1.0, title="Stop Loss Multiplier for ATR", minval=0.5, maxval=3.0) // Adjust the stop-loss to be tighter or wider
// Calculate the indicators
ema34 = ta.ema(close, lengthEMA)
rsiValue = ta.rsi(close, lengthRSI)
atrValue = ta.atr(lengthATR)
// Define entry conditions
longCondition = close > ema34 and close[1] < open[1] and close > open and close[2] > open[2] and close[1] < open[1] and rsiValue > 50
// Define stop-loss and take-profit based on ATR
stopLoss = close - (atrValue * stopLossMultiplier) // Tighter stop-loss using the ATR multiplier
takeProfit = close + (atrValue * multATR) // Take profit with adjustable multiplier
// Volume condition filter (make sure that the volume is higher than average over the past 20 bars)
avgVolume = ta.sma(volume, 20)
volumeCondition = volume > avgVolume
// Only trigger long if all conditions are met (trend above 34 EMA, red-green-green candle pattern, volume confirmation)
if (longCondition and volumeCondition)
strategy.entry("Long", strategy.long, stop=stopLoss, limit=takeProfit)
// Exit conditions based on RSI overbought/oversold and trailing stop
exitCondition = rsiValue > rsiOverbought or close < stopLoss
// Execute the exit strategy when RSI is overbought or price hits the stop-loss level
if (exitCondition)
strategy.close("Long") // Close the position when exit condition is met
// Plotting for visualization
plot(ema34, title="34 EMA", color=color.blue)
plot(stopLoss, title="Stop Loss", color=color.red, linewidth=2)
plot(takeProfit, title="Take Profit", color=color.green, linewidth=2)