이동 평균 반전 교차 전략


생성 날짜: 2023-12-01 16:52:13 마지막으로 수정됨: 2023-12-01 16:52:13
복사: 0 클릭수: 473
1
집중하다
1166
수행원

이동 평균 반전 교차 전략

개요

이동 평균 반전 가로지르는 전략은 기술 분석 전략이다. 이동 평균의 방향과 주식 가격의 관계를 사용하여 입점 또는 퇴출의 시간을 판단한다. 구체적으로, 상향에서 아래로 45 일 이동 평균을 가로지르면 공백을 할 수 있다. 공백을 보유한 지 8 일 후 평정 위치; 그 후 다시 45 일 이동 평균을 가로지르는 주식 가격의 신호가 나타났을 때 공백을 할 수 있다.

전략 원칙

이 전략의 핵심 논리는 다음과 같습니다.

  1. 45일 간소 이동 평균 (SMA)
  2. 45일 이동 평균을 위아래에서 아래로 넘어가면 코스피를 입수합니다.
  3. 8 거래일 후 공백을 보유
  4. 그리고 그 후에 다시 한 번 가격이 넘어가면 다시 빈 자리를 만들 수 있습니다.

특히:

  1. 45일 SMA를 계산해 봅시다.
  2. 만약 빈 포지션을 보유하지 않고 SMA를 넘어서 가격 하락의 신호가 나타나면 (상장 전날의 SMA)
  3. 8일 동안 공백을 유지한 경우, 공백을 유지합니다.
  4. 만약 빈 포지션을 보유하지 않은 상태에서 가격이 다시 SMA 신호를 넘어서고, 지난 평점 포지션과 최소 8일 간격이 있다면, 다시 빈 포지션을 할 수 있습니다.

이러한 논리를 통해 주가가 이동 평균을 크게 아래로 돌파할 때 공백을 만들 수 있으며, 일정 시간이 지나면 cutoff loss 수 있습니다.

우위 분석

이 전략에는 다음과 같은 장점이 있습니다.

  1. 개념이 간단하고, 이해하기 쉽고, 구현하기 쉽습니다.
  2. 이동 평균의 신호를 이용해서 주가 트렌드 반전을 판단할 수 있습니다.
  3. 명확한 출입규칙과 손해배상규칙
  4. 일부 가짜 침입 신호를 필터링할 수 있습니다.

다른 전략에 비해 이 전략은 이해하기 쉽고 프로그래밍하기 쉽다. 또한, 이동 평균을 이용해서 주식 가격의 추세를 판단한다. 가격이 이동 평균을 뚫을 때, 종종 단기 트렌드가 변하는 것을 의미한다. 따라서 반전 기회를 잡을 수 있다.

또한, 전략의 입점 규칙과 8일 고정 손실 방식은 위험 통제를 더욱 명확하게 한다. 허위 돌파의 경우도 어느 정도 필터링된다. 전체적으로 이 전략은 간단하고 실용적이며 쉽게 습득한다.

위험 분석

그러나 이 전략에는 몇 가지 위험도 있습니다.

  1. 이동 평균은 그 자체로 지연성이 강하여, 모든 교차가 정확한 트렌드 반전 지점을 보장하지 않습니다.
  2. 8일간의 지분 보유 기간은 비교적 짧은 기간이며, 지속적으로 큰 규모의 거래량을 잡을 수 없습니다.
  3. 파격 신호에 대한 판단에 대해서는 더 이상 확인되지 않았으며, 일부 가짜 파격이 존재할 가능성이 있다.
  4. 이윤을 고정할 수 없는 정지점 설정

구체적으로, 이동 평균 자체는 가격 변화에 뒤쳐져 있기 때문에 신호를 발산하는 시기는 정확하지 않습니다. 일부 돌파구는 일시적일 수 있으며, 역점을 제대로 파악할 수 없습니다.

