이동 평균 교차에 기반한 추세 추종 전략


생성 날짜: 2024-03-01 10:59:03 마지막으로 수정됨: 2024-03-01 10:59:03
복사: 1 클릭수: 633
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동 평균 교차에 기반한 추세 추종 전략

개요

이 전략은 다른 주기의 이동 평균을 계산하여 그들의 교차를 구매 및 판매 신호로 설정하여 트렌드를 추적합니다. 핵심 논리는 더 짧은 주기의 이동 평균을 사용하여 더 긴 주기의 트렌드를 추적하는 것입니다.

전략 원칙

  1. 200주기 및 100주기 이동 평균을 계산
  2. 100주기 이동 평균에 200주기 이동 평균을 때, 더 많이 합니다.
  3. 100주기 이동 평균 아래에서 200주기 이동 평균을 통과할 때, 평형 포지션
  4. 100주기 이동 평균 아래로 200주기 이동 평균을 통과할 때, 공백
  5. 100주기 이동 평균에 200주기 이동 평균을 뚫을 때, 빈 포지션

위의 거래 신호 설정의 배후에 있는 논리는, 단기 이동 평균은 가격 변화에 더 빨리 반응하여 최신 트렌드를 반영할 수 있고, 장기 이동 평균은 전체 트렌드를 잘 반영하여, 노이즈를 필터링할 수 있다는 것이다. 단기 이동 평균이 장기 이동 평균을 가로지르면, 트렌드가 변하는 것을 의미하며, 따라서 거래 신호를 설정한다.

전략적 강점 분석

  1. 전략은 명확하고 간단하며 이해하기 쉽고 실행이 가능합니다.
  2. 더 긴, 더 짧은 주기선을 조합하여 트렌드 전환점을 잡을 수 있습니다.
  3. 특정 가격 방향을 예측할 필요 없이, 트렌드 전환을 추적하여 오류를 줄일 수 있습니다.
  4. 이동 평균 주기를 최적화하여 다양한 시장 환경에 적응할 수 있습니다.

전략적 위험과 해결 방법 분석

  1. 트렌드 변동이 큰 경우, 손실로 이어지는 여러 가지 잘못된 신호가 발생할 수 있습니다. 해결 방법은 이동 평균의 주기 변수를 적절하게 조정하는 것입니다.
  2. 급격한 사건으로 인해 급격한 반전이 발생할 때, 간단한 이동 평균 전략은 적시에 대응할 수 없으며 손실이 발생하기 쉽다. 해결책은 증가량 지표와 같은 추가 판단 지표를 추가하는 것이다.
  3. 거래 횟수가 너무 많아서 거래 비용과 슬라이드 손실이 발생할 수 있습니다. 해결 방법은 이동 평균 주기 변수를 적절하게 조정하여 거래 횟수를 줄이는 것입니다.

전략 최적화 방향

  1. 이동 평균의 주기적 변수 조합을 최적화하여 더 많은 시장 상황에 맞게 조정
  2. 필터링 지표를 추가하여 거래량, MACD 등과 같은 잘못된 신호를 방지합니다.
  3. 단편적 손실을 통제하기 위한 H&R 전략의 증강
  4. 변수 모음을 최적화하여 최적의 변수를 찾습니다.

요약하다

이 전략은 간단한 이동 평균 횡단 방식을 통해 가격 트렌드의 전환을 포착하며, 전형적인 트렌드 추적 전략에 속한다. 장점은 간단하고 이해하기 쉽고, 작동하기 쉽고, 파라미터를 조정하여 여러 가지 시장 환경에 적응할 수 있다. 단점은 갑작스러운 사건에 대한 반응이 민감하지 않으며, 잘못된 신호를 발생시키는 데 쉽다.

전략 소스 코드
/*backtest
start: 2023-02-23 00:00:00
end: 2024-02-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MA Crossover Strategy", overlay=true)

// Функция для получения скользящего среднего на заданном таймфрейме
getMA(source, length, timeframe) =>
    request.security(syminfo.tickerid, timeframe, ta.sma(source, length))

// Вычисляем 200-периодное и 100-периодное скользящее среднее для текущего таймфрейма
ma200 = getMA(close, 200, "240")
ma100 = getMA(close, 100, "240")

// Открываем позицию Long, если 100-периодное скользящее среднее пересекает 200-периодное сверху вниз
if (ta.crossover(ma100, ma200))
    strategy.entry("Long", strategy.long)

// Закрываем позицию Long, если 100-периодное скользящее среднее пересекает 200-периодное сверху вниз
if (ta.crossunder(ma100, ma200))
    strategy.close("Long")

// Открываем позицию Short, если 100-периодное скользящее среднее пересекает 200-периодное сверху вниз
if (ta.crossunder(ma100, ma200))
    strategy.entry("Short", strategy.short)

// Закрываем позицию Short, если 100-периодное скользящее среднее пересекает 200-периодное снизу вверх
if (ta.crossover(ma100, ma200))
    strategy.close("Short")

// Рисуем линии скользящих средних на графике
plot(ma200, color=color.blue, linewidth=2, title="200 MA")
plot(ma100, color=color.red, linewidth=2, title="100 MA")