이동 평균 크로스오버와 MACD 조합 전략

저자:차오장, 날짜: 2023-10-24 13:51:02
태그:

img

전반적인 설명

이 전략은 이동 평균 크로스오버 시스템과 MACD 지표를 결합하여 트렌드 기간에 장기간에 걸리며 트렌드 반전 시 수익을 취하고 중단하는 자동 거래 전략을 구현합니다. 전략 이름은 Moving Average Crossover and MACD Combination Strategy입니다.

원칙

이 전략은 주로 이동 평균 크로스오버 시스템과 MACD 지표의 조합을 기반으로합니다. 구체적으로, 단기 이동 평균이 장기 이동 평균을 넘어서면 길게 이동하고, 단기 이동 평균이 장기 이동 평균을 넘어서면 짧게 이동합니다. 여기서 21 일 EMA는 단기 MA와 100 일 EMA는 장기 MA로 사용됩니다.

동시에 MACD 지표는 거래 신호를 확인하는 데 사용됩니다. MACD DIFF 라인이 DEA 라인을 넘을 때만 긴 신호가 유발됩니다. DIFF 라인이 DEA 라인을 넘으면 긴 포지션은 스톱 로스로 종료됩니다.

또한 RSI는 과도한 단축을 피하기 위해 사용되며, RSI가 30% 미만일 때만 단축 포지션이 시작됩니다.

스톱 손실의 경우, 전략은 고정 비율의 트레일링 스톱 방법을 채택하며, 긴 스톱 손실은 입시 가격보다 1% 낮고 짧은 스톱 손실은 입시 가격보다 1% 높습니다. 이 전략은 또한 긴 포지션의 부동 수익이 입시 가격의 3%에 도달 할 때 이동 수익 출출을 구현합니다.

이점 분석

이 전략의 가장 큰 장점은 주요 트렌드 방향을 결정하기 위해 이동 평균 시스템을 사용하여 입력 신호를 위해 MACD 지표를 사용하여 잘못된 브레이크오버를 효과적으로 필터 할 수 있습니다. 이동 평균 크로스오버 시스템을 사용하는 것과 비교하면 비효율적인 거래 빈도를 줄이고 승률을 향상시킬 수 있습니다.

또한, 일정한 비율의 스톱 로스 및 이동 수익 취득은 손실을 수용 가능한 범위 내에서 유지하는 데 도움이 되며, 가능한 한 일찍 수익을 확보 할 수 있습니다. 이것은 계정 인출을 줄이고 실제 거래에서 탐욕으로 인한 손실을 피할 수 있습니다.

위험 분석

이 전략의 주요 위험은 다음과 같습니다.

  1. 이동 평균 크로스오버 시스템에는 지연 문제가 있으며, 이는 지연된 입력 및 가장 좋은 입력 포인트를 놓치는 결과를 초래할 수 있습니다. MA 매개 변수를 최적화함으로써 개선 할 수 있습니다.

  2. MACD 지표는 잘못된 신호를 생성하는 경향이 있습니다. KDJ와 같은 다른 필터가 추가 될 수 있습니다.

  3. 일정한 비율의 스톱 손실은 때때로 적시에 종료 될 수 없습니다. 동적 후속 스톱 손실은 고려 될 수 있습니다.

  4. 이 전략은 큰 마감률을 가질 수 있습니다. 위험을 줄이기 위해 포지션 크기가 줄일 수 있습니다.

  5. 이 전략은 단지 장기적으로만 지속되며 하락 추세로부터 이익을 얻을 수 없습니다. 단축 메커니즘을 추가 할 수 있습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 개선될 수 있습니다.

  1. 더 정확한 신호를 위해 MA 매개 변수를 최적화합니다. EMA와 SMA와 같은 다른 MA 유형이 테스트 될 수 있습니다.

  2. 다른 지표를 추가하여 KDJ, RSI 등과 같은 MA 크로스오버 신호를 필터링하여 나쁜 거래를 줄이십시오.

  3. 역동적 스톱 손실 방법을 테스트합니다. 트레일링 스톱과 ATR 스톱과 같이 위험을 더 잘 제어하기 위해.

  4. 단축 메커니즘을 추가하여 전략이 하락 추세에서 이익을 얻을 수 있습니다.

  5. 최대 유출을 줄이기 위해 포지션 크기와 자금 관리를 최적화합니다.

  6. 다른 제품과 자산 클래스에 대한 테스트 성능 적용 가능성을 확대하기 위해

  7. 기계 학습 알고리즘을 통합하여 매개 변수를 자동으로 최적화하고 수동 개입을 줄이십시오.

결론

이 전략은 높은 수익성을 위해 이동 평균 크로스오버 시스템과 MACD 지표의 장점을 결합합니다. 매개 변수 조정, 추가 필터, 스톱 로스 메커니즘 및 쇼트닝 메커니즘의 추가 향상으로 안정성을 향상시키고 마감량을 줄일 수 있습니다. 기계 학습 통합은 또한 적용 가능성을 확장 할 수 있습니다. 전반적으로 양적 거래 전략에 좋은 방향을 제공하지만 여전히 지속적인 테스트와 최적화가 필요합니다.


/*backtest
start: 2023-10-16 00:00:00
end: 2023-10-23 00:00:00
period: 2m
basePeriod: 1m
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/
// © Toxic_Cat_

//@version=5
// strategy("MA_50_200_CROSS", overlay=true, margin_long=100, margin_short=100)

EMA21 = ta.ema(close, 21)
EMA100 = ta.ema(close, 100)
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

plot(EMA21)
plot(EMA100, color = color.orange)

openLong = ta.crossover(EMA21, EMA100) and macdLine > signalLine
openShort = ta.crossunder(EMA21, EMA100) and ta.rsi(close, 14) <= 33

crossunderMACD = ta.crossunder(macdLine, signalLine)


if (strategy.opentrades < 1)
    if openLong 
        strategy.entry("L",strategy.long, 1)

   if openShort
      strategy.entry("S",strategy.short, 1)

// slose long
// if ((strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.03) <= open) 
//     strategy.exit("profit L", "L", limit = close)

// else if strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.01 >= open or crossunderMACD
//     strategy.exit("loss L", "L", stop = close)

// slose short
// if (strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.03) >= open
//     strategy.exit("profit S", "S", limit = (strategy.opentrades.entry_price(0) - strategy.opentrades.entry_price(0)*0.03))

// else if strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.01 <= open
//    strategy.exit("loss S", "S", stop = (strategy.opentrades.entry_price(0) + strategy.opentrades.entry_price(0)*0.01))

















더 많은