
쌍평평선 교차 전략은 고전적인 트렌드 추적 거래 전략이다. 이 전략은 두 개의 이동 평균을 사용한다. 하나는 빠른 이동 평균이고, 다른 하나는 느린 이동 평균이다. 빠른 이동 평균이 느린 이동 평균을 상향에서 상향으로 가로지르면, “황금 교차”라고 불리며, 상승 추세가 형성될 수 있음을 나타냅니다.
이 전략의 핵심은 이동 평균의 트렌드 특성과 교차 신호를 사용하여 트렌드 방향과 포지션 개시 시간을 판단하는 것입니다. 먼저 빠른 이동 평균 (기본 50) 과 느린 이동 평균 (기본 200) 의 주기를 매개 변수로 설정하고 SMA 또는 EMA를 사용하는 것을 선택합니다. 두 개의 이동 평균을 계산하여 교차 상황을 판단합니다.
쌍평선 교차 전략은 두 개의 다른 주기 이동 평균의 교차로 트렌드 방향을 판단하고 포지션 개시 시기를 판단하는 간단한 클래식 트렌드 추적 전략입니다. 그러나 고정 매개 변수는 변화하는 시장 환경에서 불안정한 성능을 보일 수 있으며, 최적화 매개 변수, 스톱 손실 개선, 신호 도입 등과 같은 추가적인 최적화 개선이 필요합니다. 비교적 안정적인 거래 전략이 되기 전에 이 전략은 트렌드 전략의 기초가 될 수 있으며, 그 기초에 따라 지속적으로 개선 및 확장 할 수 있습니다.
/*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)