돈치안 채널 브레이크업 양적 거래 전략

저자:차오장, 날짜: 2023-12-08 11:00:05
태그:

img

전반적인 설명

이 전략의 핵심 아이디어는 돈치안 채널의 가격 브레이크에 기반하여 거래 결정을 내리는 것입니다. 양적 전략의 다음 유형의 트렌드에 속합니다. 자동으로 가격 채널을 식별 할 수 있습니다. 가격이 채널의 상부 레일을 통과하면 긴 포지션이 열립니다. 가격이 채널의 하부 레일 또는 스톱 로스 포인트 근처로 떨어지면 포지션이 닫습니다. 이 전략은 중장기 가격 추세를 파악하는 것을 목표로하며 인덱스 선물과 같은 금융 파생 상품의 알고리즘 거래에 적합합니다.

원칙

이 전략은 돈치안 채널 지표에 기초한다. 돈치안 채널은 일정 기간 동안 가장 높고 가장 낮은 가격에 의해 뽑히는 채널이다. 계산 방법은:

상부 레일 = 지난 n 기간 동안 가장 높은 가격 로저 레일 = 지난 n 기간 동안 가장 낮은 가격

가격이 상부 레일을 뚫고 갈 때, 긴 트렌드가 시작되었다고 간주됩니다. 가격이 하부 레일을 뚫고 갈 때, 짧은 트렌드가 시작되었다고 간주됩니다. 이 전략은 상부 레일을 깨는 경우에만 고려됩니다.

구체적인 거래 논리는 다음과 같습니다.

  1. 지난 n 기간 동안 가장 높은 가격을 사용하여 Donchian 채널의 상단 레일을 그래프화하십시오.
  2. 닫기 가격이 상단 레일을 통과하면, 긴 이동
  3. 마감 가격이 하부 레일 근처 또는 미리 설정된 스톱 손실 지점으로 다시 떨어지면 마감 스톱으로 수익을 취하는 경우

장점

이 전략의 장점은 다음과 같습니다.

  1. 전략 아이디어는 명확하고 이해하기 쉽고 실행하기 쉽습니다.
  2. 돈치안 채널은 트렌드 방향을 판단하는 성숙하고 신뢰할 수있는 지표입니다.
  3. 수동 간섭 없이 채널을 자동으로 식별합니다.
  4. 커스터마이징 가능한 매개 변수는 매우 적응력을 제공합니다.
  5. 손실을 제한하기 위한 스톱 로스 메커니즘을 포함합니다.

위험성

또한 몇 가지 위험이 있습니다.

  1. 돈치안 채널은 가짜 탈출이 있을 수 있어 불필요한 손실이 발생할 수 있습니다.
  2. 잘못된 스톱 로스 포지셔닝은 손실을 증가시킬 수 있습니다
  3. 가격이 채널 레일 근처에있을 때 반전 위험에주의를 기울여
  4. 부적절한 매개 변수 설정은 전략 성과에 부정적인 영향을 미칠 수 있습니다.

해결책:

  1. 가짜 브레이크를 피하기 위해 다른 지표를 통합하여 필터를 추가합니다.
  2. 부드러운 출구를 위해 중지 손실 위치를 최적화
  3. 가격이 채널 레일 근처에 있을 때 포지션 크기를 늘리거나 수익 범위를 넓히는 것을 고려하십시오.
  4. 최적 값을 찾기 위해 다른 매개 변수를 테스트

최적화 방향

이 전략은 다음 영역에서 더 이상 최적화 될 수 있습니다.

  1. 가짜 브레이크오웃을 피하기 위해 MACD, KD와 같은 다른 지표를 추가합니다.
  2. Stop Loss 메커니즘을 최적화합니다. 예를 들어 Stop Loss를 이동시키는 것.
  3. 참여율 통제를 최적화하십시오. 예를 들어 변동성이 증가할 때만 거래하십시오.
  4. 최적의 조합을 찾기 위해 매개 변수 최적화

요약

이 전략의 전반적인 아이디어는 명확하고 이해하기 쉽고 구현하기 쉽습니다. 트렌드 방향을 자동으로 식별하기 위해 성숙한 돈치안 채널을 활용합니다. 또한 구성은 다양한 요구를 충족시키기 위해 매우 유연합니다. 적절한 스톱 로스 및 매개 변수 최적화로 좋은 결과를 얻을 수 있습니다. 결론적으로, 이 전략은 낮은 학습 곡선을 가지고 있지만 합리적인 효율성을 가지고 있습니다. 시작량 거래 전략으로 적합합니다.


/*backtest
start: 2022-12-07 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Giovanni_Trombetta

// Strategy to capture price channel breakouts

//@version=4
strategy("ChannelsBreakout", max_bars_back=50, overlay=true)

instrument = input(1, title = "Select 1: Stock/Forex, 2: Future")
money = input(10000, title = "Money for each trade")
backtest_start = input(2000, "Insert first year to backtest")
period = input(50, title = "Period in bars of Donchian Channel")
monetary_stoploss = input(1000, title = "Monetary Stop Loss")

quantity = if instrument != 1 
    1
else
    int(money / close)
    
upBarrier = highest(high,period)
downBarrier = lowest(low,period)
up = highest(high,period / 4)
down = lowest(low,period / 4)

plot(upBarrier, color=color.green, linewidth=2)
plot(downBarrier, color=color.red, linewidth=2)
plot(up, color=color.lime, linewidth=1)
plot(down, color=color.orange, linewidth=2)

longCondition = crossover(close, upBarrier[1]) and year >= backtest_start

if (longCondition)
    strategy.entry("Long", strategy.long, quantity, when = strategy.position_size == 0)

closeCondition = crossunder(close, down[1]) or down < down[1]

if (closeCondition)
    strategy.close("Long", comment = "Trailing")
    
stop_level = strategy.position_avg_price - monetary_stoploss / strategy.position_size
strategy.exit("StopLoss", from_entry = "Long", stop = stop_level)
plot(stop_level, color=color.yellow, linewidth=2)

// l = label.new(bar_index, na,
//   text="PineScript Code", color= color.lime, textcolor = color.white,
//   style=label.style_labelup, yloc=yloc.belowbar, size=size.normal)
// label.delete(l[1])

더 많은