この戦略は2つの技術指標:ドンキアンチャネルとシンプル・ムービング・アベア (SMA) を組み合わせます.価格はドンキアンチャネルの下帯を下に突破してSMA上を閉じるときにロングポジションを開きます.逆に,価格はドンキアンチャネル上帯を下に突破してSMA下を閉じるときにショートポジションを開きます.価格はドンキアンチャネル上帯に達するとロングポジションが閉まり,価格は下帯に達するとショートポジションが閉まります.この戦略は強いトレンドを持つ市場に適しています.
ダイナミック・ドンチアン・チャネルとシンプル・ムービング・平均コンビネーション戦略は,シンプルで使いやすい定量的な取引戦略の枠組みである.トレンドフォローと波動性ブレイクアウトの観点からエントリーと出口ロジックを構築し,強いトレンドを持つ楽器に適している.しかし,この戦略は頻繁にレンジバインド市場ではパフォーマンスが悪く,パラメータ強さは中等である.補助的なエントリー条件,ダイナミック・プロフィートテイキング,パラメータ自己適応メカニズムを導入することによって戦略の適応性と強さを向上させることができる.全体的に,この戦略は,より高度な定量的な戦略を作成するためにさらに修正および改善される基本的なフレームワーク戦略として機能することができる.
/*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()