이동평균 전략의 추세

저자:차오장, 날짜: 2024-02-29 14:00:35
태그:

img

전반적인 설명

이 전략은 채널 이동 평균 라인을 계산하고 가격이 채널 라인을 통과하여 주식 가격의 트렌드를 따라 할 때 긴 또는 짧은 포지션을 설정합니다. 트렌드 다음 전략에 속합니다.

전략 원칙

이 전략은 먼저 채널의 상부 레일로 20일 평균을 계산하고, 채널의 하부 레일로 20일 평균을 계산하고, 채널의 중간선을 계산한다. 채널의 중간선은 최근 평균 가격 추세를 나타낸다. 가격이 채널의 중간선을 넘어 올라가면 긴 포지션을 설정한다. 가격이 채널의 중간선을 넘어 내려갈 때 짧은 포지션을 설정한다. 가격이 채널 범위의 반대편으로 떨어질 때까지 가격 추세를 따라 포지션을 닫는다.

이점 분석

  • 채널을 사용하여 가격 동향을 추적하고 다양한 시장에 자금이 잠겨있는 것을 피합니다.
  • 채널 레일은 입구와 출구 지점을 결정하는 데 도움이되며 입구를 쉽게 제어 할 수 있습니다.
  • 채널 범위는 소음을 필터링하고 수익 확률을 높입니다.
  • 채널 매개 변수는 전략의 감수성을 조정할 수 있습니다.

위험 분석

  • 중선의 중요한 파열은 중선의 풀백 테스트로 이어질 수 있으며, 그 결과 포착될 수 있습니다.
  • 오시일레이션 주식은 이 전략에 적합하지 않으며 고 빈도 거래로 이어질 수 있습니다.
  • 부적절한 매개 변수 설정도 전략 성능에 영향을 줄 수 있습니다.

최적화 방향

  • 다양한 매개 변수의 영향을 테스트하기 위해 채널 사이클 매개 변수를 최적화합니다.
  • 단일 손실과 총 손실을 통제하기 위해 수익 취득 및 손실 중지 전략을 추가합니다.
  • 잘못된 신호를 피하기 위해 다른 지표를 보조 판단으로 결합합니다.
  • 롤백 테스트 중에 함락될 확률을 줄이기 위해 대량으로 위치를 잡습니다.

요약

일반적으로 이 전략은 비교적 간단하고 직설적이다. 기본 가격 채널을 통해 주식 가격 추세를 판단하고 추세를 따르는 유형에 속한다. 장점은 간편한 운영, 가격 추세에 의해 가져온 투자 기회를 완전히 활용하고 자금 잠금을 피하는 것이다. 단점은 부적절한 매개 변수 설정이 성능에 영향을 미칠 수 있고, 회귀 테스트의 특정 위험이 있다는 것이다. 합리적인 최적화를 통해 전략의 안정성을 향상시키고 실제 거래 성능을 향상시킬 수 있다.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2)
//stock strategy
strategy(title = "dc", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=.005)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=20)


testStartYear = input(2000, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2019, "Backtest Start Year")
testEndMonth = input(3)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = 20

dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=close > dcAverage)
strategy.close("simpleBuy",when=close < dcLower)
    
strategy.entry("simpleSell", strategy.short,when=close < dcAverage)
strategy.close("simpleSell",when=close > dcAverage)
    



더 많은