Diese Strategie ist ein quantitatives Handelssystem, das auf doppelten gleitenden Durchschnitts-Crossover-Signalen basiert und Markttrendveränderungen durch die Schnittstelle von kurz- und langfristigen gleitenden Durchschnitten identifiziert, kombiniert mit dynamischem Stop-Loss- und Take-Profit-Management zur Risikokontrolle.
Die Strategie verwendet zwei einfache gleitende Durchschnitte (SMA) aus verschiedenen Perioden als Hauptgrundlage für Handelssignale. Ein langes Signal wird erzeugt, wenn der kurzfristige MA über den langfristigen MA überschreitet, und ein kurzes Signal wird erzeugt, wenn der kurzfristige MA unter den langfristigen MA überschreitet. Das System überprüft den aktuellen Positionsstatus, wenn Signale auftreten, schließt zuerst alle Gegenpositionen und eröffnet dann neue Positionen entsprechend der Signalrichtung. Jeder Handel setzt automatisch Stop-Loss- und Take-Profit-Level basierend auf voreingestellten Prozentsätzen, um ein dynamisches Management der Risiko-Belohnung-Verhältnisse zu erreichen.
Dies ist eine umfassende quantitative Handelsstrategie mit klarer Logik. Sie erfasst Trendveränderungen durch doppelten MA-Crossover und steuert Risiken mit dynamischen Stop-Loss- und Take-Profit-Levels. Die Stärken der Strategie liegen in ihrem systematischen Ansatz und Risikokontrolle, aber es muss auf verschiedene Marktrisiken beim Live-Handel geachtet werden. Durch kontinuierliche Optimierung und Verbesserung kann die Strategie eine stabile Performance in verschiedenen Marktumgebungen aufreiten. Es wird empfohlen, vor der Live-Implementierung gründliches Backtesting durchzuführen und die Parameter an die tatsächlichen Bedingungen anzupassen.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("BTCUSD Daily Strategy - Market Orders Only", overlay=true, initial_capital=10000, currency=currency.USD) // Configurable Inputs stop_loss_percent = input.float(title="Stop Loss (%)", defval=1.0, minval=0.0, step=0.1) take_profit_percent = input.float(title="Take Profit (%)", defval=2.0, minval=0.0, step=0.1) short_ma_length = input.int(title="Short MA Length", defval=9, minval=1) long_ma_length = input.int(title="Long MA Length", defval=21, minval=1) // Moving Averages short_ma = ta.sma(close, short_ma_length) long_ma = ta.sma(close, long_ma_length) // Plotting Moving Averages plot(short_ma, color=color.blue, title="Short MA") plot(long_ma, color=color.red, title="Long MA") // Buy and Sell Signals buy_signal = ta.crossover(short_ma, long_ma) sell_signal = ta.crossunder(short_ma, long_ma) // Market Buy Logic if (buy_signal and strategy.position_size <= 0) // Close any existing short position if (strategy.position_size < 0) strategy.close(id="Market Sell") // Calculate Stop Loss and Take Profit Prices entry_price = close long_stop = entry_price * (1 - stop_loss_percent / 100) long_take_profit = entry_price * (1 + take_profit_percent / 100) // Enter Long Position strategy.entry(id="Market Buy", direction=strategy.long) strategy.exit(id="Exit Long", from_entry="Market Buy", stop=long_stop, limit=long_take_profit) // Alert for Market Buy alert("Market Buy Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(long_stop) + ", Take Profit: " + str.tostring(long_take_profit), alert.freq_once_per_bar_close) // Market Sell Logic if (sell_signal and strategy.position_size >= 0) // Close any existing long position if (strategy.position_size > 0) strategy.close(id="Market Buy") // Calculate Stop Loss and Take Profit Prices entry_price = close short_stop = entry_price * (1 + stop_loss_percent / 100) short_take_profit = entry_price * (1 - take_profit_percent / 100) // Enter Short Position strategy.entry(id="Market Sell", direction=strategy.short) strategy.exit(id="Exit Short", from_entry="Market Sell", stop=short_stop, limit=short_take_profit) // Alert for Market Sell alert("Market Sell Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(short_stop) + ", Take Profit: " + str.tostring(short_take_profit), alert.freq_once_per_bar_close)