Strategi mengikut arah aliran berdasarkan penembusan regresi purata bergerak


Tarikh penciptaan: 2024-02-23 14:46:37 Akhirnya diubah suai: 2024-02-23 14:46:37
Salin: 0 Bilangan klik: 656
1
fokus pada
1621
Pengikut

Strategi mengikut arah aliran berdasarkan penembusan regresi purata bergerak

Gambaran keseluruhan

Strategi pengembalian rata-rata adalah strategi perdagangan kuantitatif yang mengikuti trend. Strategi ini menggunakan purata bergerak dan saluran standard deviasi untuk menilai pergerakan pasaran dan menghasilkan isyarat perdagangan apabila harga melanggar saluran standard deviasi.

Prinsip Strategi

Strategi ini mula-mula mengira purata bergerak sederhana SMA untuk N hari (default 50 hari) dan kemudian mengira perbezaan piawai StdDev berdasarkan SMA untuk harga kitaran tersebut. Dengan SMA sebagai sumbu tengah, masing-masing di atas dan di bawah menggunakan StdDev sebanyak 2 kali ganda sebagai saluran perbezaan piawai untuk membina corong ke atas dan ke bawah.

Selepas memasuki pasaran, strategi akan menetapkan stop loss. Secara khusus, selepas melakukan lebih banyak, garis stop loss adalah harga penutupan semasa masuk ke dalam pasaran ((100 - peratusan stop loss); selepas melakukan shorting, garis stop loss adalah harga penutupan semasa masuk ke dalam pasaran ((100 + peratusan stop loss)).

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Ia mempunyai keupayaan untuk mengesan trend. Ia menggunakan saluran standard deviasi untuk mengesan pergerakan pasaran secara dinamik.
  2. Pengendalian penarikan balik yang kuat. Pengendalian kerugian tunggal yang berkesan dengan menggunakan hentian bergerak.
  3. Mudah dilaksanakan. Ia tidak memerlukan banyak pengoptimuman parameter. Ia mudah dilaksanakan.

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Risiko trend reversal. Strategi untuk menjejaki trend mudah untuk keluar dari kerugian dan kemudian berbalik.
  2. Risiko sensitif parameter. Pemilihan parameter dengan kitaran purata bergerak dan kali ganda perbezaan piawai mempunyai kesan yang lebih besar terhadap prestasi strategi.
  3. Stop loss terlalu radikal dan boleh menyebabkan kerugian tambahan. Tetapan stop loss yang tidak betul boleh menyebabkan kerugian tambahan.

Penyelesaian untuk menghadapi risiko adalah seperti berikut:

  1. Gabungan dengan indikator kadar turun naik untuk mengelakkan penembusan palsu.
  2. Optimumkan parameter untuk mencari kombinasi parameter yang optimum.
  3. Mengubah mekanisme halangan kerugian untuk mengelakkan terlalu radikal.

Arah pengoptimuman

Strategi ini masih boleh dioptimumkan lagi:

  1. Menggunakan garis rata-rata untuk beberapa tempoh masa untuk mengesahkan, mengelakkan kurva terlalu sensitif.

  2. Menggabungkan dengan penunjuk lain seperti MACD untuk menilai trend dan perpindahan.

  3. Memperkenalkan parameter pengoptimuman dinamik algoritma pembelajaran mesin.

ringkaskan

Strategi pemecahan kemerosotan rata-rata adalah strategi perdagangan kuantitatif yang sangat praktikal secara keseluruhan. Ia mempunyai kelebihan untuk mengesan trend, mengawal pengunduran, mewujudkan keperluan yang mudah dan sesuai untuk perdagangan kuantitatif. Ia juga perlu memperhatikan beberapa pilihan parameter dan masalah tetapan stop loss, yang dikombinasikan dengan analisis multi-aksyen masa dan pengoptimuman parameter, untuk mendapatkan prestasi strategi yang lebih baik.

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

//@version=5
strategy("Standard Deviation Bands with Buy/Sell Signals", overlay=true)

// Input for the number of standard deviations
deviationMultiplier = input.float(2.0, title="Standard Deviation Multiplier")

// Input for the length of the moving average
maLength = input.int(50, title="Moving Average Length")

// Input for the stop loss percentage
stopLossPercentage = input.float(12, title="Stop Loss Percentage")

// Calculate the moving average
sma = ta.sma(close, maLength)

// Calculate the standard deviation of the price
priceDeviation = ta.stdev(close, maLength)

// Calculate the upper and lower bands
upperBand = sma + (priceDeviation * deviationMultiplier)
lowerBand = sma - (priceDeviation * deviationMultiplier)

// Plot the bands
plot(upperBand, color=color.green, title="Upper Band")
plot(lowerBand, color=color.red, title="Lower Band")

// Plot the moving average
plot(sma, color=color.blue, title="SMA", linewidth=2)

// Buy Signal
buyCondition = ta.crossover(close, lowerBand)
sellCondition = ta.crossunder(close, upperBand)

// Calculate stop loss level
stopLossLevelBuy = close * (1 - stopLossPercentage / 100)
stopLossLevelSell = close * (1 + stopLossPercentage / 100)

// Create Buy and Sell Alerts
alertcondition(buyCondition, title="Buy Signal", message="Buy Signal - Price Crossed Below Lower Band")
alertcondition(sellCondition, title="Sell Signal", message="Sell Signal - Price Crossed Above Upper Band")

// Plot Buy and Sell Arrows on the chart
plotshape(buyCondition, style=shape.triangleup, location=location.belowbar, color=color.green, title="Buy Signal Arrow")
plotshape(sellCondition, style=shape.triangledown, location=location.abovebar, color=color.red, title="Sell Signal Arrow")

// Exit Long and Short Positions
var float stopLossBuy = na
var float stopLossSell = na

if ta.crossover(close, sma)
    stopLossBuy := stopLossLevelBuy
if ta.crossunder(close, sma)
    stopLossSell := stopLossLevelSell

strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.exit("Stop Loss/Take Profit Buy", from_entry = "Buy", stop = stopLossBuy)
strategy.entry("Sell", strategy.short, when = sellCondition)
strategy.exit("Stop Loss/Take Profit Sell", from_entry = "Sell", stop = stopLossSell)