거래량 표준편차에 기반한 추세 추종 전략


생성 날짜: 2023-11-21 11:11:51 마지막으로 수정됨: 2023-11-21 11:11:51
복사: 0 클릭수: 706
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

거래량 표준편차에 기반한 추세 추종 전략

개요

이 전략은 거래량 이동 평균과 표준 차이를 사용하여 거래량 모델을 구축하고, 가격의 이동 평균과 결합하여 트렌드 방향을 판단하고, 거래량이 정상인 경우 거래 신호를 발송한다. 전략은 또한 거래량이 높고 낮은 한계를 설정하여 거래량이 비정상적인 경우 잘못된 신호를 발송하는 것을 피할 수 있다.

전략 원칙

핵심 논리는 거래량 모델과 가격 추세를 판단하는 것입니다.

  1. 거래량 모델을 구축합니다.
    • 거래량을 계산하기 40주기의 이동 평균vavg 거래량 기준으로
    • 거래량 계산 40주기 길이의 표준차 VSd 거래량 정상 변동 범위로
    • 거래량 계산 5주기 길이의 이동 평균vavgn 최신 거래량 수준으로
    • 트레이딩의 최저 제한을 세우고
    • 거래량 최대 uplimit을 세팅합니다.
  2. 가격 동향을 판단하는 방법
    • 가격의 길이가 20주기의 이동 평균 mavg를 계산하여 가격 트렌드 지표로 사용함
  3. 거래 신호를 발송합니다.
    • mavg가 전날을 넘어서면,vavgn이 lowlimit보다 높을 때 더 많은 일을 합니다.
    • mavg 하위에서 1 일 전에 통과 할 때,vavgn이 낮은 한계보다 높을 때 공백을 설정합니다.
    • 마비그 트렌드가 반전되면 평준화

이 전략은 거래량 모델과 가격 트렌드를 결합하여 거래량이 비정상적인 경우 가격 트렌드를 추적하는 것을 피하고 일부 가짜 신호를 필터링 할 수 있습니다.

전략적 강점 분석

  1. 거래량 변화와 함께 가격 동향을 판단하여 가짜 신호를 필터링하여 신호를 더 신뢰할 수 있습니다.
  2. 거래량 표준 차이를 사용하여 거래량 모델을 구축하여 거래량 극단적 변화의 영향을 피하십시오.
  3. 이동 평균 변수는 조정 가능하며, 다른 주기의 가격 변화에 적응할 수 있습니다.

전략적 위험 분석

  1. 단기간에 거래량과 가격의 오차가 발생할 수 있으며, 이는 가격의 흐름을 놓치게 할 수 있습니다.
  2. 거래량 파라미터를 잘못 설정하면 모델이 실패할 수 있습니다.
  3. 전략 자체는 스톱로스 설정이 없으며, 더 큰 손실을 초래할 수 있습니다.

위험 해결 방법:

  1. 이동 평균 변수를 적절하게 조정하고 모델을 최적화합니다.
  2. 단편적 손실을 제어하기 위해 스톱 로직을 추가합니다.

전략 최적화 방향

  1. 가격 추세를 판단하는 더 많은 지표가 추가되어 신호가 더 정확하고 신뢰할 수 있습니다.
  2. 데이터 트레이닝 거래량 및 가격 모델에 대한 매개 변수를 추가하는 기계 학습 모듈
  3. 단독 손실을 막기 위해 손실을 막는 논리를 추가합니다
  4. 오프닝 논리를 최적화하여 트렌드를 포착할 확률을 높여줍니다.
  5. ATR와 비슷한 지표와 함께 자동으로 스톱 거리 조정

요약하다

이 전략은 전체적인 아이디어는 명확하며 거래량을 사용하여 가짜 트렌드를 추적하는 것을 피하고 입시 신호는 신뢰할 수 있습니다. 그러나 전략 자체는 간단하며 확장 가능한 공간이 넓으며, 더 많은 지표, 기계 학습, 스톱 손실과 같은 모듈을 추가하여 최적화하면 안정성과 트렌드를 포착하는 능력을 더욱 향상시킬 수 있습니다. 이 전략은 전형적인 트렌드 추적 전략으로, 최적화되면 매우 실용적인 계량화 전략이 될 수 있습니다.

전략 소스 코드
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
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/
// © dongyun

//@version=4
strategy("交易量底部标准差系统", overlay=true)

options = input(1,'')
length = input(40,'')
nlow = input(5,'')
factor = input(1.0,'')

vavg = 0.0
vavgn = 0.0
vsd = 0.0
lowlimit = 0.0
uplimit = 0.0
mavg = 0.0
aror = 0.0
adjvol = 0.0
savevol = 0.0


//Find average volume, replacing bad values
adjvol := volume

if (volume != 0)
	savevol := volume
else
	savevol := savevol[1]
	adjvol := savevol


// Replace high volume days because they distort standard deviation
if (adjvol > 2 * factor * nz(vsd[1]))
	adjvol := savevol
else
	adjvol := adjvol[1]

vavg := sma(adjvol,length)
vsd := stdev(adjvol,length)
vavgn := sma(adjvol,nlow)

// Extreme volume limits
lowlimit := vavg - factor * vsd
uplimit := vavg + 2 * factor * vsd

// System rules based on moving average trend
mavg := sma(close,length/2)

// Only enter on new trend signals
if (options == 2)
	if (mavg > mavg[1] and mavg[1] <= mavg[2])
		strategy.entry("Long", strategy.long)
	if (mavg<mavg[1] and mavg[1]>=mavg[2])
		strategy.entry("Short", strategy.short)
else
	if (mavg > mavg[1] and vavgn > lowlimit)
		strategy.entry("Long", strategy.long)
	if (mavg < mavg[1] and vavgn > lowlimit)
		strategy.entry("Short", strategy.short)

// Exit on low volume
if (options != 1)
	if (mavg<mavg[1] or (strategy.position_size > 0 and vavgn<= lowlimit))
		strategy.close("Long")
	if (mavg>mavg[1] or (strategy.position_size > 0 and vavgn<= lowlimit))
		strategy.close("Short")
else
	if (mavg < mavg[1])
		strategy.close("Long")
	if (mavg > mavg[1])
		strategy.close("Short")