Strategi pengurusan risiko adaptif berdasarkan ATR dinamik dan persilangan purata bergerak berganda

MA ATR SMA RRR UTC
Tarikh penciptaan: 2025-02-20 14:07:26 Akhirnya diubah suai: 2025-02-20 14:07:26
Salin: 1 Bilangan klik: 359
2
fokus pada
319
Pengikut

Strategi pengurusan risiko adaptif berdasarkan ATR dinamik dan persilangan purata bergerak berganda Strategi pengurusan risiko adaptif berdasarkan ATR dinamik dan persilangan purata bergerak berganda

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan yang menggabungkan isyarat silang binari dan pengurusan risiko dinamik. Ia menghasilkan isyarat perdagangan melalui persilangan rata-rata bergerak jangka pendek dan jangka panjang, sambil menggunakan parameter ATR untuk menyesuaikan secara dinamik kedudukan berhenti dan keuntungan, dan memperkenalkan penapisan masa dan tempoh penyejukan untuk mengoptimumkan kualiti perdagangan.

Prinsip Strategi

Strategi ini berdasarkan komponen teras berikut:

  1. Sistem penjanaan isyarat menggunakan persilangan purata bergerak sederhana jangka pendek (10 kitaran) dan jangka panjang (100 kitaran) untuk mencetuskan dagangan. Isyarat plus dihasilkan apabila rata-rata jangka pendek melintasi rata-rata jangka panjang ke atas, sebaliknya isyarat minus dihasilkan.
  2. Sistem pengurusan risiko menggunakan 14 kitaran ATR kali ganda 1.5 untuk menetapkan jarak hentian dinamik, dan sasaran keuntungan adalah dua kali ganda jarak henti ((Risiko-Penghasilan Rasio yang boleh disesuaikan)).
  3. Penapis masa membolehkan pengguna menetapkan tempoh masa tertentu untuk berdagang, dan hanya menjalankan perdagangan dalam tempoh masa yang ditetapkan.
  4. Mekanisme tempoh sejuk perdagangan menetapkan tempoh menunggu 10 kitaran untuk mengelakkan perdagangan berlebihan.
  5. Risiko setiap urus niaga dikawal oleh 1% akaun (boleh disesuaikan)

Kelebihan Strategik

  1. Pengurusan risiko dinamik: Menggunakan indikator ATR untuk menyesuaikan diri dengan turun naik pasaran, secara automatik menyesuaikan jarak berhenti dan keuntungan dalam keadaan pasaran yang berbeza.
  2. Kawalan risiko yang lengkap: Mencapai pengurusan wang yang sistematik dengan menetapkan nisbah risiko dan ganjaran dan nisbah risiko setiap transaksi.
  3. Pengurusan masa yang fleksibel: Waktu dagangan boleh disesuaikan mengikut ciri-ciri masa dagangan di pasaran yang berbeza.
  4. Mencegah perdagangan berlebihan: mekanisme tempoh sejuk berkesan untuk mengelakkan terlalu banyak isyarat perdagangan pada masa turun naik yang teruk.
  5. Kesan visual: Tunjukkan isyarat perdagangan dan purata bergerak dengan jelas pada carta untuk memudahkan analisis dan pengoptimuman.

Risiko Strategik

  1. Risiko trend reversal: Dalam pasaran yang bergolak, isyarat pecah palsu mungkin berlaku, yang menyebabkan kemerosotan berterusan.
  2. Sensitiviti parameter: Pilihan parameter seperti kitaran purata bergerak, pengganda ATR akan mempengaruhi prestasi strategi secara signifikan.
  3. Jika penapis masa tidak ditetapkan dengan betul, peluang perdagangan penting mungkin terlepas.
  4. Nisbah risiko dan ganjaran tetap mungkin tidak fleksibel dalam keadaan pasaran yang berbeza.

Arah pengoptimuman strategi

  1. Memperkenalkan penapis kekuatan trend: ADX atau penunjuk serupa boleh ditambahkan untuk menilai kekuatan trend, hanya berdagang semasa trend kuat.
  2. Kadar ganjaran risiko yang disesuaikan secara dinamik: Kadar ganjaran risiko yang disesuaikan secara automatik mengikut turun naik pasaran atau kekuatan trend.
  3. Meningkatkan analisis jumlah transaksi: Menggunakan jumlah transaksi sebagai penunjuk tambahan untuk pengesahan isyarat.
  4. Mekanisme pengoptimuman tempoh penyejukan: membolehkan tempoh penyejukan disesuaikan dengan dinamik turun naik pasaran.
  5. Menambah klasifikasi persekitaran pasaran: menggunakan kombinasi parameter yang berbeza dalam persekitaran pasaran yang berbeza.

