
이 전략은 다중 지표 확인 및 등급 평가 시스템에 기반한 단선 거래 전략이다. 이 전략은 플러그그램 크기, 거래량 변화 및 RSI 지표를 분석하여 거래 신호의 강도를 평가하며, 신호를 A, B, C로 세 단계로 나눈다. A 레벨의 신호는 가장 강하고 C 레벨의 신호는 가장 약하다. 이 전략은 자동으로 스톱 및 스톱 손실 위치를 설정하는 것과 같은 위험 관리 기능을 통합하고, 차트 표기 및 거래 상기 기능을 제공하여 거래자가 거래 신호를 실시간으로 추적 할 수 있도록 한다.
이 전략의 핵심 원칙은 다음과 같은 몇 가지 핵심 요소의 조합에 기반합니다.
트렌드 판단: 200 EMA를 주요 트렌드 판단 도구로 사용한다. 가격은 200 EMA 위에 더 많은 기회를 찾고, 200 EMA 아래에 더 적은 기회를 찾는다.
평선 교차 신호: 전략은 20주기의 EMA와 SMA를 사용하며, 이 두 평선선이 교차할 때 초기 신호를 생성한다. 다중 신호를 하는 것은 EMA 상단 SMA를 통과해야 하며, 공백 신호를 하는 것은 EMA 밑단 SMA를 통과해야 한다.
RSI 확인: 9주기 RSI 지표를 사용하여, 다중 할 때 RSI가 50보다 크기를 요구하며, 공백 할 때 RSI가 50보다 작기를 요구한다.
몸체 크기의 평가: 전략적 분석 의 크기와 지난 20개의 의 평균 부피를 비교하여 현재의 가격 동력을 판단한다.
거래량 확인: 현재 거래량이 이전 주기의 거래량보다 더 많을 것을 요구하여 충분한 시장 참여를 보장합니다.
신호 등급 시스템:
위험 관리: 조정 가능한 스톱 (설정 0.5%) 및 스로프 (설정 0.3%) 레벨이 포함되어 있으며, 입점 가격의 비율로 설정된다.
전략은 이러한 복수의 확인 조건을 통해 충분한 시장 운동과 트렌드 확인이 있을 때만 거래에 진입하는 것을 보장하고, 가짜 신호를 줄입니다.
등급 평가 시스템가장 큰 장점은 고유 한 신호 등급 메커니즘에 있습니다. 거래자는 자신의 위험 선호도에 따라 가장 강력한 신호만 거래 할 수 있습니다 (A 레벨) 또는 더 많은 거래 기회를 포함 할 수 있습니다 (B 레벨 및 C 레벨).
다중 인증 메커니즘: 기술 지표 ((RSI, 평균선), 가격 행동 ((체 크기) 및 시장 참여 ((거래량) 의 여러 확인을 결합하여 가짜 신호의 가능성을 효과적으로 감소시킵니다.
내장 위험 관리: 자동화 된 스톱 스톱 손실 설정은 각 거래의 위험을 제어하고 단일 거래로 인해 과도한 손실을 방지합니다.
시각적 피드백 시스템: 거래 신호가 트리거될 때 자동으로 차트에 표기를 표시하고 거래 방향과 신호 강도를 명확하게 표시하여 거래자가 빠르게 식별할 수 있습니다.
경고 기능: 트레이딩뷰의 알림 시스템이 통합되어 있으며, 트레이더에게 팝업창, 이메일 또는 휴대폰 통보를 통해 알릴 수 있습니다.
다른 시장 조건에 적응하기: 신호 등급과 다중 지표 확인을 통해, 전략은 다양한 변동성 환경에서 상대적으로 안정적인 성능을 유지할 수 있다.
사용자 정의: RSI 길이, 평균 주기, 스톱 스톱 손실 비율 및 거래 신호 레벨을 포함한 여러 핵심 매개 변수의 사용자 정의 옵션을 제공하여 개인 선호도 및 시장 조건에 따라 전략을 조정할 수 있습니다.
트렌드를 따라가는 것과 동력을 결합하는 것이 전략은 트렌드 추종을 ((평균선) 과 동력 확인을 ((RSI, 크기를)) 효과적으로 결합하여 비교적 완전한 거래 시스템을 형성한다.
과도한 필터링다중 인증 메커니즘은 거래 기회를 놓칠 수 있으며, 특히 A급 신호만 거래할 경우 거래 빈도를 크게 줄일 수 있습니다.
매개변수 민감도: 전략은 여러 가지 기술 지표와 파라미터를 사용하며, 이러한 파라미터의 미세한 변화는 성능의 큰 차이를 초래할 수 있습니다. 예를 들어, RSI 길이나 평균선 주기와 피사체 크기의 판단 기준은 다른 시장 조건에 따라 조정해야 할 수 있습니다.
고정 백분율 스톱 스톱: 전략은 고정된 비율의 스톱로드를 사용한다. 이것은 모든 시장 조건에 적합하지 않을 수 있다. 높은 변동성 환경에서 고정된 스톱로드 수준은 너무 작을 수 있고, 낮은 변동성 환경에서 너무 커질 수 있다.
시장 소음의 영향1분 시간 프레임에서 시장의 잡음이 더 커지고, 특히 시장의 수평 또는 변동성이 낮은 시기에 더 많은 가짜 신호를 유발할 수 있습니다.
유동성 위험: 거래하지 않는 시간이나 유동성이 낮은 기간 동안 거래 신호의 질이 떨어질 수 있으며, 슬라이드 포인트 위험이 증가합니다.
연속적인 손실 위험: 계열 시스템을 사용하더라도 시장의 급격한 변화로 인해 지속적인 손실이 발생할 수 있으므로 적절한 자금 관리 전략이 필요합니다.
역전향 위험이 전략은 주로 단기 평균선 교차와 RSI 확인을 기반으로 하며, 강력한 반향상태에서 잘못된 신호를 일으킬 수 있다.
이러한 위험을 완화하기 위한 방법은 다음과 같습니다: 더 긴 시간 프레임의 필터 조건을 사용, 동적으로 중지 중지 손실 수준을 조정, 특정 시장 시점에 거래 (예를 들어, 변동성이 높거나 유동성이 풍부한 기간), 주기적으로 매개 변수를 재검토하고 최적화, 그리고 각 거래의 리스크 을 엄격하게 제어.
atr = ta.atr(14)
longSL = close - atr * slMultiplier
longTP = close + atr * tpMultiplier
timeFilter = (hour >= 14 and hour < 16) or (hour >= 9 and hour < 11)
higherTimeframeTrend = request.security(syminfo.ticker, "15", close > ta.ema(close, 200))
longCondition = longBase and higherTimeframeTrend
consecutiveLongSignals = longBase and longBase[1]
adaptiveLength = math.round(ta.atr(14) / ta.atr(14)[20] * baseLength)
adaptiveRsi = ta.rsi(close, math.max(2, adaptiveLength))
if setupGrade == "A"
tpMultiplier = 2.0
else if setupGrade == "B"
tpMultiplier = 1.5
else
tpMultiplier = 1.0
volatilityFilter = ta.atr(14) > ta.sma(ta.atr(14), 20) * 0.8
if (strategy.position_size > 0 and close > entryPrice * (1 + partialTpPerc/100))
strategy.exit("Partial", "Long", qty_percent=50)
이러한 최적화 방향은 전략의 핵심 논리를 그대로 유지하면서 다양한 시장 조건에 대한 전략의 적응성 문제를 해결하고 신호 품질을 향상시키고 위험을 더 잘 관리합니다.
이 US30 다단계 트렌드 확인 및 위험 관리 전략은 다중 기술 지표, 트렌드 확인 및 동력 분석을 결합한 단선 거래 시스템이다. 그것의 독특한 것은 계층 평가 시스템을 사용하여 거래 신호의 품질을 평가하는 것이다. (A, B, C 레벨) 거래자는 자신의 위험 선호에 따라 신호 품질을 선택할 수 있다. 전략은 평행선 교차, RSI 확인, 덩어리 크기 및 거래량 변화와 같은 다차원 분석을 통해 신호의 신뢰성을 향상시킨다.
내장된 위험 관리 기능과 명확한 시각적 피드백은 비교적 완전한 거래 시스템으로 만든다. 그러나 이 전략은 짧은 시간 프레임에서 작동할 때 시장의 큰 소음, 파라미터 민감성 및 고정 스톱 로즈의 유연성이 부족한 등의 도전에 직면할 수 있다. 동적 위험 관리, 다중 시간 프레임 분석 및 시장 조건 필터링과 같은 최적화 방향을 통합함으로써 이 전략은 핵심 장점을 유지하면서 다양한 시장 환경에서 적응성과 안정성을 더욱 향상시킬 잠재력을 가지고 있다.
규칙이 명확하고, 위험도 조절이 가능한 단선 거래 전략을 선호하는 거래자들에게 이 시스템은 좋은 출발점을 제공하며, 추가적인 피드백과 최적화를 통해 개인 거래 스타일과 목표 시장 특성에 따라 맞춤형 거래 시스템으로 발전할 수 있다.
/*backtest
start: 2025-02-01 00:00:00
end: 2025-03-31 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("US30 1-min Strategy with TP/SL, Grades, Alerts", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === Inputs ===
rsiLength = input.int(9, title="RSI Length")
maLength = input.int(20, title="MA Length (SMA & EMA)")
ema200Length = input.int(200, title="200 EMA Length")
tpPerc = input.float(0.5, title="Take Profit %", step=0.1)
slPerc = input.float(0.3, title="Stop Loss %", step=0.1)
// Grade filters
allowA = input.bool(true, title="Trade A-Grade Setups")
allowB = input.bool(true, title="Trade B-Grade Setups")
allowC = input.bool(false, title="Trade C-Grade Setups")
// === Indicators ===
rsi = ta.rsi(close, rsiLength)
sma = ta.sma(close, maLength)
ema = ta.ema(close, maLength)
ema200 = ta.ema(close, ema200Length)
volumeRising = volume > volume[1]
// === Candle Size Helpers ===
avgBody = ta.sma(math.abs(close - open), 20)
candleBody = math.abs(close - open)
candleLarge = candleBody > avgBody
candleVeryLarge = candleBody > avgBody * 2
// === Setup Grade Conditions ===
gradeA = candleVeryLarge and volumeRising and rsi > 55 or rsi < 45
gradeB = candleLarge and volumeRising
gradeC = candleLarge
// === Setup Conditions ===
// --- Long ---
longBase = close > ema200 and ta.crossover(ema, sma) and rsi > 50 and close > ema and close > sma
// --- Short ---
shortBase = close < ema200 and ta.crossunder(ema, sma) and rsi < 50 and close < ema and close < sma
// === Determine Grade ===
setupGrade = ""
isTrade = false
if longBase
if gradeA and allowA
setupGrade := "A"
isTrade := true
else if gradeB and allowB
setupGrade := "B"
isTrade := true
else if gradeC and allowC
setupGrade := "C"
isTrade := true
if shortBase
if gradeA and allowA
setupGrade := "A"
isTrade := true
else if gradeB and allowB
setupGrade := "B"
isTrade := true
else if gradeC and allowC
setupGrade := "C"
isTrade := true
// === Entry & TP/SL ===
longTP = close * (1 + tpPerc / 100)
longSL = close * (1 - slPerc / 100)
shortTP = close * (1 - tpPerc / 100)
shortSL = close * (1 + slPerc / 100)
// Entry
if longBase and isTrade and (setupGrade == "A" or setupGrade == "B" or setupGrade == "C")
strategy.entry("Long " + setupGrade, strategy.long)
strategy.exit("TP/SL", "Long " + setupGrade, limit=longTP, stop=longSL)
label.new(bar_index, high, "Long " + setupGrade, style=label.style_label_up, color=color.green, textcolor=color.white)
alert("LONG " + setupGrade + " setup triggered!", alert.freq_once_per_bar)
if shortBase and isTrade and (setupGrade == "A" or setupGrade == "B" or setupGrade == "C")
strategy.entry("Short " + setupGrade, strategy.short)
strategy.exit("TP/SL", "Short " + setupGrade, limit=shortTP, stop=shortSL)
label.new(bar_index, low, "Short " + setupGrade, style=label.style_label_down, color=color.red, textcolor=color.white)
alert("SHORT " + setupGrade + " setup triggered!", alert.freq_once_per_bar)
// === Plotting MAs ===
plot(ema, title="20 EMA", color=color.red)
plot(sma, title="20 SMA", color=color.blue)
plot(ema200, title="200 EMA", color=color.green)