이 전략은 EMA 시스템, ATR 변동성 지표 및 스마트 머니 콘셉트 (SMC) 를 통합하여 시장 트렌드를 포착합니다. 역동적인 포지션 사이즈링 및 스톱 로스/테이크 노프프 배치를 통해 효과적인 리스크 관리를 달성합니다.
이 전략은 몇 가지 핵심 요소에 기반합니다. 1. 시장 트렌드 방향을 확인하기 위해 50 및 200 기간 EMA 시스템을 사용합니다. 2. 동적으로 중지 손실 및 이익 목표를 조정하기 위해 ATR 지표를 사용합니다. 3. 최적의 입구점을 찾기 위해 순서 블록과 불균형 구역을 분석합니다. 4. 계좌 위험 비율에 기초하여 자동으로 위치 크기를 계산합니다 5. 마지막 20 촛불의 가격 범위를 관찰함으로써 시장 통합을 결정
이 전략은 적절한 리스크 관리 및 여러 신호 확인을 통해 거래 안정성을 달성하는 포괄적인 트렌드 다음 시스템입니다. 신호의 약간의 지연에도 불구하고 전반적으로 신뢰할 수있는 거래 시스템을 나타냅니다. 라이브 구현 전에 철저한 백테스팅을 수행하고 특정 거래 도구 및 시장 조건에 따라 매개 변수를 최적화하는 것이 좋습니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-10 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // TradingView Pine Script strategy for Smart Money Concept (SMC) //@version=5 strategy("Smart Money Concept Strategy", overlay=true, default_qty_type=strategy.fixed, default_qty_value=100) // === Input Parameters === input_risk_percentage = input.float(1, title="Risk Percentage", step=0.1) input_atr_length = input.int(14, title="ATR Length") input_ema_short = input.int(50, title="EMA Short") input_ema_long = input.int(200, title="EMA Long") // === Calculations === atr = ta.atr(input_atr_length) ema_short = ta.ema(close, input_ema_short) ema_long = ta.ema(close, input_ema_long) // === Utility Functions === // Identify Order Blocks is_order_block(price, direction) => ((high[1] > high[2] and low[1] > low[2] and direction == 1) or (high[1] < high[2] and low[1] < low[2] and direction == -1)) // Identify Imbalance Zones is_imbalance() => range_high = high[1] range_low = low[1] range_high > close and range_low < close // Calculate Lot Size Based on Risk calculate_lot_size(stop_loss_points, account_balance) => risk_amount = account_balance * (input_risk_percentage / 100) lot_size = risk_amount / (stop_loss_points * syminfo.pointvalue) lot_size // Determine if Market is Consolidating is_consolidating() => (ta.highest(high, 20) - ta.lowest(low, 20)) / atr < 2 // === Visual Enhancements === // Plot Order Blocks // if is_order_block(close, 1) // line.new(x1=bar_index[1], y1=low[1], x2=bar_index, y2=low[1], color=color.green, width=2, extend=extend.right) // if is_order_block(close, -1) // line.new(x1=bar_index[1], y1=high[1], x2=bar_index, y2=high[1], color=color.red, width=2, extend=extend.right) // Highlight Imbalance Zones // if is_imbalance() // box.new(left=bar_index[1], top=high[1], right=bar_index, bottom=low[1], bgcolor=color.new(color.orange, 80)) // === Logic for Trend Confirmation === is_bullish_trend = ema_short > ema_long is_bearish_trend = ema_short < ema_long // === Entry Logic === account_balance = strategy.equity if not is_consolidating() if is_bullish_trend stop_loss = close - atr * 2 take_profit = close + (math.abs(close - (close - atr * 2)) * 3) stop_loss_points = math.abs(close - stop_loss) / syminfo.pointvalue lot_size = calculate_lot_size(stop_loss_points, account_balance) strategy.entry("Buy", strategy.long, qty=lot_size) strategy.exit("TP/SL", "Buy", stop=stop_loss, limit=take_profit) if is_bearish_trend stop_loss = close + atr * 2 take_profit = close - (math.abs(close - (close + atr * 2)) * 3) stop_loss_points = math.abs(close - stop_loss) / syminfo.pointvalue lot_size = calculate_lot_size(stop_loss_points, account_balance) strategy.entry("Sell", strategy.short, qty=lot_size) strategy.exit("TP/SL", "Sell", stop=stop_loss, limit=take_profit) // === Plotting Indicators === plot(ema_short, color=color.blue, title="EMA 50") plot(ema_long, color=color.orange, title="EMA 200") plotshape(series=is_bullish_trend and not is_consolidating(), style=shape.triangleup, location=location.belowbar, color=color.green, text="Buy") plotshape(series=is_bearish_trend and not is_consolidating(), style=shape.triangledown, location=location.abovebar, color=color.red, text="Sell")