Tren perdagangan otomatis mengikuti strategi manajemen risiko yang dinamis

MA MACD ATR TP/SL VOL
Tanggal Pembuatan: 2025-04-03 13:43:11 Akhirnya memodifikasi: 2025-04-03 13:43:11
menyalin: 4 Jumlah klik: 400
2
fokus pada
319
Pengikut

Tren perdagangan otomatis mengikuti strategi manajemen risiko yang dinamis Tren perdagangan otomatis mengikuti strategi manajemen risiko yang dinamis

Ringkasan

Ini adalah strategi perdagangan otomatisasi yang menggabungkan moving average, MACD, dan penyaringan volume transaksi untuk menentukan arah tren dan mengelola risiko perdagangan melalui beberapa indikator teknis. Strategi ini menilai tren pasar melalui rata-rata bergerak jangka pendek dan jangka panjang, menggunakan sinyal konfirmasi tren MACD, dan menggabungkan penyaringan volume transaksi dan mekanisme manajemen risiko dinamis untuk meningkatkan akurasi dan stabilitas perdagangan.

Prinsip Strategi

Strategi ini terdiri dari empat komponen teknologi utama:

  1. Pengertian tren rata-rata bergerak: menggunakan jangka pendek ((20 siklus) dan jangka panjang ((100 siklus) rata-rata bergerak untuk menentukan arah tren pasar.
  2. Pengesahan sinyal MACD: validasi sinyal tren melalui posisi garis MACD terhadap garis sinyal.
  3. Filter volume transaksi: memastikan transaksi terjadi dalam kondisi pasar yang aktif, dengan membandingkan volume transaksi saat ini dengan volume transaksi rata-rata historis.
  4. Manajemen risiko dinamis: Menggunakan indikator ATR untuk menghitung stop loss dan menetapkan batas maksimum kerugian dan maksimum penarikan per hari.

Keunggulan Strategis

  1. Validasi multi-indikator: meningkatkan akurasi sinyal secara signifikan dengan menggabungkan moving average, MACD dan volume transaksi.
  2. Pengendalian risiko yang dinamis: perhitungan skala posisi yang fleksibel dan mekanisme manajemen risiko yang efektif untuk mengontrol risiko transaksi tunggal dan keseluruhan.
  3. Kemampuan untuk melacak tren: kemampuan untuk menangkap tren jangka menengah pasar, mengurangi perdagangan tidak efektif di pasar yang bergoyang.
  4. Parameter yang dapat disesuaikan: menyediakan beberapa parameter yang dapat disesuaikan untuk memudahkan optimasi strategi untuk lingkungan pasar yang berbeda.

Risiko Strategis

  1. Risiko keterbelakangan: Ada keterbelakangan pada moving average dan MACD, yang dapat menunda penangkapan titik balik tren.
  2. Sensitivitas Parameter: Kinerja strategi sangat bergantung pada parameter yang dipilih, yang perlu terus disesuaikan dalam lingkungan pasar yang berbeda.
  3. Tantangan pasar goyah: Strategi dapat menghasilkan sinyal perdagangan yang sering dan tidak efektif di pasar tanpa tren yang jelas.
  4. Kondisi pasar yang ekstrim: Dalam situasi volatilitas yang kuat atau peristiwa Black Swan, mekanisme pengendalian risiko mungkin tidak dapat sepenuhnya menghindari kerugian besar.

Arah optimasi strategi

  1. Menambahkan algoritma pembelajaran mesin: Memperkenalkan mekanisme penyesuaian parameter dinamis untuk mengoptimalkan parameter strategi sesuai dengan perubahan real-time di pasar.
  2. Verifikasi multi-siklus: memperkenalkan lebih banyak indikator teknis untuk periode yang berbeda, meningkatkan keandalan sinyal.
  3. Analisis korelasi: Menambahkan analisis korelasi pasar untuk mengurangi risiko sistematis antara aset yang berbeda.
  4. Evaluasi risiko yang lebih dalam: model risiko yang lebih baik dengan penambahan indikator penilaian risiko yang lebih kompleks dan simulasi skenario.

Meringkaskan

Ini adalah strategi perdagangan otomatisasi yang menggunakan berbagai alat analisis teknis secara komprehensif, yang bertujuan untuk memberikan metode perdagangan yang relatif stabil dan andal melalui manajemen risiko yang ketat dan verifikasi multi-indikator. Inti dari strategi ini adalah menyeimbangkan kemampuan untuk menangkap tren dan mengendalikan risiko, memberikan kerangka kerja yang fleksibel dan dapat dioptimalkan untuk perdagangan kuantitatif.

Kode 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)