
Bei dieser Strategie handelt es sich um ein automatisiertes Handelssystem auf Basis von gleitenden Durchschnitts-Crossover-Signalen, das die Handelsleistung durch die Festlegung eines festen Risiko-Rendite-Verhältnisses optimiert. Die Strategie verwendet den Schnittpunkt des schnellen gleitenden Durchschnitts (Fast MA) und des langsamen gleitenden Durchschnitts (Slow MA), um die Markttrendrichtung zu bestimmen, und kombiniert den voreingestellten Stop-Loss-Punkt und das Gewinnziel, um das Positionsrisiko zu verwalten.
Die Kernlogik der Strategie basiert auf den Crossover-Signalen, die von zwei gleitenden Durchschnitten mit unterschiedlichen Perioden (10 Perioden und 30 Perioden) generiert werden. Wenn die schnelle Linie die langsame Linie kreuzt, erzeugt das System ein langes Signal; wenn die schnelle Linie die langsame Linie kreuzt, erzeugt das System ein kurzes Signal. Nach dem Öffnen jeder Position berechnet das System automatisch die Stop-Loss-Position auf Grundlage der voreingestellten Stop-Loss-Quote von 2 % und legt das Gewinnziel entsprechend einem 2,5-fachen Risiko-Rendite-Verhältnis fest. Dieser Ansatz stellt sicher, dass jeder Handel ein festes Risiko-Rendite-Profil hat.
Diese Strategie baut ein komplettes Handelssystem auf, indem sie klassische Methoden der technischen Analyse mit modernen Konzepten des Risikomanagements kombiniert. Obwohl gewisse Einschränkungen bestehen, ist durch kontinuierliche Optimierung und Verbesserung zu erwarten, dass die Strategie in unterschiedlichen Marktumgebungen eine stabile Leistung aufrechterhält. Der Schlüssel liegt darin, die Parametereinstellungen kontinuierlich auf der Grundlage tatsächlicher Handelsergebnisse anzupassen und die Konfiguration zu finden, die am besten zum aktuellen Marktumfeld passt.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SOL 15m 2.5 R:R Strategy", overlay=true, margin_long=100, margin_short=100, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1)
//---------------------------------------------------
// User Inputs
//---------------------------------------------------
// sym = input.symbol("swap", "Symbol")
timeframe = input.timeframe("15", "Timeframe")
fastLength = input.int(10, "Fast MA Length")
slowLength = input.int(30, "Slow MA Length")
stopLossPerc = input.float(2.0, "Stop Loss %", step=0.1) // This is an example; adjust to achieve ~45% win rate
RR = input.float(2.5, "Risk to Reward Ratio", step=0.1)
//---------------------------------------------------
// Data Sources
//---------------------------------------------------
price = request.security("swap", timeframe, close)
// Compute moving averages
fastMA = ta.sma(price, fastLength)
slowMA = ta.sma(price, slowLength)
// Entry Conditions
longCondition = ta.crossover(fastMA, slowMA)
shortCondition = ta.crossunder(fastMA, slowMA)
//---------------------------------------------------
// Stop Loss and Take Profit Calculation
//---------------------------------------------------
var entryPrice = 0.0
if (strategy.position_size == 0) // not in a position
if longCondition
// Long entry
entryPrice := price
strategy.entry("Long", strategy.long)
if shortCondition
// Short entry
entryPrice := price
strategy.entry("Short", strategy.short)
if strategy.position_size > 0
// We are in a long position
if strategy.position_avg_price > 0 and strategy.position_size > 0
longStop = strategy.position_avg_price * (1 - stopLossPerc/100)
longTarget = strategy.position_avg_price * (1 + (stopLossPerc/100)*RR)
strategy.exit("Long Exit", "Long", stop=longStop, limit=longTarget)
if strategy.position_size < 0
// We are in a short position
if strategy.position_avg_price > 0 and strategy.position_size < 0
shortStop = strategy.position_avg_price * (1 + stopLossPerc/100)
shortTarget = strategy.position_avg_price * (1 - (stopLossPerc/100)*RR)
strategy.exit("Short Exit", "Short", stop=shortStop, limit=shortTarget)
//---------------------------------------------------
// Plotting
//---------------------------------------------------
plot(fastMA, color=color.new(color.teal, 0), title="Fast MA")
plot(slowMA, color=color.new(color.orange, 0), title="Slow MA")