
이 전략은 다주기 간단한 이동 평균 (SMA) 의 교차와 변동율 필터를 결합한 양적 거래 전략이다. 이 전략은 단기 및 장기 SMA의 교차를 사용하여 거래 신호를 생성하고, 평균 실제 파도 (ATR) 지표를 변동율 필터로 사용하여 가짜 신호를 줄인다. 이 전략은 또한 200 일평균에 기반한 동적 정지 손실과 고정 수익 목표를 포함하고 있으며, 위험 관리를 최적화하고 수익성을 높이기 위해 고안되었다.
평균선 교차 신호: 전략은 단기 ((10일) 과 장기 ((200일) 의 SMA의 교차를 사용하여 구매 및 판매 신호를 생성한다. 단기 SMA에서 장기 SMA를 통과하면 다중 신호가 생성되고, 아래로 통과하면 공백 신호가 생성된다.
변동률 필터링: 14일 ATR을 변동률 지표로 사용한다. 거래 신호는 현재 ATR이 14일 평균보다 높은 특정 배수 (사용자가 설정한 ATR 배수가 결정) 이 있을 때만 실행된다. 이것은 낮은 변동 기간의 잠재적인 가짜 신호를 필터링하는 데 도움이 된다.
동적 스톱: 전략은 200일 SMA를 동적 스톱 기준으로 사용합니다. 다중 상위 포지션의 스톱 손실은 200일 SMA의 99.9%이며, 빈 상위 포지션의 스톱 손실은 200일 SMA의 100.1%입니다.
고정 수익 목표: 전략은 각 거래에 대해 고정 수익 목표를 설정한다. 다중 거래의 수익 목표는 입시 가격에 7.5 가격 단위 더하기, 공백 거래는 입시 가격에서 7.5 가격 단위 더하기이다.
다중 신호 확인: 평행선 교차와 변동률 필터링을 결합하여, 전략은 가짜 신호의 위험을 줄이고 거래의 신뢰성을 높인다.
동적 위험 관리: 200일 SMA에 기반한 동적 스톱로드를 사용하여 전략이 시장 조건의 변화에 적응할 수 있도록 하여 보다 유연한 위험 관리를 제공한다.
명확한 수익 목표: 고정된 수익 목표는 이미 달성된 수익을 보호하고 과도한 탐욕으로 인한 회수를 방지하는 데 도움이됩니다.
적응성: 전략의 매개 변수는 다른 시장과 거래 유형에 따라 조정될 수 있어 전략의 다재다능성을 높인다.
시각적 도움말: 전략은 다양한 SMA 라인, 스톱로스 및 수익 목표를 차트에 그려서 거래자에게 직관적인 시장 분석 도구를 제공합니다.
평균선 지연성: SMA는 본질적으로 지연 지표이며, 빠르게 변화하는 시장에서 지연 신호를 발생시킬 수 있으며, 이는 출입 또는 출퇴근을 조기에 하지 않을 수 있다.
과도한 거래: 높은 변동성이 있지만 명확한 추세가 없는 시장에서, 전략은 과도한 거래 신호를 생성하여 거래 비용을 증가시킬 수 있다.
고정 수익 목표의 한계: 고정 수익 목표는 강력한 추세에서 너무 일찍 평점, 잠재적인 수익을 제한 할 수 있습니다.
특정 시장 조건에 대한 의존성: 전략은 트렌드가 뚜렷한 시장에서 잘 작동하지만 수평 또는 급격한 반전 시장에서는 좋지 않을 수 있습니다.
매개 변수 민감성: 전략의 성능은 선택된 매개 변수에 크게 의존하며, 잘못된 매개 변수 설정으로 인해 전략의 성능이 좋지 않을 수 있다.
동적 파라미터 조정: 시장 상황에 따라 동적으로 SMA 주기와 ATR 곱수를 조정하여 다른 시장 환경에 적응 할 수 있습니다.
트렌드 강도 필터링을 늘리십시오: 트렌드 강도 지표 (ADX와 같은) 를 추가하여 강한 트렌드 시장에서만 거래하는 것을 보장합니다.
수익 목표 최적화: 시장의 변동에 더 잘 적응하기 위해 ATR 또는 최근 가격 변동에 기반한 범위 설정과 같은 동적인 수익 목표를 사용하는 것을 고려하십시오.
부분 평준화 메커니즘을 도입: 특정 수익 수준을 달성했을 때 부분 평준화를 수행하여 수익의 일부를 잠금 할 수 있으며 나머지 포지션이 수익을 계속 얻을 수 있습니다.
시장 체제 식별을 증가 시키기: 트렌드, 간격, 높은 변동 등과 같은 다양한 시장 상태를 식별하는 알고리즘을 개발하고 그에 따라 전략 매개 변수를 조정하거나 거래를 중지하십시오.
최적화된 스톱 메커니즘: 더 유연한 위험 관리를 제공하기 위해 트레일링 스톱이나 지지/저항 수준에 기반한 스톱을 사용하는 것을 고려하십시오.
이 다주기 평행선 교차와 변동률 필터링 동적 전략은 기술 분석의 고전적 요소와 현대적 위험 관리 기술을 결합한다. SMA 교차 신호, ATR 변동률 필터링, 동적 정지 및 고정 수익 목표를 통합함으로써, 전략은 시장 추세를 포착하는 동시에 위험을 제어하는 것을 목표로 한다. 일부 고유한 한계가 있음에도 불구하고, 지속적인 최적화와 적응력을 조정하면 이 전략은 견고한 거래 시스템이 될 잠재력을 가지고 있다.
/*backtest
start: 2024-06-30 00:00:00
end: 2024-07-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SMA Crossover Strategy with Volatility Filter", overlay=true)
// Define input parameters
shortSMA = input.int(10, title="Short SMA Length", minval=1)
longSMA = input.int(200, title="Long SMA Length", minval=1)
sma200Length = 200
atrLength = input.int(14, title="ATR Length", minval=1)
atrMultiplier = input.float(1.0, title="ATR Multiplier", minval=0.1)
// Calculate SMAs
smaShort = ta.sma(close, shortSMA)
smaLong = ta.sma(close, longSMA)
sma200 = ta.sma(close, sma200Length)
// Calculate ATR for volatility
atr = ta.atr(atrLength)
// Plot SMAs
plot(smaShort, color=color.blue, title="Short SMA")
plot(smaLong, color=color.red, title="Long SMA")
plot(sma200, color=color.green, title="200 SMA")
// Calculate stop loss levels
stopLossLong = sma200 * 0.999
stopLossShort = sma200 * 1.001
// Initialize take profit levels
var float takeProfitLong = na
var float takeProfitShort = na
// Generate buy/sell signals
longCondition = ta.crossover(smaShort, smaLong) and atr > atrMultiplier * ta.sma(atr, atrLength)
shortCondition = ta.crossunder(smaShort, smaLong) and atr > atrMultiplier * ta.sma(atr, atrLength)
// Execute trades with stop loss and take profit
if (longCondition)
strategy.entry("Long", strategy.long)
takeProfitLong := close + 7.5
strategy.exit("Long Exit", "Long", stop=stopLossLong, limit=takeProfitLong)
if (shortCondition)
strategy.entry("Short", strategy.short)
takeProfitShort := close - 7.5
strategy.exit("Short Exit", "Short", stop=stopLossShort, limit=takeProfitShort)
// Plot stop loss and take profit levels on chart
plot(strategy.position_size > 0 ? stopLossLong : na, style=plot.style_cross, color=color.red, title="Stop Loss Long")
plot(strategy.position_size > 0 ? takeProfitLong : na, style=plot.style_cross, color=color.green, title="Take Profit Long")
plot(strategy.position_size < 0 ? stopLossShort : na, style=plot.style_cross, color=color.red, title="Stop Loss Short")
plot(strategy.position_size < 0 ? takeProfitShort : na, style=plot.style_cross, color=color.green, title="Take Profit Short")