Diese Strategie kombiniert zwei technische Indikatoren: Donchian Channel und Simple Moving Average (SMA). Sie eröffnet eine Long-Position, wenn der Preis unter das untere Band des Donchian Channel bricht und über dem SMA schließt. Umgekehrt eröffnet sie eine Short-Position, wenn der Preis über das obere Band des Donchian Channel bricht und unter dem SMA schließt. Die Long-Position wird geschlossen, wenn der Preis das obere Band des Donchian Channel erreicht, während die Short-Position geschlossen wird, wenn der Preis das untere Band erreicht. Diese Strategie eignet sich für Märkte mit starken Trends.
Die Dynamic Donchian Channel and Simple Moving Average Combination Strategy ist ein einfaches und einfach zu bedienendes Quantitative Trading-Strategie-Framework. Es konstruiert die Ein- und Ausstiegslogik aus der Perspektive des Trendfolgens und des Volatilitätsbruchs und eignet sich damit für Instrumente mit starken Trends. Die Strategie ist jedoch in häufig Rangebound-Märkten schlecht und ihre Parameterrobustheit ist mittelmäßig. Die Anpassungsfähigkeit und Robustheit der Strategie kann durch die Einführung von Hilfsbedingungen, dynamischer Gewinnnahme und Parameter-Selbstanpassungsmechanismen verbessert werden. Insgesamt kann diese Strategie als grundlegende Rahmenstrategie dienen, die weiter modifiziert und verbessert werden kann, um fortschrittlichere quantitative Strategien zu schaffen.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("FBK Donchian Channel Strategy", overlay=true) // Inputs donchian_period = input.int(20, title="Donchian Channel Period") donchian_offset = input.int(1, title="Donchian Channel Offset") sma_period = input.int(200, title="SMA Period") start_date = input(timestamp("2023-01-01 00:00 +0000"), title="Start Date") end_date = input(timestamp("2023-12-31 23:59 +0000"), title="End Date") trade_type = input.string("Both", title="Trade Type", options=["Buy Only", "Sell Only", "Both"]) // Calculate indicators donchian_upper = ta.highest(high, donchian_period)[donchian_offset] donchian_lower = ta.lowest(low, donchian_period)[donchian_offset] sma = ta.sma(close, sma_period) // Plot indicators plot(donchian_upper, color=color.red, title="Donchian Upper") plot(donchian_lower, color=color.green, title="Donchian Lower") plot(sma, color=color.blue, title="SMA") // Helper function to check if within testing period is_in_testing_period() => true // Entry conditions long_condition = low <= donchian_lower and close > sma short_condition = high >= donchian_upper and close < sma // Exit conditions exit_long_condition = high >= donchian_upper exit_short_condition = low <= donchian_lower // Open long position if (is_in_testing_period() and (trade_type == "Buy Only" or trade_type == "Both") and long_condition) strategy.entry("Long", strategy.long) // Close long position if (is_in_testing_period() and exit_long_condition) strategy.close("Long") // Open short position if (is_in_testing_period() and (trade_type == "Sell Only" or trade_type == "Both") and short_condition) strategy.entry("Short", strategy.short) // Close short position if (is_in_testing_period() and exit_short_condition) strategy.close("Short") // Close all positions at the end of the testing period if not is_in_testing_period() strategy.close_all()