Sistem strategi dwi perdagangan mengikut trend penyesuaian dan julat

ADX SMA BB RSI MACD ATR
Tarikh penciptaan: 2025-02-21 10:14:04 Akhirnya diubah suai: 2025-02-27 17:17:45
Salin: 1 Bilangan klik: 419
2
fokus pada
319
Pengikut

Sistem strategi dwi perdagangan mengikut trend penyesuaian dan julat Sistem strategi dwi perdagangan mengikut trend penyesuaian dan julat

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan beradaptasi sendiri yang menggabungkan trend-following dan perdagangan selang. Sistem ini mengenal pasti keadaan pasaran secara dinamik melalui indikator ADX, menggunakan strategi perdagangan yang berbeza di pasaran yang sedang tren dan di pasaran yang bergolak. Dalam pasaran yang sedang tren, strategi menggunakan isyarat silang purata bergerak yang digabungkan dengan pengesahan RSI dan MACD; dalam pasaran yang bergolak, strategi menggunakan Brinks Breakthrough yang digabungkan dengan isyarat RSI untuk melakukan perdagangan. Sistem ini juga mengintegrasikan mekanisme stop loss dinamik berasaskan ATR untuk mengawal risiko dengan berkesan.

Prinsip Strategi

Pusat strategi adalah mekanisme pengenalan keadaan pasaran. Strategi mengikuti trend diaktifkan apabila ADX lebih besar daripada 25 yang dianggap sebagai pasaran yang sedang tren:

  1. Keadaan berbilang kepala: 50 hari rata-rata di atas garis 200 hari rata-rata, sementara RSI lebih besar daripada 50 dan garis MACD di atas garis isyarat
  2. Keadaan kosong: 50 hari rata-rata di bawah garis rata-rata 200 hari, sementara RSI kurang daripada 50 dan garis MACD di bawah garis isyarat

Apabila ADX lebih kecil daripada sama dengan 25 yang dinilai sebagai pasaran goyah, aktifkan strategi perdagangan selang:

  1. Syarat berbilang kepala: harga naik melalui Bollinger Bands dan RSI kurang daripada 40
  2. Syarat kosong: harga di bawah Bollinger Bands dan RSI lebih besar daripada 60

Penetapan stop loss menggunakan kaedah kelipatan dinamik ATR, dengan stop loss 1.5 kali ATR, dan stop loss 3 kali ATR.

Kelebihan Strategik

  1. Kebolehan beradaptasi pasaran: dapat menukar strategi perdagangan secara automatik mengikut keadaan pasaran
  2. Pengesahan pelbagai isyarat: pengurangan isyarat palsu melalui gabungan pelbagai petunjuk teknikal
  3. Pengendalian risiko yang sempurna: menggunakan mekanisme henti rugi yang dinamik untuk menyesuaikan diri dengan turun naik pasaran
  4. Logik strategi yang jelas: kriteria untuk trend dan jangka masa yang jelas, memudahkan penyesuaian optimum
  5. Visual yang baik: keadaan pasaran yang jelas dengan warna latar belakang

Risiko Strategik

  1. Keterlambatan isyarat: Indikator seperti purata bergerak mempunyai keterlambatan dan mungkin terlepas titik kemasukan terbaik
  2. Risiko Penembusan Palsu: Brin Berikan Isyarat Penembusan Palsu Semasa Pasar Bergolak
  3. Sensitiviti parameter: tetapan parameter seperti ADX, ATR, dan lain-lain boleh mempengaruhi prestasi strategi
  4. Risiko pertukaran pasaran: Isyarat yang salah dalam peralihan trend dan kejutan
  5. Risiko Stop Loss: Stop Loss ATR pada kelipatan tetap mungkin terlalu besar pada masa lonjakan tinggi

Arah pengoptimuman strategi

  1. Pengenalan analisis kuantiti pertukaran: penambahan faktor kuantiti pertukaran dalam pengesahan isyarat, meningkatkan kebolehpercayaan isyarat
  2. Untuk mengoptimumkan penilaian keadaan pasaran, pertimbangkan untuk menukar ADX kepada penurunan dinamik atau menggabungkannya dengan penunjuk lain
  3. Peningkatan mekanisme hentian kerugian: memperkenalkan hentian penjejakan atau menyesuaikan ATR berganda mengikut kadar turun naik
  4. Menambah penapis masa: menambah sekatan tempoh dagangan, mengelakkan tempoh kecairan rendah
  5. Peningkatan mekanisme pengesahan isyarat: boleh dipertimbangkan untuk memasukkan analisis bentuk harga, meningkatkan kualiti isyarat

