이동 평균을 기반으로 한 추세 추종 전략


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

이동 평균을 기반으로 한 추세 추종 전략

개요

이 전략은 마크 미네비니의 주식 선택 템플릿에 따라, 이동 평균 지표와 결합하여 주식 가격 추세를 판단하여 자동으로 구매 및 중지합니다. 전략은 주가가 상승 추세에 있는지, 그리고 중요한 이동 평균을 뚫고 구매 신호를 생성하는지를 판단합니다. 동시에, 전략은 스톱 라인을 설정하여 주가가 철회 할 때 적극적으로 중지합니다.

전략 원칙

이 전략은 다음과 같은 조건을 판단하여, 조건이 동시에 충족될 때 구매 신호를 발생시킨다:

  1. 현재 주가는 150일 및 200일 이동 평균보다 높습니다.
  2. 150일 이동 평균은 200일 이동 평균보다 높습니다.
  3. 200 일간 이동 평균은 최근 한 달 동안 상승 추세에 있습니다.
  4. 50일 이동 평균은 150일 및 200일 이동 평균보다 높습니다.
  5. 현재 주가는 50일 이동 평균보다 높습니다.
  6. 현재 주가는 52주 최저점보다 25% 이상 상승했다.
  7. 현재 주가는 52주 최고치에 육박하고 있습니다.

위 조건이 충족되면, 전략은 주가가 상승 단계에 있다고 판단하여 구매 신호를 발생시킨다.

또한, 전략은 동시에 손실 경계를 설정하고, 주가가 최고점으로부터 5%를 회수하거나 10%를 올릴 때, 손실을 중지하거나 중지한다.

전략적 이점

  1. 마크 미네비니의 주식투자 아이디어를 활용하여 수익률을 높여라
  2. 다중 이동 평균을 사용하여 트렌드를 확인하고 구매 지점을 놓치지 마십시오.
  3. 큰 손실을 피하기 위해 손해 방지 장치를 설정하십시오.

위험 분석

  1. 단기간에 주가가 조정될 수 있으며, 이로 인해 단축 손실이 발생할 수 있습니다.
  2. 이동 평균은 트렌드를 완전히 판단할 수 없으며, 가짜 브레이크가 발생할 수 있습니다.
  3. 스톱 손실 스톱 비율이 완벽하지 않으며, 너무 일찍 스톱 또는 손실이 확대 될 수 있습니다.

최적화 방향

  1. 다른 변수의 이동 평균 조합을 테스트할 수 있습니다.
  2. 다른 기술적인 지표와 함께 구매 시기를 판단할 수 있습니다.
  3. 정지 스톱을 최적화 할 수 있는 비율 설정

요약하다

이 전략은 전체적으로 트렌드 트레이딩의 사고방식을 따르며, 주가 상승 추세를 확인한 전제하에 구매 신호를 생성한다. 동시에 스톱드 메커니즘을 설정하여 위험을 통제한다. 세부적인 매개 변수를 최적화함으로써 전략의 안정성과 수익성을 더욱 향상시킬 수 있다. 그러나 어떤 전략도 시장 위험을 완전히 회피하는 것은 어렵고, 투자자가 신중하게 접근해야 한다.

전략 소스 코드
/*backtest
start: 2022-12-13 00:00:00
end: 2023-12-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Pure Mark Minervini 10%TP 5%CL", pyramiding = 0, commission_type=strategy.commission.percent, commission_value=0.08, overlay=true)

ma50 = sma(close,50)
ma150 = sma(close,150)
ma200 = sma(close,200)
ma200_22 = ma200[22]

high_loopback = input(260, "High Lookback Length")
low_loopback = input(260, "Low Lookback Length")
highest_price = highest(high, high_loopback)
lowest_price = lowest(low, low_loopback)
above52lo = ((close/lowest_price)-1)*100
below52hi = (1-(close/highest_price))*100
ep = strategy.position_avg_price

trigger = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3
var label maLabel = na
if (trigger)
    yLocation = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3 ?
         yloc.abovebar :
         yloc.belowbar

    // labelStyle = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3 ?
    //      label.style_labeldown :
    //      label.style_labelup

buy = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3
sell = close>ep*1.1 or close<ep*0.95

strategy.entry("TF", strategy.long, when = buy)
strategy.close("TF", when = sell)