Sumber dimuat naik... memuat...

Mengikut Trend Multi-Indikator dan Strategi Penembusan Volatiliti

Penulis:ChaoZhang, Tarikh: 2024-12-12 15:48:29
Tag:EMAADXATROBVRSI

img

Ringkasan

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.

Prinsip Strategi

Logik terasnya adalah berdasarkan analisis teknikal berbilang lapisan:

  1. Sistem mengikut trend 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 melebihi EMA jangka panjang
  • ADX di atas ambang
  • Harga di atas Awan Ichimoku
  • Stochastic dalam wilayah yang terlalu banyak dijual

Kelebihan Strategi

  1. Penanda silang beberapa penanda meningkatkan kebolehpercayaan isyarat
  2. Gabungan trend berikut dan volatility breakout meningkatkan daya adaptasi
  3. Penapis masa mengelakkan tempoh dagangan yang tidak cekap
  4. Sasaran stop-loss dan keuntungan dinamik disesuaikan dengan turun naik pasaran
  5. Analisis jumlah harga bersepadu memberikan gambaran pasaran yang komprehensif
  6. Peraturan kemasukan/keluar yang sistematik mengurangkan pertimbangan subjektif

Risiko Strategi

  1. Pelbagai penunjuk boleh menyebabkan isyarat kelewatan
  2. Isyarat palsu di pasaran pelbagai
  3. Pengoptimuman parameter yang kompleks dengan risiko terlalu banyak
  4. Sekatan masa mungkin terlepas pergerakan pasaran penting
  5. Hentian lebar boleh mengakibatkan kerugian individu yang lebih besar

Cadangan kawalan risiko:

  • Ulasan pengoptimuman parameter biasa
  • Pertimbangkan untuk menambah penapis turun naik
  • Melaksanakan peraturan pengurusan wang yang lebih ketat
  • Tambah penunjuk pengesahan trend tambahan

Arahan Pengoptimuman Strategi

  1. Memperkenalkan sistem parameter adaptif untuk pelarasan penunjuk dinamik
  2. Tambah klasifikasi rejim pasaran untuk peraturan penjanaan isyarat yang berbeza
  3. Mengoptimumkan penapis masa berdasarkan analisis data sejarah
  4. Meningkatkan strategi stop-loss dengan penangguhan penangguhan
  5. Menggabungkan penunjuk sentimen pasaran untuk meningkatkan kualiti isyarat

Ringkasan

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)


Berkaitan

Lebih lanjut