간단한 추세 추종 전략


생성 날짜: 2024-01-05 13:09:37 마지막으로 수정됨: 2024-01-05 13:09:37
복사: 0 클릭수: 657
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

간단한 추세 추종 전략

이 글은 간단한 이동 평균을 기반으로 한 트렌드 추적 전략을 자세히 분석합니다. 이 전략은 여러 시간 프레임의 평행선 조합을 사용하여 거래 신호를 생성합니다.

전략 개요

이 전략은 동시에 21일, 50일, 100일, 200일 간단한 이동 평균을 사용한다. 가격이 이 평균선을 돌파할 때 구매 및 판매 신호를 발생시킨다. 또한, 전략은 Donchian 채널을 이용해서 가격이 20일과 55일에서 가장 높은 가격이나 가장 낮은 가격을 돌파할 때 보충 거래 신호를 발생시킨다. 이 전략은 트렌드가 더 뚜렷한 시장에 적합하며, 여러 시간 프레임으로 트렌드를 고정하여 수익을 창출한다.

전략 원칙

핵심 원칙은 여러 평행 시간 프레임을 사용하여 트렌드 방향을 판단하는 것입니다. 구체적으로, 전략은 4 개의 다른 시간 길이의 간단한 이동 평균을 사용합니다: 21 일, 50 일, 100 일 및 200 일. 이러한 평행선의 시간 범위는 단기에서 장기까지 확대되어 다양한 수준의 트렌드를 식별합니다.

단기평균선 상에서 장기평균선을 통과할 때 구매 신호가 발생한다. 이는 시장 추세가 전환되어 상향 통로로 들어갈 수 있음을 나타냅니다. 단기평균선 아래에서 장기평균선을 통과할 때 판매 신호가 발생한다. 이것은 시장 추세가 역전되기 시작하여 하향 통로로 들어갈 수 있음을 나타냅니다.

또한, 전략은 Donchian 통로를 사용하여 거래 신호를 보충한다. 즉, 가격이 20일 또는 55일 최고/최저 가격을 돌파했을 때, 구매/판매 신호를 유발하여 트렌드 수익을 고정한다.

종합적으로, 이 전략은 평행선 이론과 Donchian channel을 결합하여, 다중 시간 프레임으로 트렌드 방향을 판단하며, 전형적인 트렌드 추적 전략에 속한다.

전략적 이점

  1. 다중 시간 프레임 디자인은 명확한 중·중간 추세를 효과적으로 포착할 수 있습니다.
  2. 평선과 Donchian 통로를 사용하면서 신호가 더 안정적입니다.
  3. 양자 거래 초보자를 위한 간단한 연습을 구현합니다.

전략적 위험

  1. 가짜 돌파 위험. 가격이 한동안 급격하게 변동하여 평균선이나 돈치안 채널이 잘못된 신호를 발산할 수 있습니다.
  2. 불안정한 상황에서는 손해가 발생하기 쉽다. 이 전략은 명확한 추세 시장 환경에 더 적합하다.
  3. 매개 변수를 최적화할 수 있는 공간이 제한되어 있다. 이동 평균과 Donchian 통로는 효과적인 매개 변수 조정이 어렵다.

위험을 해결하기 위한 해결책:

  1. 필터링 조건을 추가하여 가짜 돌파구를 방지합니다. 예를 들어 거래량 조건을 추가합니다.
  2. 적당히 단축된 스톱 손실
  3. 기계 학습 알고리즘의 자동 최적화 변수를 도입하는 시도

전략 최적화 방향

  1. 거래량 기반의 필터링 조건을 추가하여 가격의 급격한 변동에서 잘못된 신호를 방지합니다.
  2. 이동 평균을 Kaufman Adaptive Moving Average와 같이 가격을 더 잘 평행시키는 지표로 대체하는 시도
  3. 기계 학습 알고리즘을 적용하여 전략 매개 변수를 자동으로 최적화하여 현재 시장 상황에 더 잘 맞게 만듭니다.
  4. 변동률 지표와 함께 강세를 판단하여 변동이 있는 상황에서 중매를 피하십시오.

요약하다

이 글은 다중 시간 프레임 이동 평균과 Donchian 통로에 기반한 간단한 트렌드 추적 전략을 상세히 분석한다. 이 전략은 다양한 길이의 평균 선의 조합을 사용하여 트렌드 방향을 판단한다. 원칙은 간단하고 명확하며 쉽게 구현된다. 동시에, 전략의 장점, 가능한 위험 및 후속 최적화 아이디어도 분석된다.

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

//@version=3
strategy("Trend Following", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 10)

maxIdLossPcnt = input(1, "Max Intraday Loss(%)", type=float)
entryLong = false
entryShort = false

// strategy.risk.max_intraday_loss(maxIdLossPcnt, strategy.percent_of_equity)

if (close > highest(high[1], 20))
    strategy.entry("Long fast", strategy.long)
    entryLong = true
    

if (close < lowest(low[1], 20))
    strategy.entry("Short fast", strategy.short)
    entryShort = true
    
if (close > highest(high[1], 55))
    strategy.entry("Long slow", strategy.long)
    entryLong = true

if (close < lowest(low[1], 55))
    strategy.entry("Short slow", strategy.short)
    entryShort = true

len1 = input(21, minval=1, title="21 SMA")
src1 = input(close, title="21 SMA")
out1 = sma(src1, len1)
plot(out1, title="21 SMA", color= white)

len2 = input(50, minval=1, title="50 SMA")
src2 = input(close, title="50 SMA")
out2 = sma(src2, len2)
plot(out2, title="50 SMA", color= blue)

len3 = input(100, minval=1, title="100 SMA")
src3 = input(close, title="100 SMA")
out3 = sma(src3, len3)
plot(out3, title="100 SMA", color= orange)

len4 = input(200, minval=1, title="200 SMA")
src4 = input(close, title="200 SMA")
out4 = sma(src4, len4)
plot(out4, title="200 SMA", color= green)