더블 이동 평균 교차 전략

EMA SMA
생성 날짜: 2024-05-17 15:48:04 마지막으로 수정됨: 2024-05-17 15:48:04
복사: 0 클릭수: 661
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블 이동 평균 교차 전략

개요

쌍평평선 교차 전략은 고전적인 트렌드 추적 거래 전략이다. 이 전략은 두 개의 이동 평균을 사용한다. 하나는 빠른 이동 평균이고, 다른 하나는 느린 이동 평균이다. 빠른 이동 평균이 느린 이동 평균을 상향에서 상향으로 가로지르면, “황금 교차”라고 불리며, 상승 추세가 형성될 수 있음을 나타냅니다.

전략 원칙

이 전략의 핵심은 이동 평균의 트렌드 특성과 교차 신호를 사용하여 트렌드 방향과 포지션 개시 시간을 판단하는 것입니다. 먼저 빠른 이동 평균 (기본 50) 과 느린 이동 평균 (기본 200) 의 주기를 매개 변수로 설정하고 SMA 또는 EMA를 사용하는 것을 선택합니다. 두 개의 이동 평균을 계산하여 교차 상황을 판단합니다.

  1. 빠른 이동 평균이 느린 이동 평균을 위쪽으로 가로지르면 (금의 교차) 현재 포지션이 없는 경우 포지션을 더 많이 열고, 동시에 스톱 로스 가격을 설정합니다 (스톱 로스 비율에 따라 계산).
  2. 빠른 이동 평균이 느린 이동 평균을 아래로 가로지르면 (죽음의 교차) 현재 포지션이 없는 경우 포지션을 공백으로 열고, 동시에 스톱 로스 가격을 설정한다.
  3. 다중 포지션이 있는 경우, 죽음의 교차가 발생했을 때 평점 포지션.
  4. 이미 공백된 포지션이 있다면, 금이 교차할 때 청산한다. 이동 평균의 교차 신호를 통해 포지션을 열고, 트렌드 추적 방식으로 가격의 중기 및 장기 동향을 잡기 위해 스톱로스를 설정합니다.

전략적 이점

  1. 트렌드 트래킹 전략의 기본은 단순하고 명확하고 이해하기 쉽고 실행하기 쉬운 논리입니다.
  2. 두 개의 다른 기간의 이동 평균의 교차를 통해 트렌드의 형성 및 반전을 더 잘 판단 할 수 있습니다.
  3. SMA와 EMA의 두 가지 유형의 이동 평균을 지원하여 선택의 유연성을 제공합니다.
  4. 스톱로스를 설정하여 손실 위험을 어느 정도 제어합니다.
  5. 중·장기 트렌드를 파악하는 데 적합하며, 트렌드를 따르는 스타일이다.

전략적 위험

  1. 매개 변수 선택이 잘못되면 신호의 빈도나 추세 판단이 늦어질 수 있다.
  2. 급격한 변동으로 인해 거래가 빈번하게 이루어지면서 실적이 좋지 않을 수 있습니다.
  3. 트렌드 반전 또는 종료 시에는 큰 반전이 발생할 수 있습니다.
  4. 고정 비율의 상쇄 손실은 위험을 잘 통제하지 못할 수도 있습니다.

전략 최적화 방향

  1. 매개 변수 최적화, 이동 평균 주기, 중지 손실 비율 등, 안정성과 수익 위험 비율을 향상.
  2. 동적으로 스톱 로즈를 조정하기 위해 ATR과 같은 변동율과 관련된 지표를 도입하는 것을 고려할 수 있습니다.
  3. 트렌드 확인 후 다시 포지션을 개설하는 대신 교차할 때 즉시 포지션을 개설하거나 다른 트렌드 확인 지표 보조 판단을 추가하여 트렌드 파악의 정확성을 향상시킵니다.
  4. “이런 일이 벌어진다면, 우리는 더 나은 삶을 살 수 있을 것입니다”.
  5. 다른 신호와 결합하여 다중 요소 전략을 고려하십시오.

요약하다

쌍평선 교차 전략은 두 개의 다른 주기 이동 평균의 교차로 트렌드 방향을 판단하고 포지션 개시 시기를 판단하는 간단한 클래식 트렌드 추적 전략입니다. 그러나 고정 매개 변수는 변화하는 시장 환경에서 불안정한 성능을 보일 수 있으며, 최적화 매개 변수, 스톱 손실 개선, 신호 도입 등과 같은 추가적인 최적화 개선이 필요합니다. 비교적 안정적인 거래 전략이 되기 전에 이 전략은 트렌드 전략의 기초가 될 수 있으며, 그 기초에 따라 지속적으로 개선 및 확장 할 수 있습니다.

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

//@version=5
//==============================================================================
// A baseline strategy with a well known concept, golden cross & death cross.
// Support for both Simple & Exponential moving averages.
// Support for long & short stop losses as a percentage.:well
//==============================================================================
strategy("Basic Moving Average Crosses", overlay=true)

//------------------------------------------------------------------------------
// configuration
//------------------------------------------------------------------------------
maQuickLength = input(50, title="Quick MA Length") 
maSlowLength  = input(200, title="Quick MA Length") 
useSma        = input(true, title="Use SMA? If false, EMA is used.")

maQuick = useSma ? ta.sma(close, maQuickLength) : ta.ema(close, maQuickLength)
maSlow  = useSma ? ta.sma(close, maSlowLength) : ta.ema(close, maSlowLength)

stop_loss_percentage = input(2.0, title="Stop Loss (%)")

var float longStopLevel = na
var float shortStopLevel = na

bool isGoldenCross = ta.crossover(maQuick, maSlow)
bool isDeathCross  = ta.crossunder(maQuick, maSlow)

//------------------------------------------------------------------------------
// position opening logic
//------------------------------------------------------------------------------

if(strategy.position_size == 0)
    // Golden cross, enter a long position
    if(isGoldenCross)
        strategy.entry("Buy", strategy.long)
        longStopLevel := close - close * stop_loss_percentage/100.0
        strategy.exit("StopLossLong", "Buy", stop=longStopLevel)
    // Death cross, enter short position
    else if(isDeathCross)
        strategy.entry("Sell", strategy.short)
        shortStopLevel := close + close * stop_loss_percentage/100.0
        strategy.exit("StopLossShort", "Sell", stop=shortStopLevel)

//------------------------------------------------------------------------------
// position closing logic
//------------------------------------------------------------------------------
else
    // Close long position on death cross
    if(strategy.position_size > 0 and isDeathCross)
        strategy.close("Buy")
    
    // Close short position on golden cross
    else if(strategy.position_size < 0 and isGoldenCross)
        strategy.close("Sell")

//------------------------------------------------------------------------------
// ploting
//------------------------------------------------------------------------------
plot(maQuick, color=color.yellow)
plot(maSlow, color=color.blue)