거북이 거래 방식을 기반으로 한 브레이크아웃 전략


생성 날짜: 2023-10-17 17:22:34 마지막으로 수정됨: 2023-10-17 17:22:34
복사: 2 클릭수: 920
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

거북이 거래 방식을 기반으로 한 브레이크아웃 전략

개요

이 전략은 유명한 해파리 거래법을 기반으로, Donchian channel 지표를 사용하여 가격 돌파구를 판단하고, ATR 지표와 결합하여 중지 손실을 설정하여 트렌드 추적을 구현한다. 이 전략의 장점은 회수 제어 능력이 강하여 단일 스톱을 효과적으로 제어하여 연속 손실의 가능성을 줄일 수 있다. 그러나 이 전략은 거래 품종에 대한 적응력이 약하며, 채널 매개 변수를 최적화해야 한다.

원칙

이 전략은 주로 두 가지 지표에 기반을 두고 있다. 돈치안 채널과 ATR이다.

돈치안 통로는 최고 가격과 최저 가격으로 계산된다. 전략의 기본 설정은 통로의 길이가 20일이며, 20일 이내에 최고 가격과 최저 가격을 그리는 통로이다. 가격이 통로 위를 돌파하면 구매 신호를 발생시키고, 가격이 통로 아래를 돌파하면 판매 신호를 발생시킨다.

ATR 지표는 시장의 변동성을 측정하고 스톱로드를 설정하는 데 사용됩니다. ATR 주기는 20일로 설정되어 있습니다. 전략은 ATR의 두 배를 스톱로드로 설정합니다.

거래 논리는 다음과 같습니다.

  1. 가격대가 통로 위를 넘어가면 더 많이 들어갑니다.

  2. 정지점은 입점시의 최저점 빼기 ATR의 2배이다.

  3. 가격이 통로의 하단에 돌파 할 때, 상위 포지션을 평평하게하십시오.

  4. 가격이 통로의 하단 지점에 도달했을 때, 공백으로 입점하십시오.

  5. 정지점은 입점시의 최고점과 ATR의 두 배입니다.

  6. 가격이 통로 상단에서 돌파될 때, 상위 포지션은 공백된다.

종합적으로, 이 전략은 Donchian 통로에 의존하여 트렌드 방향과 출입 시기를 판단하고 ATR을 설정하여 위험을 통제하고 트렌드를 추적합니다.

우위 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 철회 제어 능력이 강하다. ATR 지표를 사용하여 중지 손실을 설정하여 단일 손실을 효과적으로 제어 할 수 있습니다.

  2. 트렌드 추적이 구현되었다. Donchian 통로는 가격 돌파구를 효과적으로 판단하고 트렌드 전환을 지시한다.

  3. 높은 변동성 품종에 적합하다. ATR 지표는 시장의 변동성을 고려하고, 스톱 손실 설정은 다른 품종의 특성에 더 적합하다.

  4. 전략은 간단하고 명확하며, 실행을 이해하기 쉽습니다.

  5. 파이썬 언어의 유연한 작성 및 최적화 전략.

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 통로 매개 변수는 최적화가 필요합니다. 다양한 품종과 시간 주기에서 통로 매개 변수는 시장 특성에 맞게 조정해야 합니다.

  2. 연속적인 중단 위험. 이상적인 상황에서는 단기간에 여러 번의 중단이 발생하여 큰 손실이 발생할 수 있습니다.

  3. ATR 파라미터는 테스트해야 한다. ATR 파라미터는 직접적으로 손해 방지 효과에 영향을 미치며, 다른 품종과 변동 환경에 따라 조정해야 한다.

  4. 거래 빈도가 너무 높을 수 있다. 트렌드가 보이지 않는 불안한 시장에서 과도한 교차 신호가 발생할 수 있다.

  5. 이윤은 제한될 수 있다. 전략은 손실을 막는 데 주력하며, 동향상황의 전체 상승을 효과적으로 포착할 수 없다.

  6. 과장된 상황에서는 막힘이 충분하지 않을 수 있다. 일부 비정상적인 상황에서는 가격이 급격히 상승하여 직접적으로 막힘을 유발할 수 있다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화될 수 있습니다.

  1. 통로 매개 변수를 최적화하고, 다른 매개 변수들이 다른 품종에 적합한지 테스트한다.

  2. 필터링 조건을 추가하여 불안정한 상황에서 과도한 신호를 발생하지 않도록하십시오.

  3. ATR 사이클 파라미터를 최적화하고, 다른 파라미터가 스톱로스 효과에 미치는 영향을 테스트한다.

  4. 피라미드 진입 전략을 추가하고, 트렌드 상황에서 포지션을 추가하고, 수익 공간을 확장한다.

  5. 다른 지표와 결합하여 필터링 효과를 높인다. MACD, KD와 같은 지표는 트렌드 상황을 판단하여 역거래를 피한다.

  6. 슬라이드 포인트, 수수료 등 거래비용에 따라 스톱로스 지점을 최적화한다. 스톱로스가 너무 가까이 다가오지 않도록 한다.

  7. 다양한 품종의 적응성을 테스트하고 특정 품종을 대상으로 파라미터를 조정한다.