또한, 8일간의 포지션 보유 기간은 비교적 짧습니다. 큰 주식 시장에서, 이러한 손실 설정은 너무 급진적일 수 있으며, 큰 반전을 지속적으로 잡을 수 없습니다. 또한 시장에 반복적으로 들어오는 거래의 수를 증가시킵니다.

전략에서 돌파 신호에 대한 판단은 가격과 이동 평균의 관계에만 의존한다. 신호를 필터링하기 위해 더 많은 확인 지표 또는 조건이 설정되지 않았다. 이것은 어느 정도 가짜 돌파를 일으키는 경우에 발생합니다.

마지막으로, 이윤을 고정하기 위해 스톱포트를 설정하지 않습니다. 손실이 스톱로 전환되기 전에 이윤이 삭감 될 수도 있습니다.

최적화 방향

위와 같은 위험 분석을 통해, 이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. 가짜 돌파구를 필터링하기 위해 더 많은 확인 지표 또는 조건을 설정합니다.

예를 들어, MACD, KD와 같은 다른 기술 지표를 구성 할 수 있으며, 특정 신호가 나타나면 트렌드 반전을 확인 할 수 있습니다. 또는 거래량 급증을 보조 조건으로 구성 할 수 있습니다.

  1. 자율적인 포지션 보유 시간을 구성합니다.

예를 들어, 가격이 특정 고정 범위를 넘어서면 멈춥니다. 또는 다른 지표 (예를 들어 MACD) 가 신호를 내면 멈춥니다.

  1. 슬라이드 스톱을 설정

즉, 가격이 일정 비율로 움직일 때 점진적으로 스톱포트를 움직여 수익을 고정하는 것이다.

  1. 이동 평균의 일간 변수를 최적화합니다.

다른 날 수의 변수를 시도하고 테스트하여 최적의 변수를 찾습니다. 또한 쌍 이동 평균 시스템을 구성할 수 있습니다.

이러한 최적화를 통해, 전략이 단순하고 효과적인 유지에 기초하여, 신호 품질을 향상시키고, 가짜 돌파의 확률을 줄일 수 있습니다. 더 많은 트렌드 수익을 얻을 수 있으며, 더 강력한 위험 제어 능력을 가지고 있습니다. 따라서 더 나은 전략 성능을 얻을 수 있습니다.

요약하다

이동 평균 반전 경과 전략은 매우 간단하고 실용적인 짧은 라인 거래 전략이다. 그것은 이동 평균, 널리 알려진 기술 지표를 사용하여 주가가 단기 경향 반전의 신호가 있는지 판단한다. 쉽게 이해, 구현 간단한, 위험 제어 가능한 등의 장점이 있다. 또한 가짜 돌파구, 포지션 보유 시간 등과 같은 최적화 가능한 문제가 있습니다. 합리적인 기술 지표 또는 파라미터 구성을 통해 간단한 효과적 인 특성을 유지하면서 전략의 성과와 위험 제어 능력을 더욱 향상시킬 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-28 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Moving Average Reverse Crossover Strategy", overlay=true)

// Calculate the 45-day moving average
ma_length = 45
ma = ta.sma(close, ma_length)

// Track position entry and entry bar
var bool in_short_position = na
var int entry_bar = na
var int exit_bar = na

// Entry condition: Close price crosses below the 45-day moving average to enter the short position
if (not in_short_position and ta.crossunder(close, ma) and not na(ma[1]) and close < ma and close[1] > ma[1])
    in_short_position := true
    entry_bar := bar_index

// Exit condition: Close the short position after holding for 8 trading days
if (in_short_position and bar_index - entry_bar >= 8)
    in_short_position := false
    exit_bar := bar_index

// Re-entry condition: Wait for price to cross below the 45-day moving average again
if (not in_short_position and ta.crossunder(close, ma) and not na(ma[1]) and close < ma and close[1] < ma[1] and (na(exit_bar) or bar_index - exit_bar >= 8))
    in_short_position := true
    entry_bar := bar_index

// Execute short entry and exit
if (in_short_position)
    strategy.entry("Short", strategy.short)

if (not in_short_position)
    strategy.close("Short")