이 전략은 두 가지 기술 지표: 돈치안 채널과 간단한 이동 평균 (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()