이 전략은 표준 돈치안 채널 지표에 기초하여 개발됩니다. 시장 제작자
이 전략은 또한 이중 확인 메커니즘을 비활성화 할 수 있는 옵션을 제공하므로 새로운 최고 또는 최저치를 볼 때 즉시 거래 신호를 발송 할 수 있습니다.
쇼트하는 것을 싫어하는 사람들에게는 쇼트 포지션을 제외할 수도 있습니다.
전략은 돈치안 채널 지표의 상단과 하단 밴드를 기반으로 합니다. 상단은 지난 n 바에서 가장 높은 높이고, 하단 밴드는 지난 n 바에서 가장 낮은 낮입니다. 기본 룩백 기간 n은 20입니다.
중위 대역은 상위 대역과 하위 대역의 평균이며, 트렌드 방향을 측정하는 데 사용될 수 있습니다.
가격이 상위 범위를 넘을 때, 전략은 기존의 긴 포지션이 없으면 길게됩니다. 가격이 하위 범위를 넘을 때, 전략은 기존의 짧은 포지션이 없으면 짧게됩니다.
가짜 브레이크오웃을 필터링하기 위해,
이 전략의 장점은 다음과 같습니다.
돈치안 채널 표시기는 간단하고 이해하기 쉽습니다.
이중 확인 메커니즘은 가짜 유출을 효과적으로 필터링하고 함락되는 것을 피합니다.
채널 룩백 기간은 다른 시장 환경에 적응하도록 사용자 정의 할 수 있습니다.
마감판매 옵션은 다양한 투자자의 요구를 수용합니다.
코드는 더 나아가 개발을 위해 깨끗하고 이해하기 쉽습니다.
이 전략에는 몇 가지 위험도 있습니다.
이중 확인은 일부 거래 기회를 놓칠 수 있습니다.
잘못된 채널 기간 설정은 너무 빈번하거나 희박한 거래로 이어질 수 있습니다.
장기 보유 기간은 위험을 효과적으로 통제하지 못할 수 있습니다.
마감 판매로 인한 추가 위험은 주의해야 합니다.
백테스트 오버피팅은 조심해야 합니다.
대응 솔루션:
이중 확인을 비활성화하거나 확인 간격을 단축합니다.
매개 변수를 최적화하고 적절한 채널 기간을 선택합니다.
트레이드 당 적당히 한정된 스톱 로스/이익을 설정합니다.
단축 판매를 비활성화하고, 단축 판매를 할 수 있습니다.
다양한 시장 환경에서 전략을 강력하게 평가합니다.
개선 가능성은 다음을 포함합니다.
변동성 기준으로 포지션 크기를 동적으로 조정합니다.
허위 파열을 필터링해
트렌드를 추적하기 위해 후속 정지 메커니즘을 포함합니다.
다른 지표를 결합하여 트렌드 방향을 결정하고 주요 전환점을 놓치지 않도록하십시오.
기계 학습을 통해 매개 변수를 자동 최적화합니다.
이러한 개선은 전략의 안정성과 수익성을 더욱 향상시킬 수 있습니다.
이것은 돈치안 채널의 이중 확인 메커니즘을 기반으로 한 간단하지만 효과적인 트렌드 다음 전략입니다. 매개 변수 조정 및 기능 확장으로 전략은 더 다양한 시장 환경에 적응 할 수 있으며 실용적인 유용성이 있습니다.
/*backtest start: 2022-12-15 00:00:00 end: 2023-12-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Donchian Channels", shorttitle="DC", overlay=true, initial_capital=10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick=true) length = input(20, minval=1) lower = lowest(length) upper = highest(length) basis = avg(upper, lower) bool inShortPos = false bool inLongPos = false bool wait4confirmation = input(true, title="Wait for double confirmation?") bool doShort = input(true, title="Include short positions") plot(basis, "Basis", color=#FF6D00) u = plot(upper, "Upper", color=#2962FF) l = plot(lower, "Lower", color=#2962FF) fill(u, l, color=color.rgb(33, 150, 243, 95), title="Background") //if(inShortPos == false and inLongPos == false) if(not inLongPos and upper > upper[1]) if(wait4confirmation) if(not inLongPos and upper > upper[1] and upper[1] > upper[2]) strategy.close("Short", true) strategy.entry("Buy", true) else strategy.close("Short", true) strategy.entry("Buy", true) else if(not inShortPos and lower < lower[1]) if(wait4confirmation) if(not inShortPos and lower < lower[1] and lower[1] < lower[2]) strategy.close("Buy", true) if(doShort) strategy.entry("Short", true) else strategy.close("Buy", true) if(doShort) strategy.entry("Short", true)