이동평균 교차 전략

MA SMA
생성 날짜: 2024-04-30 17:33:09 마지막으로 수정됨: 2024-04-30 17:33:09
복사: 1 클릭수: 644
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동평균 교차 전략

개요

이 전략은 두 개의 이동 평균 (((MA) 을 사용하여 거래 신호를 생성한다. 짧은 기간의 MA가 아래에서 위쪽으로 더 긴 기간의 MA를 통과하면 구매 신호를 생성하고, 짧은 기간의 MA가 위쪽으로 더 긴 기간의 MA를 통과하면 판매 신호를 생성한다. 이 전략은 거래 시간대 (((UTC 8시부터 20시까지) 와 정지점 (((150점) 을 동시에 설정한다.

전략 원칙

  1. 두 개의 다른 주기의 이동 평균을 계산합니다.
  2. 짧은 주기 MA가 더 긴 주기 MA를 상하하하는지를 판단하여 구매/판매 신호로 사용한다.
  3. 거래 시간대는 UTC 8시부터 20시까지로 설정하고, 그 시간대에만 거래한다.
  4. 최근 4개의 K선들이 MA 위/아래에 닫히는지 판단하여 트렌드를 확인한다.
  5. 구매/판매 조건이 충족되면 입장을 열고 150점의 정지점을 설정한다.

전략적 이점

  1. 두 개의 다른 주기의 MA를 사용하면 트렌드를 효과적으로 포착할 수 있으며, 트렌디 시장에 적용된다.
  2. 거래 기간을 설정하면 유동성이 낮은 시간에 거래하는 것을 방지하고 위험을 줄일 수 있습니다.
  3. 최근 4개의 K선들이 MA 위/아래에 닫히는지 판단함으로써 트렌드를 확인하고 신호의 신뢰성을 높일 수 있다.
  4. 고정된 막점을 설정하여 수익을 효과적으로 고정하고 위험을 통제할 수 있다.

전략적 위험

  1. 이 전략은 불안정한 시장에서 종종 잘못된 신호를 발생시켜 손실을 초래할 수 있습니다.
  2. 고정된 정지점은 전략의 수익 공간을 제한할 수 있다.
  3. 이 전략은 스톱로드를 설정하지 않았으며, 시장이 급격히 역전될 경우 더 큰 위험을 감수할 수 있습니다.

전략 최적화 방향

  1. 신호 신뢰성을 높이기 위해 RSI, MACD 등과 같은 더 많은 기술 지표를 도입하는 것을 고려할 수 있습니다.
  2. 동적 스톱 스톱 또는 ATR 기반 스톱 스톱 스톱을 사용하여 스톱 스톱 손실을 최적화 할 수 있습니다.
  3. 거래 신호에 대한 2차 확인은 시장의 미시 구조와 같은 명령 흐름과 같은 정보를 결합 할 수 있습니다.
  4. 다른 시장 상태 ((트렌드/스컬레이션) 에 대해 다른 파라미터 설정을 적용하여 전략의 적응성을 향상시킬 수 있다.

요약하다

이 전략은 두 개의 다른 주기의 이동 평균의 교차를 기반으로 거래 신호를 생성하고, 트렌딩 시장에 적합하다. 거래 기간과 고정 스톱포트를 설정하여 위험을 어느 정도 제어할 수 있다. 그러나 이 전략은 흔들리는 시장에서 좋지 않은 성능을 발휘할 수 있으며, 고정 스톱포트는 전략의 수익 공간을 제한할 수 있다.

전략 소스 코드
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

// User-defined moving average periods
ma1Periods = input(5, title="First Moving Average Periods")
ma2Periods = input(20, title="Second Moving Average Periods")

// Calculate moving averages
ma1 = sma(close, ma1Periods)
ma2 = sma(close, ma2Periods)

// Plot moving averages
plot(ma1, color=color.red, linewidth=2, title="First Moving Average")
plot(ma2, color=color.blue, linewidth=2, title="Second Moving Average")

// Detect crossovers and crossunders
bullishCross = crossover(ma1, ma2)
bearishCross = crossunder(ma1, ma2)

// Define trading hours (8 AM to 2 PM UTC)
startHour = 8
endHour = 20
utcHour = hour(time, "UTC")
isMarketOpen = true

// Define profit target
profitTarget = 150

// Check if the price has closed above/below the MA for the past 4 bars
aboveMa = close[4] > ma1[4] and close[3] > ma1[3] and close[2] > ma1[2] and close[1] > ma1[1]
belowMa = close[4] < ma1[4] and close[3] < ma1[3] and close[2] < ma1[2] and close[1] < ma1[1]

// Create buy and sell signals
if (bullishCross and isMarketOpen and aboveMa)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Sell", "Buy", profit=profitTarget)
if (bearishCross and isMarketOpen and belowMa)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Cover", "Sell", profit=profitTarget)

// Plot shapes on crossovers
plotshape(series=bullishCross and isMarketOpen and aboveMa, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=bearishCross and isMarketOpen and belowMa, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")