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

이중 이동 평균 크로스오버 전략

저자:차오장, 날짜: 2024-05-17 15:48:04
태그:EMASMA

img

전반적인 설명

전략 원칙

  1. 빠른 이동 평균이 느린 이동 평균 (황금 십자) 을 넘을 때 현재 위치가 없다면 긴 포지션을 열고 스톱 로스 가격을 설정합니다. (스톱 로스 비율을 기준으로 계산됩니다.)
  2. 빠른 이동 평균이 느린 이동 평균 (죽음 크로스) 아래로 넘어가면 현재 위치가 없으면 짧은 위치를 열고 스톱 로스 가격을 설정합니다.

전략적 장점

  1. 이 논리는 간단하고 명확하고 이해하기 쉽고 실행하기 쉽고 트렌드를 따르는 전략의 기초입니다.
  2. 서로 다른 기간의 두 이동 평균의 교차를 사용하여 트렌드 형성과 반전을 더 잘 결정할 수 있습니다.
  3. SMA와 EMA를 모두 지원하며 유연하게 선택할 수 있습니다.
  4. 스톱 로스를 설정하면 어느 정도 손실 위험을 조절할 수 있습니다.

전략 위험

  1. 부적절한 매개 변수 선택 (예를 들어 부적절한 이동 평균 기간) 은 빈번한 신호 또는 추세 판단의 지연으로 이어질 수 있습니다.
  2. 추세가 뒤집어지거나 끝나면 더 큰 마감이 발생할 수 있습니다.

전략 최적화 방향

  1. 이동 평균 기간, 스톱-러스 비율 등을 포함한 매개 변수를 최적화하여 안정성 및 위험 수익률을 향상시킵니다.
  2. 스톱 로스 포지션을 동적으로 조정하기 위해 ATR와 같은 변동성 관련 지표를 도입하는 것을 고려하십시오.

요약

이중 이동 평균 크로스오버 전략 (Dual Moving Average Crossover strategy) 은 중장기 트렌드를 포착하는 데 적합한 두 개의 이동 평균의 크로스오버를 기반으로 트렌드 방향과 진입/출출 시기를 결정하는 간단하고 고전적인 트렌드 추후 전략이다. 그러나 고정 매개 변수는 변화하는 시장 환경에서 불안정하게 수행될 수 있으며, 비교적 견고한 거래 전략이 되기 위해 매개 변수 최적화, 스톱 로스 개선, 다른 신호 도입 등 추가 최적화 및 개선이 필요합니다. 이 전략은 트렌드 전략의 기초로 작용하고 지속적으로 개선 및 확장 될 수 있습니다.


/*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)

관련

더 많은