요약하다

이 전략은 해파리 거래법의 입문 버전으로, 전반적으로 전략 아이디어는 간단하고 명확하며, 회수 제어 능력이 강하여 해파리 거래법의 원리를 효과적으로 검증할 수 있다. 그러나 이 전략은 거래 품종에 대한 적응력이 약하며, 다른 품종에 따라 구체적인 최적화 매개 변수를 필요로 한다. 전략 효과를 발휘하기 위해. 매개 변수 최적화, 필터 조건 증가 등의 개선으로 이 전략은 양적 거래의 기본 트렌드 추적 전략 중 하나가 될 수 있다.

전략 소스 코드
/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Based on Turtle traders strategy: buy/sell on Donchian breakouts and stop loss on ATR 2x
// initial version considerations :
//// 1. Does not consider filter for avoiding new entries after winning trades (filtering rule from Turtle Strategy on 20 day breakout strategy) 
//// 2. Does not consider pyramiding (aditional entries after 1N price movements)

strategy("Turtle trading strategy (Donchian/ATR)", overlay=true)

enter_period = input(20, minval=1, title="Enter Channel")
exit_period = input(10, minval=1, title="Exit Channel")
offset_bar = input(0,minval=0, title ="Offset Bars")
direction = input("Long",options=["Long","Short"],title="Direction")
max_length = max(enter_period,exit_period)
atrmult = input(2,title="ATR multiplier (Stop Loss)")
atrperiod = input(20,title="ATR Period")

closed_pos = false
dir_long = direction == "Long"? true : false
atr = atr(atrperiod)
upper = dir_long ? highest(enter_period): highest(exit_period)
lower = dir_long ? lowest(exit_period): lowest(enter_period)
atrupper = close + atr
atrlower = close - atr
plotted_atr = dir_long ? atrlower : atrupper

//basis = avg(upper, lower)

l = plot(lower, style=line, linewidth=3, color=lime, offset=1)
u = plot(upper, style=line, linewidth=3, color=lime, offset=1)
a = plot(plotted_atr, style=line,linewidth=2,color=red,offset=1)
//plot(basis, color=yellow, style=line, linewidth=1, title="Mid-Line Average")
//break upper Donchian (with 1 candle offset) (buy signal)
break_up = (close >= upper[1])
//break lower Donchian (with 1 candle offset) (sell signal)
break_down = (close <= lower[1])
stop_loss = dir_long ? (close<=plotted_atr[1]) : (close>=plotted_atr[1])

if break_up and dir_long
    strategy.entry("buy", strategy.long, 1)
    closed_pos :=false
if (break_down or stop_loss) and dir_long
    strategy.close("buy")
    
if break_down and not dir_long
    strategy.entry("sell", strategy.short, 1)
    closed_pos :=false
if (break_up or stop_loss) and not dir_long
    strategy.close("sell")
    closed_pos :=true
    
losing_trade = strategy.equity[0]<strategy.equity[1]
//plotshape(losing_trade,text="Losing!")    
plotshape(stop_loss,style=dir_long?shape.labeldown:shape.labelup,text="Stop!")
//plot(strategy.equity)