거북이 거래 전략, 돌파 모멘텀 추적


생성 날짜: 2023-12-25 17:12:05 마지막으로 수정됨: 2023-12-25 17:12:05
복사: 0 클릭수: 428
1
집중하다
1179
수행원

거북이 거래 전략, 돌파 모멘텀 추적

개요

거북이 거래 전략 (영어: Turtle Trading Strategy) 은 파격적 동력을 추적하는 트렌드 추적 전략이다. 1980년대에 유명한 거래자 리처드 데니스 (Richard Dennis) 가 개발한 것으로, 트레이더가 타고난 것이 아닌 규칙을 통해 양성할 수 있는지 검증하기 위해 사용되었다. 이 전략의 핵심적인 심리는 가격 파격을 추적하고 트렌드를 추적하는 동시에, 하향 위험을 제한하기 위해 자금 관리 원칙을 엄격히 준수하는 것이다.

전략 원칙

해안 거래 전략은 두 가지 변수 N 및 N / 2를 사용하여 채널을 구축한다. 구체적으로, 최근 N 일 및 N / 2 일 동안의 최고 가격과 최저 가격을 각각 계산한다. 가격이 N 일 채널을 초과할 때 다단위 포지션을 구축하고, 가격이 N / 2 일 채널을 넘어설 때 평점 포지션을 구축한다. 가격이 N 일 채널을 넘어설 때 공백 포지션을 구축하고, 가격이 N / 2 일 채널을 초과할 때 평점 포지션을 구축한다.

코드에서, N은enter_slowN/2 대응enter_fast은 최근 55일과 20일간의 최고가격 (highest) 을 각각 계산한다.slowL그리고fastL가장 낮은 가격lowest(slowSfastS)。当价格超过55天通道时做多(enterL2),当价格跌破20天通道时平多仓(exitL1);当价格跌破55天通道时做空(enterS2),当价格超过20天通道时平空仓(exitS1`)。

우위 분석

해수욕 거래 전략의 가장 큰 장점은 위험 통제에 있다. 가격 돌파할 때 포지션을 설정하고, 가격 회수할 때 신속한 중단으로, 단일 손실을 효과적으로 제어 할 수 있다. 동시에 고정 주식 자금 관리 원칙을 채택하여 위험을 더 낮출 수 있다.

또 다른 장점은 매개 변수 선택이 간단하다는 것입니다. 전체 전략은 단지 4개의 매개 변수만 있고, 이해하기 쉽고 조정할 수 있습니다. 매개 변수 자체는 비교적 안정적이며, 자주 최적화가 필요하지 않습니다.

위험 분석

해수욕 거래 전략의 가장 큰 위험은 장기적인 추세를 추적할 수 없다는 것입니다. 추세가 형성되기 시작하면 이 전략은 진입 기회를 놓칠 수 있습니다. 또한, 가격 변동의 추세에서 이 전략은 종종 입장을 닫고 거래 비용과 슬라이드 포인트 위험을 증가시킵니다.

또한, 고정된 매개 변수 설정은 다양한 품종과 시장 환경에서 효과에 큰 차이가 있을 수 있다. 이것은 인적 경험으로 조정할 필요가 있다.

최적화 방향

해파리 거래 전략은 다음과 같은 측면에서 최적화될 수 있습니다.

  1. 매개 변수 자율 조정 기능이 추가되었다. N, N/2의 매개 변수가 시장의 변동성과 신호의 빈도에 따라 자동으로 조정되어 더 많은 시나리오에 적응할 수 있도록 허용되었다.

  2. 트렌드 판단 규칙을 추가한다. 진입하기 전에 트렌드 방향을 판단하고, 가격 변동의 잘못된 진입을 피한다.

  3. 여러 시간 주기 unity 전략을 결합한다. 높은 시간 주기에서 트렌드 방향을 결정하고, 낮은 시간 주기에서 진출한다.

  4. 최적화 중단 전략 ≪trailing 중단 또는 시간 중단, 회수 감소 ≫

요약하다

해파리 거래 전략은 간단한 돌파구 시스템을 통해 효과적인 트렌드 추적을 구현한다. 위험 통제는 신속한 중단과 고정 자금 관리에 의해 전략의 가장 큰 장점이다. 동시에, 우리는 또한 전략이 더 많은 품종과 시장 환경에 적응하기 위해 여러 차원에서 확장 및 최적화 될 수 있음을 봅니다.

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

//@version=2
//oringinally coded by tmr0, modified by timchep
//original idea from «Way of the Turtle: The Secret Methods that Turned Ordinary People into Legendary Traders» (2007) CURTIS FAITH
strategy("Turtles", shorttitle = "Turtles", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100)
//////////////////////////////////////////////////////////////////////
// Component Code Start
testStartYear = input(2011, "Backtest Start Year")
testStartMonth = input(12, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop
//////////////////////////////////////////////////////////////////////

shortingEnabled = input(title="Enable Shorting?", type=bool, defval=true)

enter_fast = input(20, minval=1)
exit_fast = input(10, minval=1)
enter_slow = input(55, minval=1)
exit_slow = input(20, minval=1)

fastL = highest(enter_fast)
fastLC = lowest(exit_fast)
fastS = lowest(enter_fast)
fastSC = highest(exit_fast)

slowL = highest(enter_slow)
slowLC = lowest(exit_slow)
slowS = lowest(enter_slow)
slowSC = highest(exit_slow)

enterL1 = high > fastL[1] 
exitL1 = low <= fastLC[1] 
enterS1 = low < fastS[1]
exitS1 = high >= fastSC[1]

enterL2 = high > slowL[1] 
exitL2 = low <= slowLC[1] 
enterS2 = low < slowS[1]
exitS2 = high >= slowSC[1]


if testPeriod()
    strategy.entry("fast L", strategy.long, when = enterL1) 
    
    if not enterL1
        strategy.entry("slow L", strategy.long, when = enterL2)
        
    strategy.close("fast L", when = exitL1)
    strategy.close("slow L", when = exitL2)

if shortingEnabled and testPeriod()
    strategy.entry("fast S", strategy.short, when = enterS1)
    if not enterS2
        strategy.entry("slow S", strategy.short, when = enterS2)
        
    strategy.close("fast S", when = exitS1)
    strategy.close("slow S", when = exitS2)