Aliran dagangan automatik mengikut strategi pengurusan risiko dinamik

MA MACD ATR TP/SL VOL
Tarikh penciptaan: 2025-04-03 13:43:11 Akhirnya diubah suai: 2025-04-03 13:43:11
Salin: 4 Bilangan klik: 400
2
fokus pada
319
Pengikut

Aliran dagangan automatik mengikut strategi pengurusan risiko dinamik Aliran dagangan automatik mengikut strategi pengurusan risiko dinamik

Gambaran keseluruhan

Ini adalah strategi perdagangan automatik yang menggabungkan purata bergerak, penunjuk MACD dan penapisan kuantiti transaksi, yang bertujuan untuk menentukan arah trend dan menguruskan risiko perdagangan melalui pelbagai petunjuk teknikal. Strategi ini menilai trend pasaran melalui purata bergerak jangka pendek dan jangka panjang, menggunakan isyarat trend pengesahan MACD, dan menggabungkan penapisan kuantiti transaksi dan mekanisme pengurusan risiko dinamik, untuk meningkatkan ketepatan dan kestabilan perdagangan.

Prinsip Strategi

Strategi ini merangkumi empat komponen teknologi utama:

  1. Arah bergerak untuk menentukan trend: menggunakan jangka pendek ((20 kitaran) dan jangka panjang ((100 kitaran) purata bergerak untuk menentukan arah trend pasaran.
  2. Pengesahan isyarat MACD: mengesahkan kesahihan isyarat trend melalui kedudukan garis MACD berbanding dengan garis isyarat.
  3. Penapisan jumlah transaksi: memastikan transaksi berlaku dalam keadaan pasaran yang aktif dengan membandingkan jumlah transaksi semasa dengan purata transaksi sejarah.
  4. Pengurusan risiko dinamik: Menggunakan ATR untuk mengira titik berhenti dan menetapkan had kerugian maksimum dan pengeluaran maksimum setiap hari.

Kelebihan Strategik

  1. Pengesahan pelbagai indikator: meningkatkan keakuratannya dengan menggabungkan purata bergerak, MACD dan jumlah transaksi.
  2. Kawalan risiko dinamik: Kaedah pengiraan skala kedudukan yang fleksibel dan mekanisme pengurusan risiko, mengawal perdagangan tunggal dan risiko keseluruhan dengan berkesan.
  3. Keupayaan untuk mengesan trend: dapat menangkap trend pasaran jangka menengah, mengurangkan perdagangan yang tidak berkesan dalam pasaran yang bergolak.
  4. Kebolehsuaian parameter: menyediakan pelbagai parameter yang boleh disesuaikan untuk memudahkan pengoptimuman strategi untuk keadaan pasaran yang berbeza.

Risiko Strategik

  1. Risiko keterbelakangan: Rata-rata bergerak dan MACD mempunyai keterbelakangan tertentu yang mungkin menangguhkan penangkapan titik perubahan trend.
  2. Sensitiviti parameter: prestasi strategi sangat bergantung kepada parameter yang dipilih, yang memerlukan penyesuaian berterusan dalam keadaan pasaran yang berbeza.
  3. Cabaran pasaran goyah: Strategi mungkin menghasilkan isyarat dagangan yang kerap dan tidak berkesan dalam pasaran yang tidak mempunyai trend yang jelas.
  4. Keadaan pasaran yang melampau: Dalam keadaan turun naik yang kuat atau peristiwa Black Swan, mekanisme kawalan risiko mungkin tidak dapat sepenuhnya mengelakkan kerugian besar.

Arah pengoptimuman strategi

  1. Menambah algoritma pembelajaran mesin: Memperkenalkan mekanisme penyesuaian parameter dinamik untuk menyesuaikan parameter strategi yang sesuai dengan perubahan masa nyata di pasaran.
  2. Pengesahan pelbagai kitaran: memperkenalkan lebih banyak petunjuk teknikal untuk kitaran yang berbeza, meningkatkan kebolehpercayaan isyarat.
  3. Analisis hubungan: Menambah analisis hubungan pasaran untuk mengurangkan risiko sistemik antara aset yang berbeza.
  4. Penilaian risiko yang mendalam: model risiko yang lebih baik, penambahan indikator penilaian risiko yang lebih kompleks dan simulasi senario.

ringkaskan

Ini adalah strategi perdagangan automatik yang menggunakan pelbagai alat analisis teknikal secara komprehensif, yang bertujuan untuk menyediakan kaedah perdagangan yang agak stabil dan boleh dipercayai melalui pengurusan risiko yang ketat dan pengesahan pelbagai indikator. Inti strategi ini adalah menyeimbangkan keupayaan menangkap trend dan kawalan risiko, memberikan kerangka kerja yang fleksibel dan dapat dioptimumkan untuk perdagangan kuantitatif.

Kod sumber strategi
/*backtest
start: 2024-04-02 00:00:00
end: 2025-04-02 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Strategia Semmoncino", shorttitle="semmoncino", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.05)

// Inputs
useVolumeFilter = input.bool(true, title="Usa Filtro di Volume")
volumeThreshold = input.float(1.5, title="Soglia Volume (x Media)", minval=1)
atrPeriod = input.int(14, title="ATR Period", minval=1)
atrMultiplier = input.float(2.0, title="ATR Multiplier", minval=0.1)
takeProfitMultiplier = input.float(6.0, title="Take Profit Multiplier", minval=1.0)  // Aumentato per ottimizzare
riskPerTrade = input.float(2.0, title="Rischio per Trade (%)", minval=0.1) / 100
maxDailyLoss = input.float(2.0, title="Perdita Massima Giornaliera (%)", minval=0.1) / 100
maxDrawdown = input.float(10.0, title="Drawdown Massimo (%)", minval=0.1) / 100
shortMAPeriod = input.int(20, title="MA Breve Termine", minval=1)
longMAPeriod = input.int(100, title="MA Lungo Termine", minval=1)

// MACD Inputs
macdFastLength = input.int(12, title="MACD Fast Length")
macdSlowLength = input.int(26, title="MACD Slow Length")
macdSignalLength = input.int(9, title="MACD Signal Length")

showSignals = input.bool(true, title="Mostra Segnali di Entrata")

// Prezzi di Apertura e Chiusura delle Candele Precedenti (senza repainting)
prevOpen = ta.valuewhen(1, open, 0)
prevClose = ta.valuewhen(1, close, 0)

// Calculate ATR
atr = ta.atr(atrPeriod)

// Calculate Volume Filter
volumeAvg = ta.sma(volume, 20)
volumeFilter = useVolumeFilter ? volume > (volumeAvg * volumeThreshold) : true

// Calculate Moving Averages
shortMA = ta.sma(close, shortMAPeriod)
longMA = ta.sma(close, longMAPeriod)

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength)
macdConditionLong = macdLine > signalLine
macdConditionShort = macdLine < signalLine

// Determine Trend Direction
uptrend = shortMA > longMA
downtrend = shortMA < longMA

// Determine Order Conditions
longCondition = prevClose > prevOpen and volumeFilter and uptrend and macdConditionLong
shortCondition = prevClose < prevOpen and volumeFilter and downtrend and macdConditionShort

// Calcola la dimensione della posizione basata sul capitale iniziale
initialCapital = strategy.initial_capital
positionSize = (initialCapital * riskPerTrade) / (atr * atrMultiplier)

// Calculate Take Profit and Stop Loss Levels dynamically using ATR
takeProfitLong = close + (atr * takeProfitMultiplier)
stopLossLong = close - (atr * 1.5)  // Ridotto per ottimizzare
takeProfitShort = close - (atr * takeProfitMultiplier)
stopLossShort = close + (atr * 1.5)  // Ridotto per ottimizzare

// Limite di Perdita Giornaliera
var float dailyLossLimit = na
if na(dailyLossLimit) or (time - time) > 86400000 // Se è un nuovo giorno
    dailyLossLimit := strategy.equity * (1 - maxDailyLoss)

// Drawdown Massimo
var float drawdownLimit = na
if na(drawdownLimit)
    drawdownLimit := strategy.equity * (1 - maxDrawdown)

// Controllo delle Perdite
if strategy.equity < dailyLossLimit
    strategy.cancel_all()
    strategy.close_all()
    label.new(bar_index, high, text="Perdita Giornaliera Massima Raggiunta", color=color.red)

if strategy.equity < drawdownLimit
    strategy.cancel_all()
    strategy.close_all()
    label.new(bar_index, high, text="Drawdown Massimo Raggiunto", color=color.red)

// Strategy Entries
if (longCondition)
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Take Profit/Stop Loss Long", from_entry="Long", limit=takeProfitLong, stop=stopLossLong)

if (shortCondition)
    strategy.entry("Short", strategy.short, qty=positionSize)
    strategy.exit("Take Profit/Stop Loss Short", from_entry="Short", limit=takeProfitShort, stop=stopLossShort)

// Plot Entry Signals
plotshape(series=longCondition and showSignals ? close : na, location=location.belowbar, color=color.green, style=shape.labelup, text="LONG")
plotshape(series=shortCondition and showSignals ? close : na, location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT")

// Plot Moving Averages
plot(shortMA, color=color.blue, title="MA Breve Termine", linewidth=2)
plot(longMA, color=color.orange, title="MA Lungo Termine", linewidth=2)

// Plot MACD
hline(0, "Zero Line", color=color.gray)
plot(macdLine - signalLine, title="MACD Histogram", color=color.red, style=plot.style_histogram)