리소스 로딩... 로딩...

이동 평균 크로스오버 양적 전략

저자:차오장, 날짜: 2024-03-28 16:55:42
태그:

img

전반적인 설명

이동평균 크로스오버 양적 전략 (Moving Average Crossover Quantitative Strategy) 은 서로 다른 기간의 두 이동평균의 크로스오버 신호를 기반으로 구매 및 판매 신호를 생성하는 양적 거래 전략이다. 이 전략은 9일 및 20일 간단한 이동평균 (SMA) 을 사용합니다. 단기 이동평균 (9일) 이 장기 이동평균 (20일) 을 넘을 때 구매 신호가 생성되며 단기 이동평균이 장기 이동평균을 넘을 때 판매 신호가 생성됩니다. 전략 논리는 간단하고 명확하며 구현 및 최적화하기가 쉽습니다.

전략 원칙

이 전략의 핵심은 다른 기간의 이동 평균의 교차 신호를 사용하여 시장 트렌드의 전환점을 포착하는 것입니다. 구체적으로 전략의 주요 단계는 다음과 같습니다.

  1. 9일과 20일 간 간단한 이동평균을 계산합니다.
  2. 단기 이동 평균 (9일) 이 장기 이동 평균 (20일) 을 넘을 수 있는지 여부를 결정합니다. 그렇다면, 크로스오버 컨디션 변수를 true로 설정하여 구매 조건이 충족되었음을 나타냅니다.
  3. 현재 종료 가격이 개시 가격과 9일 이동 평균보다 크는지 여부를 결정합니다. 그렇다면 buySignal 변수를 true로 설정하여 현재 바가 구매 조건을 충족하는지 나타냅니다.
  4. 만약 크로스오버 컨디션과 바이시그널이 모두 사실이라면, 구매 동작을 실행하고 크로스오버 컨디션을 false로 리셋하여 반복 구매를 피합니다.
  5. 단기 이동 평균 (9일) 이 장기 이동 평균 (20일) 아래로 넘어가는지 여부를 결정합니다. 그렇다면, 크로스오버 컨디션 변수를 false로 설정하여 크로스오버 조건이 더 이상 충족되지 않는다는 것을 나타냅니다.
  6. 현재 종료 가격이 9일 이동 평균보다 낮다면 매각 거래를 실행합니다.

위의 단계를 통해 전략은 단기 이동 평균이 장기 이동 평균을 넘어서면 첫 번째 상승 촛불에서 구매하고 단기 이동 평균이 장기 이동 평균을 넘어서면 첫 번째 하락 촛불에서 판매하여 트렌드 전환점에 적절한 시점에 입장을 열고 닫을 수 있습니다.

이점 분석

이동 평균 크로스오버 양적 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 간단한 논리: 전략은 이동 평균의 크로스오버 신호를 기반으로 명확한 논리 및 이해하기 쉽고 구현하기 쉽습니다.
  2. 강한 적응력: 이동 평균의 기간 매개 변수를 조정함으로써 다른 시장과 거래 도구에 적응할 수 있습니다.
  3. 트렌드 추적: 이동 평균은 시장 트렌드를 효과적으로 추적 할 수 있으며 전략이 주요 트렌드 방향으로 거래 할 수 있습니다.
  4. 위험 통제: 이동 평균의 교차를 기반으로 전략은 현재 촛불의 경향을 판단하여 신호를 추가로 확인하고, 잘못된 신호를 어느 정도 피합니다.

위험 분석

이동 평균 크로스오버 양적 전략은 몇 가지 장점을 가지고 있지만, 여전히 다음과 같은 위험을 가지고 있습니다.

  1. 지연: 이동 평균은 지연 지표입니다. 크로스오버 신호가 나타날 때 시장은 종종 이미 일정 기간 동안 움직이고 전략의 입점은 이상적이지 않을 수 있습니다.
  2. 불안한 시장: 불안한 시장에서 단기 및 장기 이동 평균은 종종 교차 할 수 있으며 전략이 더 많은 거래 신호를 생성하고 거래 비용을 증가시킵니다.
  3. 매개 변수 위험: 다른 시장 환경 및 거래 도구는 다른 이동 평균 기간 매개 변수를 요구할 수 있습니다. 매개 변수 선택이 잘못되면 전략 성능이 떨어질 수 있습니다.

