두 개의 돈치안 채널 탈출 전략

저자:차오장날짜: 2024-02-21 11:38:48
태그:

img

전반적인 설명

듀얼 돈치안 채널 브레이크아웃 전략 (Dual Donchian Channel Breakout Strategy) 은 돈치안 채널을 기반으로 하는 브레이크아웃 거래 전략이다. 빠르고 느린 돈치안 채널을 사용하여 긴 및 짧은 거래 신호를 구성한다. 가격이 느린 채널을 통과할 때 긴 또는 짧은 포지션을 개척한다. 가격이 빠른 채널을 통과할 때 포지션을 닫는다. 전략은 또한 수익을 취하고 손실을 멈추는 조건을 설정한다.

전략 원칙

이중 돈치안 채널 브레이크아웃 전략은 두 가지 매개 변수에 기반합니다.느린 돈치안 운하 시대그리고빠른 돈치안 채널 기간전략은 먼저 두 개의 돈치안 채널의 상부와 하부 밴드를 계산합니다.

  • 기본 느린 돈치안 채널 기간은 50 바이며, 장기적인 경향을 반영합니다.
  • 기본 빠른 돈치안 채널 기간은 30 바이며, 단기 트렌드 변화를 반영합니다.

긴 입력 신호는상단보다 높은 부진와 함께변동성이 임계보다 높습니다.짧은 입력 신호는하단역 이하의 분포와 함께변동성이 임계보다 높습니다..

긴 스톱 손실 출구 신호는하단역 이하의 분포짧은 스톱 손실 출구 신호는상단보다 높은 부진.

이 전략은 또한이윤을 취하는 것출구 조건. 기본 수익률은 2%입니다. 즉, 가격 움직임이 2%에 도달 할 때 수익 절반 지위를 취합니다.

이점 분석

이중 돈치안 채널 브레이크업 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 이중 채널 디자인은 더 길고 짧은 시간 프레임에서 트렌드 신호를 캡처 할 수 있으며 더 정확한 입력을 허용합니다.

  2. 변동성 조건은 범위에 묶인 시장에서 빈번한 거래를 피합니다.

  3. 종합적인 영업이익 및 스톱 손실 설정은 부분적인 수익을 차단하고 손실을 줄입니다.

  4. 간단하고 명확한 전략 논리, 이해하기 쉽고 실행하기 쉽습니다.

  5. 사용자 정의 가능한 매개 변수는 다른 제품과 무역 선호도에 맞습니다.

위험 분석

이중 돈치안 채널의 전략은 또한 몇 가지 위험을 가지고 있습니다.

  1. 이중 채널 디자인은 민감하며 잘못된 신호를 생성 할 수 있습니다. 더 넓은 채널 또는 조정된 변동성 매개 변수는 잘못된 신호를 줄일 수 있습니다.

  2. 변동성 있는 시장에서 스톱 로스는 너무 자주 발생 할 수 있습니다. 거래 수에 제한을 설정하거나 스톱 로스 범위를 넓히는 것을 고려하십시오.

  3. 일정한 비율의 수익은 수익을 극대화하지 못합니다. 최적의 수익 가격을 위해 동적 또는 수동 개입을 고려하십시오.

  4. 실제 거래 성과는 백테스트 예상과 다를 수 있습니다. 필요한 경우 철저한 검증과 매개 변수 조정이 필요합니다.

최적화 방향

이중 돈치안 채널 브레이크아웃 전략은 몇 가지 측면에서 최적화 될 수 있습니다.

  1. 최적의 매개 변수를 찾기 위해 더 많은 기간 조합을 테스트합니다.

  2. ATR 같은 다른 변동성 척도를 사용해 가장 안정적인 측정값을 찾으세요.

  3. 트렌드 끝에서 손실을 피하기 위해 엔트리 수에 한계를 설정합니다.

  4. 더 높은 단일 거래 수익을 위해 동적 취득을 시도하십시오.

  5. 다른 지표를 포함하여 항목을 필터링하고 정확도를 향상시킵니다. 예를 들어 볼륨.

  6. 더 나은 리스크 통제를 위해 고정 분수 위치 사이징과 같은 돈 관리 모델을 최적화하십시오.

결론

결론적으로, 이중 돈치안 채널 브레이크아웃 전략은 트렌드를 따르는 훌륭한 전략이다. 트렌드 식별과 역전 보호 기능을 모두 결합한다. 매개 변수 최적화와 규칙 정밀화로 대부분의 제품과 시장 조건에서 수익성이 높을 수 있다. 전략은 간단하고 실용적이며 양적 거래자에게 학습하고 적용할 가치가 있다.


/*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)

더 많은