최적화된 이동 평균 크로스오버 전략

저자:차오장, 날짜: 2024-02-04 10:31:45
태그:

img

전반적인 설명

이 전략은 정기적인 이동 평균 크로스오버를 기반으로 하지만 더 정확한 거래 신호를 생성하기 위해 일부 수정이 이루어졌습니다. 트렌드 방향을 식별하기 위해 빠르고 느린 이동 평균을 결합하고 트렌드 다음 전략에 속합니다.

전략 논리

빠른 이동 평균이 밑에서 위로 느린 이동 평균을 넘을 때, 그것은 구매 신호로 간주됩니다. 빠른 이동 평균이 위에서 아래로 느린 이동 평균을 넘을 때, 그것은 판매 신호로 간주됩니다. 즉, 긴 황금 십자, 짧은 죽음의 십자. 긴 / 짧은 지위가 취되면, 막 손실은 큰 손실을 피하기 위해 설정됩니다.

핵심은 빠른 이동 평균과 느린 이동 평균의 선택에 있습니다. 이 전략은 50 & 100 기간 기하급수적 이동 평균을 각각 빠른 및 느린 라인으로 채택합니다. MA 매개 변수를 조정함으로써 전략 효과를 최적화 할 수 있습니다.

이점 분석

이 전략은 이중 이동 평균을 결합하여 트렌드 방향을 식별하여 시장 소음을 효과적으로 필터 할 수 있습니다. 단일 MA 전략과 비교하면 수익률 확률을 향상시킬 수 있습니다. 또한, 스톱 로스 설정은 개별 거래의 손실을 제한합니다.

교차 규칙을 활용하여 전환점을 결정함으로써, 이 전략은 트렌드 기회를 적시에 포착할 수 있습니다. 복잡한 논리들로 구성된 전략에 비해 이해하기 쉽고 구현하기 쉽습니다.

위험 분석

이 전략에는 3가지 주요 위험 요소가 있습니다. 부적절한 MA 매개 변수 위험, 부적절한 보유 기간 위험 및 부적절한 스톱 로스 포지션 위험.

  • 잘못된 MA 매개 변수 선택은 잘못된 신호로 이어질 것입니다. 너무 짧거나 너무 긴 MA 길이는 시장을 잘못 판단 할 것입니다. 따라서 도구의 특성에 따라 적절한 조정이 필요합니다.

  • 너무 길거나 너무 짧은 보유 기간은 이익을 극대화하거나 위험을 적절히 제어 할 수 없습니다. 최적의 보유 기간을 결정하기 위해 다른 출구 방법을 테스트해야합니다.

  • 비합리적인 스톱 로스 포지션 설정은 너무 넓은 스톱 로스 또는 너무 좁은 스톱 로스로 이어질 수 있으므로 해당 스톱 로스를 기금의 변동성에 따라 결정해야 합니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  • 최적의 매개 변수를 찾기 위해 더 많은 MA 매개 변수 조합을 테스트

  • 최근 N일간의 가격 변동 또는 ATR을 기반으로 동적 스톱 로스 포지션을 결정합니다

  • 입시 시기를 결정하기 위해 MACD, KD 등과 같은 더 많은 지표를 결합하십시오.

  • 범위에 묶인 시장을 피하기 위해 트렌드 필터링 규칙을 추가합니다.

  • 더 많은 도구에 전략을 적용하는 것을 고려하거나 다양한 도구 전략으로 개선하십시오.

요약

이 최적화된 이동 평균 크로스오버 전략은 트렌드 방향을 판단하고 위험을 제어하기 위해 스톱 로스를 설정하는 이중 MA의 장점을 통합합니다. 그것은 쉽게 실행 가능한 트렌드 다음 전략에 속합니다. 이 전략은 매개 변수 최적화, 스톱 로스 최적화, 신호 필터링 등을 통해 안정성과 효율성을 더욱 향상시킬 수 있습니다. 복잡한 전략과 비교하여 이해하기 쉽고 구현하기 쉽고 초보자의 첫 번째 양 거래 전략이 될 수 있습니다.


/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-03 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ashishchauhan
strategy(title="MA CO Strategy Test", overlay=true, pyramiding=0, initial_capital=100000)

fastEMALen = input(title="Fast EMA Length", type=input.integer, defval=50)
slowEMALen = input(title="Slow EMA Length", type=input.integer, defval=100)

fastEMA = ema(close, fastEMALen)
slowEMA = ema(close, slowEMALen)

enterLong = crossover(fastEMA, slowEMA)
enterShort = crossunder(fastEMA, slowEMA)

longStop = 0.0
longStop := enterShort ? close : longStop[1]

shortStop = 0.0
shortStop := enterLong ? close : shortStop[1]

plot(series=fastEMA, color=color.orange, title="Fast EMA")
plot(series=slowEMA, color=color.teal, linewidth=3, title="Slow EMA")

if enterLong
    strategy.entry(id="GoLong", long=true)

if enterShort
    strategy.entry(id="GoShort", long=false)

if strategy.position_size > 0
    strategy.exit(id="ExLong", from_entry="GoLong", stop=longStop)

if strategy.position_size < 0
    strategy.exit(id="ExShort", from_entry="GoShort", stop=shortStop)

strategy.close_all()


더 많은