모멘텀 채널 팔로잉 전략


생성 날짜: 2023-12-25 13:14:24 마지막으로 수정됨: 2023-12-25 13:14:24
복사: 0 클릭수: 729
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

모멘텀 채널 팔로잉 전략

개요

이 전략은 동력 채널 지표에 기반하여 거래 신호를 설계하고, 가격 돌파 채널의 오르락 내리락에 따라 구매 및 판매 신호를 생성한다. 이 전략은 단지 다단 거래만 하고, 판매 신호가 발생하면 평점 상태에서 빈 위치 상태이다.

전략 원칙

이 전략은 SMA 평균과 ATR의 실제 변동폭을 사용하여 동력 채널을 구성한다. 채널의 상단 및 하단 레일은 각각:

상반선 = SMA + ATR * 인수 하단 궤도 = SMA-ATR * 인수

가격이 위쪽으로 오르면 구매 신호가 발생하고, 가격이 아래쪽으로 오르면 판매 신호가 발생한다.

다수만 할 수 있기 때문에, 만약 판매 신호가 나타나면, 이전 상장 주문을 취소하고, 상장을 빈 상장 상태로 변경한다.

이 전략의 논리는 다음과 같습니다.

  1. SMA와 ATR을 사용하여 동력 통로를 구축
  2. 가격 상승이 시작될 때, 상장 가격을 설정하고 더 많은 것을 주문합니다.
  3. 가격이 하락할 때, 이전 과잉 주문을 평행하여 포지션을 빈 포지션으로 만듭니다.

우위 분석

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

  1. 전략의 논리는 간단하고 명확하며, 구현을 이해하기 쉽습니다.
  2. 동력 통로 지표는 직관적이고 시장 추세를 정확하게 판단합니다.
  3. 다중 거래만 하고, 손실을 추적하지 마십시오.
  4. 조건 목록, 정확한 항목에 도움이

위험 분석

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

  1. 시장이 흔들릴 때 빈번하게 하락할 수 있습니다.
  2. “이런 일이 벌어진다면, 우리는 더 많은 일을 할 수 있을 것입니다”.
  3. 탈퇴 메커니즘이 없고, 탈퇴 지점을 판단해야 합니다.

대책:

  1. 통로 매개 변수를 최적화하여 오차 신호를 감소시킨다.
  2. 2방향 거래에 필요한 공허 모듈을 추가합니다.
  3. 모바일 스톱, 트레일링 스톱 등의 탈퇴 메커니즘을 추가합니다.

최적화 방향

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

  1. 최적화 매개 변수, 조정 통로 주기, 변동률 계수 등의 매개 변수
  2. 공허 모듈을 추가하여 가격에 따라 하향 경로를 통과하여 판매 신호를 생성합니다.
  3. ATR 후속 손실과 결합된 손해 차단 장치에 가입
  4. 잘못된 신호를 피하기 위해 필터링 조건을 추가하는 것을 고려하십시오.
  5. 다양한 품종 계약의 효과를 테스트하는 방법

요약하다

이 전략은 동력 채널 지표에 기초하여 간단하고 효과적으로 시장 추세를 포착한다. 전략 논리는 명확하고 이해하기 쉽고, 가격 돌파 통로 상향과 하향을 통해 거래 신호를 생성한다. 다단계 및 탈퇴 메커니즘이 부족하지만, 매개 변수 최적화, 공수 모듈 추가, 중지 방법 등으로 개선 할 수 있다.

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

//@version=3
strategy("Keltner Channel Strategy", overlay=true)
source = close

useTrueRange = input(true)
length = input(20, minval=1)
mult = input(1.0)

ma = sma(source, length)
range = useTrueRange ? tr : high - low
rangema = sma(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult

crossUpper = crossover(source, upper)
crossLower = crossunder(source, lower)

bprice = 0.0
bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1])

sprice = 0.0
sprice := crossLower ? low -syminfo.mintick : nz(sprice[1]) 

crossBcond = false
crossBcond := crossUpper ? true 
 : na(crossBcond[1]) ? false : crossBcond[1]

crossScond = false
crossScond := crossLower ? true 
 : na(crossScond[1]) ? false : crossScond[1]

cancelBcond = crossBcond and (source < ma or high >= bprice )
cancelScond = crossScond and (source > ma or low <= sprice )

if (cancelBcond)
    strategy.cancel("KltChLE")

if (crossUpper)
    strategy.entry("KltChLE", strategy.long, stop=bprice, comment="KltChLE")

if (cancelScond)
    strategy.cancel("KltChSE")

if (crossLower)
    strategy.entry("KltChSE", strategy.short, stop=sprice, comment="KltChSE")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)