MACD 이동평균선 강세-약세 전환 전략


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

MACD 이동평균선 강세-약세 전환 전략

개요

MACD 평균선 황소-곰 전환 전략 MACD 지표의 DIFF와 DEA 평균선을 계산하여 시장 추세가 전환되었는지 판단하여 거래 신호를 생성합니다. DIFF 상위 DEA를 통과하면 더 많은 것을하고 DIFF 아래 DEA를 통과하면 공백을 만듭니다. 이 전략은 가격 EMA 평균선을 필터링하는 동시에 가짜 돌파구를 방지합니다.

전략 원칙

이 전략은 주로 MACD 지표의 DIFF와 DEA 평균선을 기반으로 한다. MACD는 지수 이동 평균의 차이를 나타내는 DIFF, DEA 및 MACD 선으로 구성된다. 그 중 DIFF 선은 단기 EMA 평균선과 장기 EMA 평균선의 차이를 나타내는 DEA 선은 DIFF의 EMA 평균선이며, DIFF 신호를 검증하기 위해 사용되며, MACD 선은 DIFF 빼기 DEA의 차이를 나타내는 등이 있다.

DIFF가 DEA를 상향으로 돌파할 때, 단기평균이 강해지기 시작하고, 시장이 다단으로 들어갑니다. DIFF가 DEA를 상향으로 돌파할 때, 단기평균이 약해지기 시작하고, 시장이 공백으로 들어갑니다. 따라서, 이 전략은 DIFF에서 DEA를 돌파할 때 더 많이 하고, 아래로 돌파할 때 공백을 만듭니다.

동시에, 전략은 가격의 EMA 평균선과 결합하여 가짜 브레이크를 필터링합니다. DIFF가 DEA를 상향으로 돌파하고 가격이 지난 번의 가격보다 낮을 때만 더 많은 것을 할 수 있습니다.

우위 분석

MACD 평균선 황소 곰 전환 전략은 MACD 지표와 가격 EMA 평균선을 결합하여 MACD 지표만으로 생성되는 가짜 신호를 피하고 거래 효과를 향상시킵니다. 이 전략은 시장 추세가 빠르게 전환되는 것을 판단하여 짧은 라인 작업에 적합합니다.

이 장점은 다음과 같습니다.

  1. MACD를 사용하여 트렌드 전환점을 판단하고 시장 전환 시점을 포착합니다.
  2. 가격 EMA 평균선과 결합하여 필터링하여 가짜 돌파 기회를 줄이십시오.
  3. 트레이딩 신호는 빠른 속도로 생성되며, 짧은 라인 동작에 적합하다.
  4. 트렌드 추적을 통해 트렌드 중기 수익을 얻을 수 있습니다.
  5. 대부분의 거래자의 사고방식과 일치하는 트렌드 전환 운영 사고방식을 채택합니다.

위험 분석

MACD 수평선 황소와 곰의 전환 전략에는 몇 가지 위험도 있습니다.

  1. MACD 지표는 잘못된 신호를 발생하기 쉽고, 가격 EMA 필터로 검증해야 하지만, 부분적인 움직임을 놓치게 됩니다.
  2. DIFF와 DEA 평행선에 주의를 기울여야 합니다. 변수를 잘못 조정하면 오차 신호가 커질 수 있습니다.
  3. 파격 신호는 1개의 K선만을 판단하고, 교착 현상이 발생할 수 있다.
  4. 전략은 DIFF와 DEA의 교차를 주요 거래 신호로 삼고, 거래가 불확실하면 교차 신호가 자주 발생하여 거래 빈도가 증가합니다.

이러한 위험은 다음과 같은 몇 가지 측면에서 최적화 될 수 있습니다.

  1. MACD 변수를 조정하여 잘못된 신호를 줄이십시오.
  2. 필터 강도를 높이고, 함축 확률을 낮춘다
  3. 포지션 필터링을 늘리고 거래 빈도를 제한합니다.

최적화 방향

MACD 평균선 황소 곰 전환 전략은 다음과 같은 몇 가지 차원에서 최적화 할 수있는 최적화 공간이 있습니다.

  1. MACD 파라미터를 최적화하고 DIFF, DEA 사이클을 조정할 수 있습니다.
  2. 지주 시간 필터를 늘리고 거래 빈도를 낮추는 것.
  3. 단편적 손실을 통제하기 위한 손실을 막는 전략을 강화합니다.
  4. 다른 지표 필터링과 결합하여 BOLL 올라오기, 내려오기, KD 등;
  5. 트렌드 판단을 강화하고 역대 거래를 피합니다.
  6. 이 전략 프레임워크를 기반으로 출발 전략이나 중단 전략 템플릿을 개발할 수 있다.

요약하다

MACD 평평선 황소 곰 전환 전략은 DIFF, DEA 교차 판단 시장의 단계 다수 헤드 및 공수 시점을 판단하고, 가격 EMA 평평선 필터 가짜 신호와 함께, 시장 추세 전환을 신속하게 판단하는 효과를 실현한다. 이 전략은 간단한 명확한 거래 논리, 전환점을 판단 신속하게, 짧은 선과 중간 선에 적합하다. 작동 다음 단계는 매개 변수를 조정하고, 필터를 강화하고, 거래 주파수를 제어하는 등의 측면에서 최적화 할 수 있으며, 전략을 더 안정적으로 만든다.

전략 소스 코드
/*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"}]
*/

//@version=3
strategy("macd_strategy", 
          shorttitle="macd", 
          overlay=true, 
          pyramiding=1, 
          max_bars_back=5000, 
          calc_on_order_fills = false, 
          calc_on_every_tick=true, 
          default_qty_type=strategy.percent_of_equity, 
          default_qty_value=100, 
          commission_type =strategy.commission.percent, 
          commission_value=0.00075)
[diff, dea, _] = macd(close, 12, 26, 7)
dea_close = ema(diff, 3)
price = ema(close, 9)
plot(price)
cross_over_price = na
cross_over_signal = na
cross_over_price := cross_over_price[1]
cross_over_signal := cross_over_signal[1]

cross_under_price = na
cross_under_signal = na
cross_under_price := cross_under_price[1]
cross_under_signal := cross_under_signal[1]
if (crossover(diff,dea))
    cross_over_price := price[1]
    cross_over_signal := diff
if (crossunder(diff,dea))
    cross_under_price := price[1]
    cross_under_signal := diff
if dea > 0
    cross_over_price = na
    cross_over_signal = na
else
    cross_under_price = na
    cross_under_signal = na
if diff > 0
    if cross_under_price > cross_under_price[1]*1 and cross_under_signal < cross_under_signal[1]*0.95
        strategy.entry("S", strategy.short,  comment="S")
else
    if cross_over_price < cross_over_price[1]*1 and cross_over_signal > cross_over_signal[1]*0.95
        strategy.entry("B", strategy.long,  comment="B")
// strategy.exit("exit_s", "S", stop = strategy.position_avg_price*1.05, when=strategy.position_size < 0)
// strategy.exit("exit_b", "B", stop = strategy.position_avg_price*0.95, when=strategy.position_size > 0)
strategy.close_all(when=(strategy.position_size < 0 and (dea < 0 or diff > cross_under_signal*1 or crossover(diff, dea)) or (strategy.position_size > 0 and (dea > 0 or diff < cross_over_signal*1 or crossunder(diff, dea)))))