
다중 스윙 지표 거래 시스템은 기술 분석에 기반한 정량 거래 전략으로, 핵심은 스윙 고점과 저점의 식별에 의존하여 시장 추세 변화를 결정한다. 이 전략은 지난 N 주기의 최고 가격과 최저 가격을 추적함으로써, 다중 스윙 거래의 의사 결정 경계로, 동적인 추적 손실 수준을 구축한다. 이 시스템은 가격이 TSL 수준을 돌파할 때 자동으로 구매 신호를 실행하고, 가격이 TSL 수준을 넘어서는 경우 자동으로 판매 신호를 실행하며, 동시에 자동으로 포지션을 관리하며, 매번 하나의 방향의 포지션을 확보한다. 이 전략은 특히 변동성이 큰 시장 환경에 적합하며, 단기 또는 중기간의 추세 변화를 자동으로 포착할 수 있다.
이 전략의 핵심 논리는 트래킹 스톱 로즈 레벨 (TSL) 에 기반하여 다음과 같이 구현됩니다.
계산주기의 핵심 가격 수준:
ta.highest(high, no)지난 no 회기의 최고값을 계산합니다.ta.lowest(low, no)지난 no 회기의 최저값을 계산합니다.가격의 위치와 비교하여,
트래킹 스톱 로즈 레벨 (TSL) 을 구성합니다.
트레이딩 신호를 생성합니다.
트랜잭션 실행:
이 시스템은 또한 구매 및 판매 지점을 표시하는 것과 같은 시각적 요소를 포함하고 있으며, 색상 변화의 K선과 배경, 그리고 실시간 개시 가격을 표시하는 수평선은 거래 과정의 시각적 경험을 향상시킵니다.
트렌드 캡처 능력: 최고 가격과 최저 가격의 동적 계산을 통해 시장 트렌드 변화를 효과적으로 캡처하고, 다른 시장 주기에서의 변동에 적응할 수 있다.
높은 자동화: 시스템 자동으로 구매 및 판매 신호를 인식하고 거래를 수행하여 인간의 개입과 감정적 인 영향을 줄입니다.
양방향 거래 메커니즘: 상위와 하위 거래가 지원되며, 상승과 하락의 시장에서 수익 기회를 얻을 수 있습니다.
내장된 위험 관리: 스톱 로즈 레벨 (TSL) 을 추적하는 디자인은 본질적으로 스톱 로즈 기능을 포함하고, 단일 거래의 최대 손실을 제한한다.
시각화 거래 피드백: 그래픽 인터페이스를 통해 거래 신호와 포지션 개시 가격을 명확하게 표시하여 거래자가 전략의 성과를 실시간으로 모니터링하고 평가할 수 있습니다.
변수 유연성: 흔들기 주기 변수 ((no) 를 조정하여, 다른 시간 주기 시장 특성에 적응할 수 있으며, 짧은 선에서 중장선까지 모두 적용할 수 있다.
명확한 신호 경고: 시스템은 문자 및 시각적 이중 신호 경고를 제공하여 잘못된 조작의 가능성을 줄인다.
흔들림 시장의 부적절한 성능: 이 전략은 가로 수평 흔들림 시장에서 빈번한 잘못된 신호를 생성하여 연속적인 스톱 손실을 초래할 수 있습니다.
슬라이드 포인트 및 실행 지연 위험: 실장 거래에서, 신호 생성과 주문 실행 사이에 시간 차이가 있을 수 있으며, 이는 실제 거래 가격의 이상적인 가격에서 벗어날 수 있습니다.
고정 포지션 관리 제한: 현재 전략은 고정 단위를 사용하여 ((qty=1) 거래하고, 시장의 변동성이나 계좌 규모에 따라 포지션 크기를 조정하는 메커니즘이 없습니다.
변수 감수성: 전략 성능은 휘어지는 주기 변수 ((no) 의 설정에 크게 의존하며, 다른 시장 환경에는 다른 변수 값이 필요할 수 있다.
갑작스러운 상황에 대한 대응 능력이 약하다: 중요한 뉴스 또는 블랙 스 사건으로 인한 급격한 가격 변화로 인해 막상 손실 수준이 조정되지 않아 큰 손실을 초래할 수 있다.
이러한 위험을 줄이는 방법에는: 다른 지표와 함께 신호 확인, 동적 위치 관리, 최대 손실 제한 설정, 변동율에 따라 변수를 조정하는 방법, 그리고 주기적으로 재검토 및 최적화 전략 변수 등이 포함됩니다.
volatility = ta.atr(14) / close * 100 // 计算波动率百分比
position_size = strategy.equity * 0.01 / volatility // 根据波动率调整仓位
rsi = ta.rsi(close, 14)
valid_buy = Buy and rsi < 70 // 避免在超买区域买入
valid_sell = Sell and rsi > 30 // 避免在超卖区域卖出
자기 적응 파라미터: 시장의 변동성 동력에 따라 조정되는 흔들림 주기 파라미터 ((no), 낮은 변동 환경에서는 작은 값을 사용하고, 높은 변동 환경에서는 큰 값을 사용합니다.
이익 목표를 추가: ATR 또는 지지/저항 수준에 기반한 이익 목표를 설정하여 시장이 유리한 방향으로 움직일 때 충분히 멀리 떨어져있는 부분 이익을 잠금합니다.
시간 필터: 거래 시간 창 제한을 추가하여 유동성이 낮거나 비정상적으로 변동하는 시장 시기를 피하십시오.
철회 제어 메커니즘: 계정 이자 철회 비율을 기반으로 한 거래 중지 메커니즘을 적용하고, 연속적인 손실이 기본 절치값에 도달하면 거래를 중단합니다.
다주기 확인: 더 높은 시간 주기의 트렌드 방향과 결합하여 더 높은 주기의 트렌드와 일치하는 방향으로만 포지션을 개설하여 승률을 높인다.
이러한 최적화 방향은 전략의 안정성과 적응력을 크게 향상시킬 수 있으며, 특히 다른 시장 환경 변화에 따라 더 나은 위험 조정 수익을 제공 할 수 있습니다.
다중 스윙 지표 거래 시스템은 기술 분석을 기반으로 한 자동화 거래 전략으로, 동적으로 스톱 로스 레벨을 추적하여 시장 추세 변화를 포착하고 다중 하위 양방향 거래를 수행합니다. 이 전략은 추세가 명확한 시장에서 우수한 성능을 발휘하며 가격 움직임을 효과적으로 추적하고 자동으로 포지션을 관리 할 수 있습니다.
이 전략의 핵심 장점은 간단하고 효과적인 신호 생성 메커니즘과 내장 된 위험 관리 기능으로, 특히 중·단기 경향 거래에 적합하다. 그러나, 이 전략은 불안정한 시장에서 빈번한 가짜 신호의 도전에 직면할 수 있으며, 다양한 시장 환경에서 적응성을 높이기 위해 추가적인 최적화가 필요합니다.
동적 포지션 관리, 다중 지표 신호 확인, 적응 변수 조정 등의 최적화 조치를 시행함으로써 이 전략은 위험 조정 수익과 안정성을 더욱 향상시킬 수 있습니다. 정량 거래자에게는 명확한 규칙에 기반한 자동화 시스템이 감정적 인 방해를 줄이고 거래 규율을 유지할 수있는 신뢰할 수있는 프레임 워크를 제공합니다.
결국, 이 전략의 성공적인 적용은 거래자의 파라미터 설정의 정교한 조정과 시장 특성에 대한 이해에 달려 있으며, 실판 적용 전에 충분한 역사 회귀와 모형 거래 검증이 권장됩니다.
/*backtest
start: 2024-05-06 00:00:00
end: 2025-03-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Accurate Swing Trading System with Auto Entry (Long & Short)", overlay=true)
// Parameters
no = input.int(3, title="Swing")
Barcolor = input.bool(true, title="Barcolor")
Bgcolor = input.bool(false, title="Bgcolor")
// Calculate TSL (Trailing Stop Level)
res = ta.highest(high, no)
sup = ta.lowest(low, no)
avd = close > res[1] ? 1 : close < sup[1] ? -1 : 0
avn = ta.valuewhen(avd != 0, avd, 0)
tsl = avn == 1 ? sup : res
// Define Buy and Sell Conditions
Buy = ta.crossover(close, tsl)
Sell = ta.crossunder(close, tsl)
plotshape(Buy, "BUY", shape.labelup, location.belowbar, color.green, text="BUY", textcolor=color.black)
plotshape(Sell, "SELL", shape.labeldown, location.abovebar, color.red, text="SELL", textcolor=color.black)
// Plot TSL
colr = close >= tsl ? color.green : close <= tsl ? color.red : na
plot(tsl, color=colr, linewidth=3, title="TSL")
barcolor(Barcolor ? colr : na)
bgcolor(Bgcolor ? colr : na)
// Alerts
alertcondition(Buy, title="Buy Signal", message="Buy")
alertcondition(Sell, title="Sell Signal", message="Sell")
// Automatic Entry & Exit with 1 Unit
if (Buy)
strategy.entry("Long", strategy.long, qty=1) // Enter long with 1 unit
strategy.close("Short") // Close any open short positions
alert("Buy Signal - Entry Long", alert.freq_once_per_bar_close)
alert("Buy Entry Sound", alert.freq_once_per_bar_close)
if (Sell)
strategy.entry("Short", strategy.short, qty=1) // Enter short with 1 unit
strategy.close("Long") // Close any open long positions
alert("Sell Signal - Entry Short", alert.freq_once_per_bar_close)
alert("Sell Entry Sound", alert.freq_once_per_bar_close)
// Plotting lines for open trades
var float long_price = na
var float short_price = na
// For Long Position: Plot the entry line at the price of the open position
if (strategy.opentrades > 0)
if (strategy.opentrades.entry_id(0) == "Long" and not na(strategy.opentrades.entry_price(0)))
long_price := strategy.opentrades.entry_price(0)
if (strategy.opentrades.entry_id(0) == "Short" and not na(strategy.opentrades.entry_price(0)))
short_price := strategy.opentrades.entry_price(0)
plot(long_price, color=color.green, style=plot.style_line, linewidth=2, title="Long Entry Line", offset=-1)
plot(short_price, color=color.red, style=plot.style_line, linewidth=2, title="Short Entry Line", offset=-1)