Ini adalah strategi perdagangan komprehensif yang menggabungkan pendekatan mengikuti trend dan penembusan turun naik menggunakan pelbagai penunjuk teknikal. Strategi ini mengintegrasikan sistem EMA, ADX untuk kekuatan trend, ATR untuk pengukuran turun naik, OBV untuk analisis jumlah, dan penunjuk tambahan seperti Ichimoku Cloud dan osilator Stochastic untuk menangkap trend pasaran dan peluang pecah. Penapis masa dilaksanakan untuk mengoptimumkan kecekapan perdagangan dengan beroperasi hanya pada waktu perdagangan tertentu.
Logik terasnya adalah berdasarkan analisis teknikal pelbagai lapisan: 1. Sistem trend berikut menggunakan EMA tempoh 50 dan 200 2. Pengesahan kekuatan trend melalui ADX 3. Pengesahan trend tambahan menggunakan Ichimoku Cloud 4. Pengiktirafan overbought/oversold dengan pengayun Stochastic 5. Sasaran stop-loss dan keuntungan dinamik menggunakan ATR 6. Pengesahan jumlah melalui OBV
Isyarat beli dihasilkan apabila: - Dalam jam dagangan yang dibenarkan - Harga di atas EMA jangka pendek - EMA jangka pendek di atas EMA jangka panjang - ADX di atas ambang - Harga di atas Awan Ichimoku - Stochastic dalam wilayah oversold
Cadangan kawalan risiko: - Ulasan pengoptimuman parameter secara berkala - Pertimbangkan untuk menambah penapis turun naik - Melaksanakan peraturan pengurusan wang yang lebih ketat - Tambah penunjuk pengesahan trend tambahan
Strategi ini membina sistem dagangan yang lengkap melalui aplikasi komprehensif pelbagai penunjuk teknikal. Kekuatannya terletak pada pengesahan silang penunjuk pelbagai lapisan dan kawalan risiko yang ketat, sambil menghadapi cabaran dalam pengoptimuman parameter dan kelewatan isyarat. Melalui pengoptimuman dan peningkatan yang berterusan, strategi menunjukkan potensi untuk prestasi yang stabil dalam keadaan pasaran yang berbeza.
/*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)