ringkaskan

Strategi ini membina sistem perdagangan yang lengkap dengan menggabungkan kaedah analisis teknikal klasik dan konsep pengurusan risiko moden. Kelebihan utamanya adalah pengurusan risiko dinamik dan mekanisme penapisan berganda, tetapi masih memerlukan pengoptimuman parameter berdasarkan ciri-ciri pasaran tertentu dalam aplikasi sebenar.

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

//@version=5
strategy("Profitable Moving Average Crossover Strategy", shorttitle="Profitable MA Crossover", overlay=true)

// Input parameters for the moving averages
shortPeriod = input.int(10, title="Short Period", minval=1)
longPeriod = input.int(100, title="Long Period", minval=1)

// Input parameters for time filter
startHour = input.int(0, title="Start Hour (UTC)", minval=0, maxval=23)
startMinute = input.int(0, title="Start Minute (UTC)", minval=0, maxval=59)
endHour = input.int(23, title="End Hour (UTC)", minval=0, maxval=23)
endMinute = input.int(59, title="End Minute (UTC)", minval=0, maxval=59)

// Cooldown period input (bars)
cooldownBars = input.int(10, title="Cooldown Period (Bars)", minval=1)

// Risk management inputs
riskRewardRatio = input.float(2, title="Risk-Reward Ratio", minval=1)
riskPercent = input.float(1, title="Risk Per Trade (%)", minval=0.1)

// ATR settings
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier for Stop-Loss and Take-Profit")

// Calculate the moving averages
shortMA = ta.sma(close, shortPeriod)
longMA = ta.sma(close, longPeriod)

// Plot the moving averages
plot(shortMA, color=color.blue, title="Short MA")
plot(longMA, color=color.red, title="Long MA")

// Calculate ATR for dynamic stop-loss and take-profit
atr = ta.atr(atrLength)
stopLossOffset = atr * atrMultiplier
takeProfitOffset = stopLossOffset * riskRewardRatio

// Identify the crossover points
bullishCross = ta.crossover(shortMA, longMA)
bearishCross = ta.crossunder(shortMA, longMA)

// Get the current bar's time in UTC
currentTime = na(time("1", "UTC")) ? na : timestamp("UTC", year, month, dayofmonth, hour, minute)

// Define the start and end time in seconds from the start of the day
startTime = timestamp("UTC", year, month, dayofmonth, startHour, startMinute)
endTime = timestamp("UTC", year, month, dayofmonth, endHour, endMinute)

// Check if the current time is within the valid time range
isTimeValid = (currentTime >= startTime) and (currentTime <= endTime)

// Functions to check cooldown
var int lastSignalBar = na
isCooldownActive = (na(lastSignalBar) ? false : (bar_index - lastSignalBar) < cooldownBars)

// Handle buy signals
if (bullishCross and isTimeValid and not isCooldownActive)
    entryPrice = close
    stopLossBuy = entryPrice - stopLossOffset
    takeProfitBuy = entryPrice + takeProfitOffset
    strategy.entry("Buy", strategy.long)
    strategy.exit("TakeProfit/StopLoss", "Buy", stop=stopLossBuy, limit=takeProfitBuy)
    lastSignalBar := bar_index

// Handle sell signals
if (bearishCross and isTimeValid and not isCooldownActive)
    entryPrice = close
    stopLossSell = entryPrice + stopLossOffset
    takeProfitSell = entryPrice - takeProfitOffset
    strategy.entry("Sell", strategy.short)
    strategy.exit("TakeProfit/StopLoss", "Sell", stop=stopLossSell, limit=takeProfitSell)
    lastSignalBar := bar_index

// Plot signals on the chart
plotshape(series=bullishCross and isTimeValid and not isCooldownActive, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy", title="Buy Signal", textcolor=color.white)
plotshape(series=bearishCross and isTimeValid and not isCooldownActive, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", title="Sell Signal", textcolor=color.white)

// Strategy performance tracking
strategy.close("Buy", when=not isTimeValid)
strategy.close("Sell", when=not isTimeValid)