
이 전략은 종합적인 거래 시스템으로, 다중 시간 프레임 분석, 기술 지표 융합 및 형태 식별을 사용하여 높은 확률의 거래 기회를 찾습니다. 그것의 핵심 아이디어는 5 개의 다른 시간 프레임 (분, 5 분, 15 분, 1 시간 및 4 시간) 의 트렌드 일관성을 분석하여 거래량 돌파구, 삼키는 형태 및 동력을 결합하여 시장 움직임을 정확하게 캡처하는 것입니다. 이 전략은 동시에 자동 중지 손실 장치를 내장하고, 시장의 변동성에 따라 위험 관리 매개 변수를 조정합니다.
이 전략의 핵심은 다음과 같은 핵심 요소들에 기반합니다.
다중 시간 프레임 트렌드 분석다음의 경우, 이 함수를 실행합니다.getTrend()5개의 다른 시간 프레임의 트렌드를 분석한다. 각 시간 프레임에서, 시스템은 빠른 EMA가 느린 EMA보다 높는지, RSI 값이 50 이상인지, 그리고 가격이 빠른 EMA보다 높는지 여부를 확인한다.
트렌드 합의 확인: 모든 5개의 시간 프레임이 동일한 방향의 트렌드 신호를 표시할 때만, 시스템은 입지를 고려한다. 이 엄격한 트렌드 합의 메커니즘은 신호의 신뢰성을 크게 향상시킨다.
입학 조건 최적화트렌드 컨센서스 (Trend Consensus) 에 추가로 다음과 같은 조건이 필요합니다.
위험 관리 시스템: 전략은 동적 스톱 스톱 손실 계산 방법을 사용하며, 최근 가격 변동에 따라 스톱 스톱 레벨을 설정하고, 배수 파라미트 (부적절 2.0) 를 사용하여 스톱 스톱 목표를 설정한다.
지원/저항 시각화시스템 자동으로 중요한 지원 및 저항 지점을 인식하고 표시하여 시각적 보조를 통해 거래자가 현재 시장 구조를 이해하는 데 도움이됩니다.
다차원 신호 필터링: 여러 기술 지표와 시간 프레임의 일관성을 요구함으로써 가짜 신호의 가능성을 현저히 감소시킨다. 이 여러 확인 메커니즘은 전략이 높은 확률 설정에서만 거래 신호를 유발하도록 한다.
자율적 위험 관리스톱 로즈와 스톱 스 레벨은 고정되어 있지 않고, 현재의 시장의 변동성 동성에 기초하여 계산됩니다. 이것은 전략이 다양한 변동 조건에서 적절한 리스크-비용 비율을 유지할 수 있도록 합니다.
전체적인 시각화 시스템전략: 전략은 트렌드 지표, 지지/저항 프레임, 거래 신호 표시 및 예측된 스톱/로스 라인을 포함한 포괄적인 시각적 보조 도구를 포함하고 있으며, 거래자에게 직관적인 시장 분석을 제공합니다.
양수 확인트레이딩 신호를 요구함으로써 거래량이 크게 증가함으로써, 전략은 가격의 무작위적 변동이 아닌 실제 동력을 가진 시장 움직임을 식별할 수 있습니다.
형식 인식 통합: 입시 조건의 일환으로 삼는 형태는 전략의 정확성을 증가시킵니다. 왜냐하면 이러한 도표 형태는 종종 시장의 정서에 대한 눈에 띄는 변화를 나타냅니다.
빈번한 재균형전략이 여러 시간 프레임의 일관성에 의존하기 때문에 거래 신호는 상대적으로 드물 수 있다. 오랜 시간 동안 거래 기회가 없는 상황에서 거래자는 기준을 낮추는 데 유도 될 수 있으며, 이는 바람직하지 않은 거래를 수행하는 데로 이어진다.
신호 의존성전략은 기술 지표와 형태에 크게 의존하며, 급격한 뉴스 사건이나 극심한 변동과 같은 특정 시장 조건에서 이러한 신호는 무효가 될 수 있습니다.
과대 최적화 위험전략은 여러 파라미터와 조건을 사용하며, 이는 역사적 데이터가 지나치게 최적화되어 실제 시장 조건에서 잘 작동하지 않을 수 있습니다. 충분한 시간 프레임과 다양한 시장 조건에서 철저한 재검토가 필요합니다.
계산 복잡도: 다중 시간 프레임 분석 및 다중 지표 계산은 많은 컴퓨팅 자원을 필요로 하며, 이는 일부 거래 플랫폼에서 성능 문제 또는 지연을 초래할 수 있다.
트렌드 전환 감지 지연전략은 여러 시간 프레임의 일관성을 필요로 하기 때문에, 새로운 트렌드가 모든 시간 프레임에 걸쳐 확립될 때까지, 트렌드 전환의 초기 단계에서 기회를 놓칠 수 있다.
적응 변수 조정: 도입된 메커니즘은 EMA 길이를, RSI 절댓값과 CMI 요구 사항을 현재 시장의 변동성이나 거래 시간에 따라 자동으로 조정하여 다른 시장 상태에 맞게 조정합니다.
시간 프레임 중력 시스템: 모든 시간 프레임이 일치하도록 단순히 요구하는 대신, 더 높은 시간 프레임의 신호가 더 큰 영향을 미치는 중화 시스템을 구현 할 수 있습니다. 이것은 높은 품질 표준을 유지하면서 더 적시에 신호를 생성 할 수 있습니다.
시장 상태 분류: 현재 시장이 트렌드 상태인지 간격 상태인지 감지하는 알고리즘을 추가하고 그에 따라 전략 파라미터를 조정합니다. 예를 들어, 간격 시장에서 더 높은 CMI 값이 필요할 수 있습니다.
기계학습 통합: 기계 학습 알고리즘을 사용하여 진출 및 출구 규칙을 최적화하고, 역사 데이터에 따라 가장 효과적인 신호 조합을 식별하고, 새로운 데이터가 축적됨에 따라 계속 개선합니다.
다양성을 강화하는 것: 피보나치 회수수준, 중요한 가격수준 또는 시장 감정 지표와 같은 다른 무관한 기술 지표를 추가하여 추가 확증 차원을 제공합니다.
다중 시간 프레임 융합형 동력을 포착하는 자동 거래 전략은 엄격한 다중 확인 메커니즘을 통해 높은 확률의 거래 기회를 식별하는 포괄적인 거래 시스템입니다. 트렌드 분석, 거래량 확인, 형태 인식 및 동적 위험 관리를 결합하여 높은 품질의 거래 신호를 제공하면서 각 거래의 위험을 관리하는 것을 목표로합니다.
이 전략의 엄격한 조건은 상대적으로 적은 거래 신호로 이어질 수 있지만, 이는 실제로 신호의 양보다 신호의 질을 우선시하기 때문에 주요 장점 중 하나입니다. 제안된 최적화 조치, 특히 적응 파라미터와 시장 상태 분류를 통해 전략은 성능과 적응력을 더욱 향상시킬 수 있습니다.
체계적이고 규율적인 거래 방식을 추구하는 거래자들에게, 이러한 다중 차원 분석과 엄격한 확인 방식은 다양한 시장 환경에서 일관성을 유지할 수 있는 강력한 프레임워크를 제공하며, 자동화된 규칙을 통해 감정적 편견의 영향을 줄일 수 있습니다.
/*backtest
start: 2024-04-11 00:00:00
end: 2025-04-09 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("M.Shiham-XAUUSD Sniper Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, max_lines_count=500, max_boxes_count=500)
// === Input ===
fastLen = input.int(9, "Fast EMA")
slowLen = input.int(21, "Slow EMA")
rsiLen = input.int(14, "RSI Period")
tpMultiplier = input.float(2.0, "TP Multiplier")
slMultiplier = input.float(1.0, "SL Multiplier")
// === Function Trend Check ===
getTrend(tf) =>
emaFast = request.security(syminfo.tickerid, tf, ta.ema(close, fastLen))
emaSlow = request.security(syminfo.tickerid, tf, ta.ema(close, slowLen))
rsi = request.security(syminfo.tickerid, tf, ta.rsi(close, rsiLen))
price = request.security(syminfo.tickerid, tf, close)
isBuy = emaFast > emaSlow and rsi > 50 and price > emaFast
isSell = emaFast < emaSlow and rsi < 50 and price < emaFast
isBuy ? 1 : isSell ? -1 : 0
// === Trend by Timeframe ===
trend1m = getTrend("1")
trend5m = getTrend("5")
trend15m = getTrend("15")
trend1h = getTrend("60")
trend4h = getTrend("240")
// === Alert Conditions ===
allBuy = trend1m == 1 and trend5m == 1 and trend15m == 1 and trend1h == 1 and trend4h == 1
allSell = trend1m == -1 and trend5m == -1 and trend15m == -1 and trend1h == -1 and trend4h == -1
alertcondition(allBuy, title="All TF Buy", message="🔔 BUY SIGNAL! All timeframes agree: BUY XAUUSD")
alertcondition(allSell, title="All TF Sell", message="🔔 SELL SIGNAL! All timeframes agree: SELL XAUUSD")
txt(val) => val == 1 ? "BUY" : val == -1 ? "SELL" : "-"
clr(val) => val == 1 ? color.green : val == -1 ? color.red : color.gray
// === Table Dashboard (Optional Toggle) ===
showTable = input.bool(true, "Show Trend Dashboard")
var table t = table.new(position.top_right, 2, 6, border_width=1)
if showTable and bar_index % 5 == 0
table.cell(t, 0, 0, "Timeframe", text_color=color.white, bgcolor=color.black)
table.cell(t, 1, 0, "Signal", text_color=color.white, bgcolor=color.black)
table.cell(t, 0, 1, "1 MIN", text_color=color.white)
table.cell(t, 1, 1, txt(trend1m), bgcolor=clr(trend1m), text_color=color.white)
table.cell(t, 0, 2, "5 MIN", text_color=color.white)
table.cell(t, 1, 2, txt(trend5m), bgcolor=clr(trend5m), text_color=color.white)
table.cell(t, 0, 3, "15 MIN", text_color=color.white)
table.cell(t, 1, 3, txt(trend15m), bgcolor=clr(trend15m), text_color=color.white)
table.cell(t, 0, 4, "1 H", text_color=color.white)
table.cell(t, 1, 4, txt(trend1h), bgcolor=clr(trend1h), text_color=color.white)
table.cell(t, 0, 5, "4 H", text_color=color.white)
table.cell(t, 1, 5, txt(trend4h), bgcolor=clr(trend4h), text_color=color.white)
// === Support/Resistance Box ===
pHigh = ta.pivothigh(high, 5, 5)
pLow = ta.pivotlow(low, 5, 5)
// === Volume Spike ===
avgVol = ta.sma(volume, 20)
volSpike = volume > avgVol * 2
// === Breakout + Alert ===
breakoutUp = high > ta.highest(high, 20)[1] and volSpike
alertcondition(breakoutUp, title="Breakout Up", message="🚀 XAUUSD Breakout Up with Volume")
breakoutDown = low < ta.lowest(low, 20)[1] and volSpike
alertcondition(breakoutDown, title="Breakout Down", message="⚠️ XAUUSD Breakout Down with Volume")
// === Engulfing Pattern ===
bullishEngulf = open[1] > close[1] and close > open and open < close[1] and close > open[1]
bearishEngulf = open[1] < close[1] and close < open and open > close[1] and close < open[1]
// === Moving Averages, Momentum & RSI ===
rsi = ta.rsi(close, rsiLen)
cmiPeriod = 14
cmi = 100 * math.abs(close - close[cmiPeriod]) / (ta.highest(high, cmiPeriod) - ta.lowest(low, cmiPeriod))
vwma = ta.vwma(close, 20)
plot(cmi, title="CMI", color=color.purple, display=display.none)
plot(vwma, title="VWMA", color=color.orange, display=display.none)
ma30 = ta.sma(close, 30)
plot(ma30, title="MA 30", color=color.blue)
// === STRATEGY MODE: Auto Entry & TP/SL ===
longEntry = allBuy and bullishEngulf and volSpike and rsi > 55 and cmi > 30 and close > vwma
shortEntry = allSell and bearishEngulf and volSpike and rsi < 45 and cmi > 30 and close < vwma
if (longEntry)
strategy.entry("Buy", strategy.long)
entry = close
sl = entry - (high - low) * slMultiplier
tp = entry + (entry - sl) * tpMultiplier
strategy.exit("TP Buy", from_entry="Buy", stop=sl, limit=tp)
if (shortEntry)
strategy.entry("Sell", strategy.short)
entry = close
sl = entry + (high - low) * slMultiplier
tp = entry - (sl - entry) * tpMultiplier
strategy.exit("TP Sell", from_entry="Sell", stop=sl, limit=tp)
if longEntry
entry = close
sl = entry - (high - low) * slMultiplier
tp = entry + (entry - sl) * tpMultiplier
if shortEntry
entry = close
sl = entry + (high - low) * slMultiplier
tp = entry - (sl - entry) * tpMultiplier
// === Plot Signals ===
plotshape(bullishEngulf, title="Bullish Engulfing", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small, text="Bull")
plotshape(bearishEngulf, title="Bearish Engulfing", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, text="Bear")
plotshape(breakoutUp, title="Breakout Up", location=location.belowbar, color=color.blue, style=shape.labelup, text="BO↑")
plotshape(breakoutDown, title="Breakout Down", location=location.abovebar, color=color.orange, style=shape.labeldown, text="BO↓")