ringkaskan

Strategi ini dapat disesuaikan dengan keadaan pasaran yang berbeza melalui pengenalan dinamik keadaan pasaran dan pertukaran strategi yang sesuai. Strategi ini mempunyai kepraktisan yang baik melalui kombinasi pelbagai petunjuk teknikal dan mekanisme kawalan risiko dinamik. Namun, risiko seperti keterlambatan isyarat dan penembusan palsu harus diperhatikan.

Kod sumber strategi
/*backtest
start: 2024-09-01 00:00:00
end: 2025-02-19 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Trend vs Range Trading - Fully Fixed for v6", overlay=true)

// 🔹 Moving Averages (SMA 50 & 200)
sma50 = ta.sma(close, 50)
sma200 = ta.sma(close, 200)

// 🔹 Proper ADX Calculation (With Corrected ta.dmi() Parameters)
dmiLength = 14
adxSmoothing = 14
[dmiPlus, dmiMinus, adx] = ta.dmi(dmiLength, adxSmoothing)

// 🔹 Bollinger Bands Calculation (Fixed for v6)
bb_length = 20
bb_mult = 2.0
bb_basis = ta.sma(close, bb_length)
bb_dev = ta.stdev(close, bb_length)
bb_upper = bb_basis + (bb_mult * bb_dev)
bb_lower = bb_basis - (bb_mult * bb_dev)

// 🔹 Additional Indicators (RSI & MACD)
rsi = ta.rsi(close, 14)
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)

// 🔹 ATR for Stop Loss & Take Profit
atr = ta.atr(14)
stop_loss_mult = 1.5  // Stop Loss Multiplier
take_profit_mult = 3.0  // Take Profit Multiplier

// 🔹 Trend vs Range Market Detection
is_trending = adx > 25

// 🔹 Trend Following Strategy (SMA Cross & Confirmation)
long_condition_trend = is_trending and ta.crossover(sma50, sma200) and rsi > 50 and macdLine > signalLine
short_condition_trend = is_trending and ta.crossunder(sma50, sma200) and rsi < 50 and macdLine < signalLine

// 🔹 Range Trading Strategy (Bollinger Bands & RSI Confirmation)
long_condition_range = not is_trending and ta.crossover(close, bb_lower) and rsi < 40
short_condition_range = not is_trending and ta.crossunder(close, bb_upper) and rsi > 60

// 🔹 Stop Loss & Take Profit Calculations
long_stop_loss = close - (atr * stop_loss_mult)
long_take_profit = close + (atr * take_profit_mult)
short_stop_loss = close + (atr * stop_loss_mult)
short_take_profit = close - (atr * take_profit_mult)

// 🔹 Execute Trades (With Stop Loss & Take Profit)
if long_condition_trend
    strategy.entry("Long_Trend", strategy.long)
    strategy.exit("Exit_Long_Trend", from_entry="Long_Trend", stop=long_stop_loss, limit=long_take_profit)

if short_condition_trend
    strategy.entry("Short_Trend", strategy.short)
    strategy.exit("Exit_Short_Trend", from_entry="Short_Trend", stop=short_stop_loss, limit=short_take_profit)

if long_condition_range
    strategy.entry("Long_Range", strategy.long)
    strategy.exit("Exit_Long_Range", from_entry="Long_Range", stop=long_stop_loss, limit=long_take_profit)

if short_condition_range
    strategy.entry("Short_Range", strategy.short)
    strategy.exit("Exit_Short_Range", from_entry="Short_Range", stop=short_stop_loss, limit=short_take_profit)

// 🔹 Visual Indicators & Background Color (Trend vs Range)
bgcolor(is_trending ? color.green : color.blue)

// 🔹 Plot Moving Averages & Bollinger Bands
plot(sma50, color=color.blue, title="SMA 50")
plot(sma200, color=color.red, title="SMA 200")
plot(bb_upper, color=color.green, title="BB Upper")
plot(bb_lower, color=color.orange, title="BB Lower")