이동 평균 채널 돌파 전략


생성 날짜: 2024-01-29 10:26:25 마지막으로 수정됨: 2024-01-29 10:26:25
복사: 0 클릭수: 666
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동 평균 채널 돌파 전략

개요

이 전략은 Keltner 통로의 중간, 상단, 하단 궤도를 계산하여 중간 궤도를 기반으로, ABOVE 중간, 하단 궤도 채색한다. 통로의 방향을 판단한 후, 돌파구 매매를 한다. 트렌드 추적 전략의 일종이다.

전략 원칙

핵심 지표는 켈트너 채널이다. 채널 중간 궤도는 전형적인 가격 ((최고 가격+최저 가격+폐쇄 가격) / 3의 N일 중화 이동 평균이다. 채널 위쪽 궤도와 아래쪽 궤도는 각각 중간 궤도에서 하나의 거래 범위에 대한 N일 중화 이동 평균이다. 그 중 거래 범위는 실제 파도 ATR을 선택할 수 있으며, 직접 진동도 ((최고 가격-최저 가격) 을 사용할 수 있다. 이 전략은 후자를 사용합니다.

구체적으로 말하면, 전략은 주로 가격이 상반도 또는 하반도를 돌파했는지 판단하고, 중반도를 경계로 다단계 또는 공백 결정을 한다. 상반도보다 큰 경우, 더 많은 것을 하고, 상반도보다 작은 경우, 공백한다.

우위 분석

  1. 켈트너 채널 지표를 사용하여 가격 변동 범위를 더 잘 판단하여 가짜 돌파구를 피하십시오.
  2. 중간 궤도 평행선을 지점으로 사용하면 손실을 줄일 수 있다.
  3. 위 궤도를 돌파하고 아래 궤도를 다수 공백으로 하는 것은 트렌드 추적 전략이며, 대부분의 주식의 가격 변화 법칙에 부합한다.

위험 분석

  1. 브레이크채널 전략은 파라미터에 민감하며, 최적의 파라미터 조합을 찾기 위해 반복적으로 테스트해야 한다.
  2. 주식 가격이 단기간에 크게 변동하면 거래 위험이 증가합니다. 잘못된 거래 위험을 줄이기 위해 채널 폭을 적절히 완화 할 수 있습니다.
  3. 효과는 파라미터 설정과 품종에 큰 관련이 있으며, 다른 품종에 적응할 필요가 있다.

최적화 방향

  1. 다른 지표와 함께 필터링 신호를 사용하여 잘못된 거래를 피하십시오. 예를 들어 양력 지표, 변동률 지표 등.
  2. 최적화 변수, 최적의 변수 조합을 찾는다. 주로 평균 변수와 통로 배수를 조정한다.
  3. 다양한 품종의 파라미터 설정은 큰 차이가 있을 수 있으며, 분류 최적화가 필요하다.

요약하다

이 전략은 전체적으로 간단하고 직접적이며, 일반적인 가격 돌파 전략의 한 종류이다. 이점은 아이디어가 명확하고 이해하기 쉬운 구현이며 초보자 학습에 적합하다. 그러나 또한 특정 한계가 있으며, 매개 변수에 민감하고 효과 매개 변수가 균일하지 않아 반복 테스트 최적화가 필요합니다.

전략 소스 코드
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © WMX_Q_System_Trading
//@version=3

strategy(title = "WMX Keltner Channels strategy", shorttitle = "WMX Keltner Channels strategy", overlay = true)

useTrueRange = input(true)
length = input(20, minval=5)
mult = input(2.618, minval=0.1)
mah =ema(ema( ema(high, length),length),length)
mal =ema(ema( ema(low, length),length),length)
range = useTrueRange ? tr : high - low
rangema =ema(ema( ema(range, length),length),length)
upper = mah + rangema * mult
lower = mal - rangema * mult
ma=(upper+lower)/2
uc = red
lc=green
u = plot(upper, color=uc, title="Upper")
basis=plot(ma, color=yellow, title="Basis")
l = plot(lower, color=lc, title="Lower")
fill(u, basis, color=uc, transp=95)
fill(l, basis, color=lc, transp=95)


strategy.entry("Long", strategy.long,  stop = upper, when = strategy.position_size <= 0 and close >upper)
strategy.entry("Short", strategy.short,  stop = lower, when = strategy.position_size >= 0 and close<lower)
if strategy.position_size > 0 
    strategy.exit("Stop Long", "Long", stop = ma)

if strategy.position_size < 0 
    strategy.exit("Stop Short", "Short", stop = ma)