Bei der Strategie handelt es sich um ein trendfolgendes Handelssystem, das gleitende Durchschnitts-Crossover-Signale mit ATR-Risikomanagement kombiniert. Die Strategie erfasst Markttrends durch die Kreuzung schneller und langsamer gleitender Durchschnitte und verwendet den ATR-Indikator, um Stop-Loss- und Gewinnniveaus dynamisch anzupassen und so eine präzise Kontrolle der Handelsrisiken zu erreichen. Die Strategie umfasst außerdem ein Geldverwaltungsmodul, das die Positionsgrößen automatisch auf Grundlage des Kontokapitals und voreingestellter Risikoparameter anpasst.
Die Kernlogik der Strategie basiert auf den folgenden Schlüsselkomponenten:
Diese Strategie erfasst Trends durch gleitende Durchschnittskreuzungen und kombiniert sie mit der dynamischen ATR-Risikokontrolle, um ein vollständiges Trendverfolgungs-Handelssystem zu erhalten. Die Stärken dieser Strategie liegen in ihrer Anpassungsfähigkeit und ihren Möglichkeiten zur Risikokontrolle, doch in volatilen Märkten kann die Performance schlecht sein. Die Gesamtleistung der Strategie kann durch das Hinzufügen von Trendfiltern und die Optimierung des Geldverwaltungssystems verbessert werden.
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 3h
basePeriod: 3h
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/
// © davisash666
//@version=5
strategy("Trend-Following Strategy", overlay=true)
// Inputs for strategy parameters
timeframe = input.timeframe("D", "Timeframe")
risk_tolerance = input.float(2.0, "Risk Tolerance (%)", step=0.1) / 100
capital_allocation = input.float(200, "Capital Allocation (%)", step=1) / 100
// Technical indicators (used to emulate machine learning)
ma_length_fast = input.int(10, "Fast MA Length")
ma_length_slow = input.int(50, "Slow MA Length")
atr_length = input.int(14, "ATR Length")
atr_multiplier = input.float(1.5, "ATR Multiplier")
// Calculations
fast_ma = ta.sma(close, ma_length_fast)
slow_ma = ta.sma(close, ma_length_slow)
atr = ta.atr(atr_length)
// Entry and exit conditions
long_condition = ta.crossover(fast_ma, slow_ma)
short_condition = ta.crossunder(fast_ma, slow_ma)
// Risk management
stop_loss_long = close - (atr * atr_multiplier)
stop_loss_short = close + (atr * atr_multiplier)
take_profit_long = close + (atr * atr_multiplier)
take_profit_short = close - (atr * atr_multiplier)
// Capital allocation
position_size = strategy.equity * capital_allocation
// Execute trades
if long_condition
strategy.entry("Long", strategy.long, qty=position_size / close)
strategy.exit("Take Profit/Stop Loss", "Long", stop=stop_loss_long, limit=take_profit_long)
if short_condition
strategy.entry("Short", strategy.short, qty=position_size / close)
strategy.exit("Take Profit/Stop Loss", "Short", stop=stop_loss_short, limit=take_profit_short)
// Plotting for visualization
plot(fast_ma, color=color.green, title="Fast MA")
plot(slow_ma, color=color.red, title="Slow MA")
plot(stop_loss_long, color=color.blue, title="Stop Loss (Long)", linewidth=1, style=plot.style_cross)
plot(take_profit_long, color=color.purple, title="Take Profit (Long)", linewidth=1, style=plot.style_cross)