더블 돈치안 채널 브레이크아웃 전략


생성 날짜: 2024-02-21 11:38:48 마지막으로 수정됨: 2024-02-21 11:38:48
복사: 0 클릭수: 971
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블 돈치안 채널 브레이크아웃 전략

개요

이중 돈치안 채널 브레이크아웃 전략 (Dual Donchian Channel Breakout Strategy) 은 돈치안 채널을 기반으로 한 브레이크 트레이딩 전략이다. 그것은 빠르고 느린 두 개의 돈치안 채널을 사용하여 다단계 및 공백 거래 신호를 구축한다. 가격이 느린 채널을 뚫을 때 포지션을 더하거나 공백하게하고, 가격이 빠른 채널을 다시 뚫을 때 포지션을 평하게한다. 이 전략은 동시에 중지 및 중지 손실 조건을 설정한다.

전략 원칙

이중 돈치안 통로 침투 전략은 두 가지의 변수에 기반합니다.느린 돈치안 통로 주기그리고빠른 Donchian 통로 사이클│전략은 먼저 두 개의 Donchian 통로의 상반도와 하반도를 계산한다.

  • 느린 Donchian 통로 주기는 50개의 K선으로 기본 설정되어 있으며, 이는 더 장기적인 경향을 반영한다.
  • 빠른 Donchian 통로 주기는 30 K 선을 기본으로 하고, 보다 짧은 경향의 변화를 반영한다.

다중 입구 신호는가격 상승그리고변동률이 하락률보다 높습니다.◦ 공중 입구 신호는가격 하락그리고변동률이 하락률보다 높습니다.

다단계 상쇄상승 신호는 가격의 재개입니다.은 경로◦ 공허한 상쇄상장 신호는 가격 재개입니다.경로를 돌파

이 정책은 동시에탈퇴 조건 △ 기본 설정은 최대 인수 비율이 2%입니다. 즉, 가격 변화가 2%를 달성하면 상장 절반을 중단합니다 △

우위 분석

두 개의 돈치안 통로 돌파 전략은 다음과 같은 장점을 가지고 있다:

  1. 이중 채널 디자인을 사용하여 더 긴 선과 더 짧은 선의 트렌드 신호를 포착하여 더 정확한 입구를 구현할 수 있습니다.

  2. 변동률 조건은 상장 시장의 빈번한 거래를 방지한다.

  3. 스톱과 스톱로스 설정은 포괄적이며, 수익을 일부 고정시키거나 손실을 줄일 수 있다.

  4. 전략적 논리는 간단하고 명확하며, 이해하기 쉽고 구현하기 쉽습니다.

  5. 다양한 품종과 거래 선호도에 맞게 사용자 정의 가능한 파라미터

위험 분석

두 개의 돈치안 통로 (Double Donchian Channel) 를 뚫는 전략에는 위험도 있습니다.

  1. 쌍채널 설계는 민감하고 잘못된 신호를 발생시킬 수 있다. 채널 범위를 적절히 확장하거나 오동률 매개 변수를 조정하여 잘못된 신호를 줄일 수 있다.

  2. 급격한 거래상황의 정지 손실은 너무 자주 유발될 수 있습니다. 거래 횟수 상한을 설정하거나 정지 손실을 확대할 수 있습니다.

  3. 고정 비율 스톱은 수익을 최대화 할 수 없습니다. 스톱을 동적으로 추적하거나 스톱 가격을 결정하는 인적 개입을 고려할 수 있습니다.

  4. 탐사 외의 실디 상황은 예상과 일치하지 않을 수 있으며, 사전에 충분히 검증하고, 필요한 경우 매개 변수를 조정해야 한다.

최적화 방향

