월말 200일 이동평균선 전략의 모멘텀 돌파


생성 날짜: 2023-12-08 16:02:08 마지막으로 수정됨: 2023-12-08 16:02:08
복사: 1 클릭수: 795
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

월말 200일 이동평균선 전략의 모멘텀 돌파

개요

이 전략은 주식 가격이 200 일 이동 평균을 돌파했는지 판단하기 위해 월말의 시점을 기반으로 주식 가격의 추세 방향을 포착합니다. 가격이 200 일 평균을 돌파 할 때 다단위 포지션을 설정하거나 그렇지 않으면 청산을 지켜보십시오.

전략 원칙

  1. 가격 추세를 판단하는 지표로 200일 간단한 이동 평균 dma200을 사용함
  2. 매월의 마지막 거래일에 close가 200dma 이상인지 판단합니다.
  3. 종결 가격이 200일 평균선을 넘으면, 다음 거래일 개시 시점에 전 포지션 다수 포지션을 설정합니다
  4. 만약 종결 가격이 200일 평균선 아래로 떨어지면 다음 거래일에 상장 청산
  5. 이런 식으로 트렌드 추적 효과를 얻을 수 있고, 주식 가격이 상승 추세에 진입했을 때 포지션을 세우고, 하락 추세를 피할 수 있다.

우위 분석

  1. 전략의 장점은 간단하고 효과적이며, 이해하기 쉽고, 실행하기 쉽다는 것입니다.
  2. 연말 시점에 지점을 구축하여 거래 빈도를 줄이고 거래 비용과 지점 영향을 줄일 수 있습니다.
  3. 200일 평균선은 매우 흔한 중장기 경향 판단 지표이며, 대부분의 주식에는 유효하다.
  4. 전략적 철수와 최대 하락은 모두 작고, 위험은 통제할 수 있다.

위험 분석

  1. 200일 평균선은 일부 주식들에 대해 민감하지 않을 수 있으며, 가격 변동을 적시에 파악할 수 없습니다.
  2. 월말에 1개의 거래소만 상장할 수 있고, 중간 하락의 기회를 놓칠 수도 있다.
  3. 이 전략은 대장 전체의 추세가 불확실할 때 제대로 판단할 수 없습니다.
  4. 이러한 위험을 줄이기 위해 다른 지표 판단과 결합해야 합니다.

최적화 방향

  1. 월 초 또는 중순에 더 많은 입장을 고려하여 전략의 빈도를 높일 수 있습니다.
  2. 가격 변동에 대한 브린 띠와 같은 지표를 추가하여 잘못된 거래를 피하십시오.
    1. 서로 다른 주식들에 대한 서로 다른 평형 변수의 부합 효과를 평가하고 최적의 변수 조합을 찾는다.
  3. 역동적인 포지션 관리 메커니즘을 구축할 수 있습니다.

요약하다

이 전략은 전체적으로 간단하고 실용적이며, 200일 평균선을 돌파한 후반의 방법으로 주식의 중장기 가격 경향을 효과적으로 포착하고, 회수와 위험이 적다. 더 많은 지표 판단과 동적 최적화를 결합하여 전략의 안정성과 수익률을 더욱 강화할 수 있다.

전략 소스 코드
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 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/
// © muscleriot
//200 dma
//2000-2016 backtested 
//1 signal per month only at end of month
//If > 200DMA enter long
//If < 200DMA goto cash
//results: 318% drawdown 17% vs 125% with 55% drawdown for buy and hold
//@version=5
strategy("200DMA last DOM - ajh", overlay =true,default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Use 100% of  equity always

dma200 = ta.sma(close, 200)
plot(dma200, color=color.red, linewidth = 2)
//e =dayofmonth(time)
// backtesting date range
from_day = input.int(defval=1, title="From Day", minval=1, maxval=31)
from_month = input.int(defval=1, title="From Month", minval=1, maxval=12)
from_year = input.int(defval=2018, title="From Year", minval=1900)

to_day = input.int(defval=1, title="To Day", minval=1, maxval=31)
to_month = input.int(defval=1, title="To Month", minval=1, maxval=12)
to_year = input.int(defval=9999, title="To Year", minval=1900)

time_cond = time > timestamp(from_year, from_month, from_day, 00, 00) and 
   time < timestamp(to_year, to_month, to_day, 23, 59)



xLong = dayofmonth(time) == 30 and (close > dma200) ? true : na
xSell = dayofmonth(time) == 30 and (close < dma200) ? true : na
plotchar(xLong, "long","L", color=color.green)    
plotchar(xSell, "Sell","S", color=color.red)    
if (xLong == true) and time_cond
    strategy.entry("long", strategy.long)
if (xSell == true) and time_cond
    strategy.close("long")