이 전략은 다양한 기술적 지표를 사용하여 트렌드 추적 및 변동성 브레이크아웃 접근 방식을 결합한 포괄적인 거래 전략이다. 이 전략은 EMA 시스템, 트렌드 강도에 대한 ADX, 변동성 측정에 대한 ATR, 볼륨 분석에 대한 OBV 및 시장 트렌드와 브레이크아웃 기회를 포착하는 Ichimoku 클라우드 및 스토카스틱 오시레이터와 같은 보충 지표를 통합합니다. 시간 필터는 특정 거래 시간 동안만 작동하여 거래 효율성을 최적화하기 위해 구현됩니다.
핵심 논리는 다층 기술 분석에 기반합니다.
구매 신호는 다음과 같이 생성됩니다.
위험 관리 제안:
이 전략은 여러 가지 기술적 지표의 포괄적인 응용을 통해 완전한 거래 시스템을 구축합니다. 이 전략의 강점은 다층 지표의 크로스 검증과 엄격한 위험 통제에 있으며 매개 변수 최적화 및 신호 지연의 과제에 직면합니다. 지속적인 최적화 및 개선으로 전략은 다른 시장 조건에서 안정적인 성능을 발휘할 수 있는 잠재력을 보여줍니다.
/*backtest start: 2024-11-11 00:00:00 end: 2024-12-10 08:00:00 period: 2h basePeriod: 2h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Khaleq Strategy Pro - Fixed Version", overlay=true) // === Input Settings === ema_short = input.int(50, "EMA Short", minval=1) ema_long = input.int(200, "EMA Long", minval=1) adx_threshold = input.int(25, "ADX Threshold", minval=1) atr_multiplier = input.float(2.0, "ATR Multiplier", minval=0.1) time_filter_start = input(timestamp("0000-01-01 09:00:00"), "Trading Start Time", group="Time Filter") time_filter_end = input(timestamp("0000-01-01 17:00:00"), "Trading End Time", group="Time Filter") // === Ichimoku Settings === tenkan_len = 9 kijun_len = 26 senkou_span_b_len = 52 displacement = 26 // === Calculations === // Ichimoku Components tenkan_sen = (ta.highest(high, tenkan_len) + ta.lowest(low, tenkan_len)) / 2 kijun_sen = (ta.highest(high, kijun_len) + ta.lowest(low, kijun_len)) / 2 senkou_span_a = (tenkan_sen + kijun_sen) / 2 senkou_span_b = (ta.highest(high, senkou_span_b_len) + ta.lowest(low, senkou_span_b_len)) / 2 // EMA Calculations ema_short_val = ta.ema(close, ema_short) ema_long_val = ta.ema(close, ema_long) // Manual ADX Calculation length = 14 dm_plus = math.max(ta.change(high), 0) dm_minus = math.max(-ta.change(low), 0) tr = math.max(high - low, math.max(math.abs(high - close[1]), math.abs(low - close[1]))) tr14 = ta.sma(tr, length) dm_plus14 = ta.sma(dm_plus, length) dm_minus14 = ta.sma(dm_minus, length) di_plus = (dm_plus14 / tr14) * 100 di_minus = (dm_minus14 / tr14) * 100 dx = math.abs(di_plus - di_minus) / (di_plus + di_minus) * 100 adx_val = ta.sma(dx, length) // ATR Calculation atr_val = ta.atr(14) // Stochastic RSI Calculation k = ta.stoch(close, high, low, 14) d = ta.sma(k, 3) // Time Filter is_within_time = true // Support and Resistance (High and Low Levels) resistance_level = ta.highest(high, 20) support_level = ta.lowest(low, 20) // Volume Analysis (On-Balance Volume) vol_change = ta.change(close) obv = ta.cum(vol_change > 0 ? volume : vol_change < 0 ? -volume : 0) // === Signal Conditions === buy_signal = is_within_time and (close > ema_short_val) and (ema_short_val > ema_long_val) and (adx_val > adx_threshold) and (close > senkou_span_a) and (k < 20) // Stochastic oversold sell_signal = is_within_time and (close < ema_short_val) and (ema_short_val < ema_long_val) and (adx_val > adx_threshold) and (close < senkou_span_b) and (k > 80) // Stochastic overbought // === Plotting === // Plot Buy and Sell Signals plotshape(buy_signal, color=color.green, style=shape.labelup, title="Buy Signal", location=location.belowbar, text="BUY") plotshape(sell_signal, color=color.red, style=shape.labeldown, title="Sell Signal", location=location.abovebar, text="SELL") // Plot EMAs plot(ema_short_val, color=color.blue, title="EMA Short") plot(ema_long_val, color=color.orange, title="EMA Long") // Plot Ichimoku Components plot(senkou_span_a, color=color.green, title="Senkou Span A", offset=displacement) plot(senkou_span_b, color=color.red, title="Senkou Span B", offset=displacement) // // Plot Support and Resistance using lines // var line resistance_line = na // var line support_line = na // if bar_index > 1 // line.delete(resistance_line) // line.delete(support_line) // resistance_line := line.new(x1=bar_index - 1, y1=resistance_level, x2=bar_index, y2=resistance_level, color=color.red, width=1, style=line.style_dotted) // support_line := line.new(x1=bar_index - 1, y1=support_level, x2=bar_index, y2=support_level, color=color.green, width=1, style=line.style_dotted) // Plot OBV plot(obv, color=color.purple, title="OBV") // Plot Background for Trend (Bullish/Bearish) bgcolor(close > ema_long_val ? color.new(color.green, 90) : color.new(color.red, 90), title="Trend Background") // === Alerts === alertcondition(buy_signal, title="Buy Alert", message="Buy Signal Triggered") alertcondition(sell_signal, title="Sell Alert", message="Sell Signal Triggered") // === Strategy Execution === if buy_signal strategy.entry("Buy", strategy.long) if sell_signal strategy.close("Buy") strategy.exit("Sell", "Buy", stop=close - atr_multiplier * atr_val, limit=close + atr_multiplier * atr_val)