위의 위험을 해결하기 위해 다음과 같은 조치를 취하여 개선 할 수 있습니다.

  1. 다른 기술적 지표 또는 신호 필터링 조건, 예를 들어 거래량 및 변동성을 도입하여 신호 품질을 향상시킵니다.
  2. 불안정한 시장에서는 자주 거래로 인한 비용을 줄이기 위해 스톱 로스 또는 필터링 메커니즘을 도입하는 것을 고려하십시오.
  3. 다른 시장과 도구에 대해 전략의 안정성을 높이기 위해 매개 변수 최적화 및 적응 조정 수행.

최적화 방향

  1. 매개 변수 최적화: 현재 시장에 더 적합한 매개 변수 조합을 찾고 전략 성능을 향상시키기 위해 이동 평균의 기간 매개 변수를 최적화합니다.

  2. 신호 필터링: 이동 평균 크로스오버를 기반으로 MACD 및 RSI와 같은 다른 기술적 지표 또는 조건을 도입하여 거래 신호의 2차 확인을 수행하고 신호 신뢰성을 향상시킵니다.

  3. 포지션 관리: 시장 트렌드 강도 및 변동성 등의 요인에 따라 포지션 크기를 동적으로 조정합니다. 트렌드가 강할 때 포지션 크기를 증가시키고 트렌드가 불분명하거나 변동성이 증가할 때 포지션 크기를 감소시켜 위험 수익률을 향상시킵니다.

  4. 스톱 러스 및 트레이프: 전략 수익을 향상시키기 위해 수익을 실행시키는 동시에 단일 거래의 위험 노출을 제어하기 위해 합리적인 스톱 러스 및 트레이프 메커니즘을 도입하십시오.

  5. 긴 짧은 헤지: 전략에 반대 트렌드 신호를 추가하여 동시에 긴 포지션과 짧은 포지션을 보유하여 시장 위험을 헤지하고 전략의 안정성을 향상시키는 것을 고려하십시오.

위의 최적화 방향은 전략의 성능을 향상시키는 데 도움이 될 수 있지만 구체적인 구현은 여전히 실제 상황에 따라 조정되고 테스트되어야합니다.

요약

이동 평균 크로스오버 양적 전략은 서로 다른 기간의 이동 평균의 크로스오버 신호를 통해 시장 트렌드의 변화를 포착하는 간단하고 효과적인 트렌드 추적 전략이다. 전략 논리는 명확하고 적응 가능하지만 지연 및 불규칙한 시장 위험과 같은 문제도 있다. 다른 기술적 지표, 매개 변수 최적화, 위치 관리 및 위험 관리 조치를 개선함으로써 이 전략의 성능을 더욱 향상시킬 수 있으며, 더욱 견고하고 효과적인 양적 거래 전략이 될 수 있다.


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ZeroHeroTrading

//@version=5
strategy("Simple 9/20 Crossover", overlay=true)

// Define moving averages
ma9 = ta.sma(close, 9)
ma20 = ta.sma(close, 20)

// Set persistent variable to keep track of crossover condition
var bool crossoverCondition = false

// 9 MA crosses above 20 MA
// Set crossover condition to true
if ta.crossover(ma9, ma20)
    crossoverCondition := true

// 9 MA crosses under 20 MA
// Reset crossover condition to false
if ta.crossunder(ma9, ma20)
    crossoverCondition := false   

// Set buy and sell signals
buySignal = crossoverCondition and close > open and close > ma9
sellSignal = close < ma9

// Execute trades based on signals
if (buySignal)
    strategy.entry("Long", strategy.long)
    // Avoid repeat entries by resetting crossover condition to false
    crossoverCondition := false

if (sellSignal)
    strategy.close("Long")

// Plot moving averages on the chart
plot(ma9, color=color.blue)
plot(ma20, color=color.red)


더 많은