리소스 로딩... 로딩...

월말 200일 이동평균 전략의 파업

저자:차오장, 날짜: 2023-12-08 16:02:08
태그:

img

전반적인 설명

이 전략은 주식 가격의 트렌드 방향을 파악하기 위해 월 말 200 일 이동 평균의 가격 파업에 기반합니다. 가격이 200 일 MA를 넘을 때 긴 지위가 설정됩니다. 그렇지 않으면 지위가 클리어됩니다.

전략 원칙

  1. 가격 트렌드를 판단하는 지표로 200일 간편 이동 평균 dma200을 사용하십시오.
  2. 매월 마지막 거래일에, 닫기 가격이 dma200보다 높는지 판단합니다.
  3. 폐업 가격이 200일 MA를 넘으면 다음 거래일 개시에 전체 긴 포지션을 설정합니다.
  4. 종료 가격이 200일 MA 이하로 떨어지면 다음 거래일 개시에 모든 포지션을 클리어합니다.
  5. 이것은 트렌드를 따라가는 효과를 얻을 수 있습니다. 주식 가격이 상승 추세에 들어갈 때 위치를 설정하고 하락 추세를 피합니다.

이점 분석

  1. 이 전략의 장점은 간단하고 효과적이며 이해하기 쉽고 실행하기 쉽다는 것입니다.
  2. 월말 포지션 취득은 거래 빈도를 줄이고 거래 비용과 미끄러짐 영향을 최소화 할 수 있습니다.
  3. 200일 MA는 대부분의 주식에서 효과적인 중장기 트렌드 판단 지표로 매우 일반적으로 사용됩니다.
  4. 이 전략은 상대적으로 적은 마이너스와 최대 감소율을 가지고 있으며 통제 가능한 위험을 가지고 있습니다.

위험 분석

  1. 200일 MA는 일부 주식들이 가격 반전을 적시에 파악할 수 있을 만큼 민감하지 않을 수 있습니다.
  2. 포지션 취득은 한 달에 1개의 거래소에서만 가능하며, 상승/하락 기회를 놓칠 수 있습니다.
  3. 전략은 전체 시장 추세가 불확실할 때 올바르게 판단하지 못할 수 있습니다.
  4. 이러한 위험을 줄이기 위해 다른 지표가 결합되어야합니다.

최적화 방향

  1. 전략의 빈도를 높이기 위해 달 초 또는 중간에 거래점을 늘리는 것을 고려하십시오.
  2. 가격 변동을 판단하고 잘못된 거래를 피하기 위해 볼링거 밴드 같은 지표를 추가하십시오.
  3. 최적의 매개 변수 조합을 찾기 위해 다른 MA 매개 변수의 다른 주류에 대한 적합성 효과를 평가합니다.
  4. 마감률이 너무 높을 때 손실을 적극적으로 막기 위해 동적 위치 사이즈 메커니즘을 설정

요약

이 전략은 비교적 간단하고 실용적이며, 200일 MA의 월말 브레이크오웃을 통해 주식의 중장기 가격 추세를 효과적으로 포착하며, 상대적으로 적은 마감과 위험을 감수합니다. 더 많은 지표와 동적 최적화를 결합함으로써 전략의 안정성과 수익성이 더욱 향상 될 수 있습니다.


/*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")

더 많은