이중 Donchian 통로 돌파 전략은 다음과 같은 측면에서 최적화될 수 있다:

  1. 더 많은 주기 변수 조합을 테스트하여 최적의 변수를 찾습니다.

  2. 다른 변동률 계산 방법을 시도해 보세요. ATR처럼 가장 안정적인 변수를 찾아보세요.

  3. 트렌드 후반에 반발을 일으키는 손실을 방지하기 위해 포지션을 열 수 있는 제한을 설정하십시오.

  4. 동적으로 스톱을 추적하여 더 높은 단독 수익을 얻으세요.

  5. 다른 지표와 결합하여 진입 신호를 필터링하여 의사 결정의 정확성을 향상시킵니다. 예를 들어 합성 교통량 지표와 결합합니다.

  6. 고정 지분, 케일리 공식 등과 같은 자금 관리 전략을 최적화하여 더 나은 위험-수익 비율을 제어한다.

요약하다

이중 Donchian 통로 돌파 전략은 전체적으로 우수한 트렌드 추적 전략이다. 그것은 동시에 트렌드 식별 능력과 역전 방어를 할 수 있다. 파라미터 최적화 및 규칙 개선을 통해 대부분의 품종에 적응할 수 있다. 이 전략은 간단하고 실용적이며 거래자가 학습하고 적용할 가치가 있다.

전략 소스 코드
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © omererkan

//@version=5
strategy(title="Double Donchian Channel Breakout", overlay=true, initial_capital = 1000, commission_value = 0.05, default_qty_value = 100, default_qty_type = strategy.percent_of_equity)

// Donchian Channels
slowLen = input.int(50, title="Slow Donchian", group = "Conditions")
fastLen = input.int(30, title="Fast Donchian", group = "Conditions")

// Volatility Calculated as a percentage
volatility = input.int(3, title="Volatility (%)", group = "Conditions")

// Long positions
long = input.bool(true, "Long Position On/Off", group = "Strategy")
longProfitPerc = input.float(2, title="Long TP1 (%)", group = "Strategy", minval=0.0, step=0.1) * 0.01

// Short positions
short = input.bool(true, "Short Position On/Off", group = "Strategy")
shortProfitPerc = input.float(2, title="Short TP1 (%)", group = "Strategy", minval=0.0, step=0.1) * 0.01

// First take profit point for positions
TP1Yuzde =input.int(50, title = "TP1 Position Amount (%)", group = "Strategy")

// Slow Donchian Calculated
ubSlow = ta.highest(high, slowLen)[1]
lbSlow = ta.lowest(low, slowLen)[1]

// Fast Donchian Calculated
ubFast = ta.highest(high, fastLen)[1]
lbFast = ta.lowest(low, fastLen)[1]

// Plot Donchian Channel for entries
plot(ubSlow, color=color.green, linewidth=2, title="Slow DoCh - Upperband")
plot(lbSlow, color=color.green, linewidth=2, title="Slow DoCh - Lowerband")
plot(ubFast, color=color.blue, linewidth=2, title="Fast DoCh - Upperband")
plot(lbFast, color=color.blue, linewidth=2, title="Fast DoCh - Lowerband")

// This calculation, the strategy does not open position in the horizontal market.
fark = (ubSlow - lbSlow) / lbSlow * 100

// Take profit levels
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Code long trading conditions
longCondition = ta.crossover(close, ubSlow) and fark > volatility
if longCondition and long == true
    strategy.entry("Long", strategy.long)

// Code short trading conditions
shortCondition = ta.crossunder(close, lbSlow) and fark > volatility
if shortCondition and short == true
    strategy.entry("Short", strategy.short)

// Determine long trading conditions
if strategy.position_size > 0 and ta.crossunder(close, lbFast) 
    strategy.close_all("Close All")

// Determine short trading conditions
if strategy.position_size < 0 and ta.crossover(close, ubFast)
    strategy.close_all("Close All")

// Take Profit Long
if strategy.position_size > 0
    strategy.exit("TP1", "Long", qty_percent = TP1Yuzde, limit = longExitPrice)

// Take Profit Short
if strategy.position_size < 0
    strategy.exit("TP1", "Short", qty_percent = TP1Yuzde, limit = shortExitPrice)