Strategi Penembusan Garis Purata

Penulis:ChaoZhang, Tarikh: 2024-02-23 14:46:37
Tag:

img

Ringkasan

Strategi penembusan garis purata adalah strategi perdagangan kuantitatif biasa yang mengesan trend. Strategi ini menggunakan purata bergerak dan jalur penyimpangan standard mereka untuk menilai trend pasaran dan menghasilkan isyarat perdagangan apabila harga menembusi jalur penyimpangan standard.

Prinsip Strategi

Strategi ini mula-mula mengira N-hari (default 50 hari) sederhana bergerak purata SMA, dan kemudian mengira penyimpangan standard StdDev harga berdasarkan SMA untuk kitaran ini. Dengan SMA sebagai paksi pusat dan rel atas dan bawah sebagai 2 kali StdDev, saluran penyimpangan standard dibina. Apabila harga melebihi rel atas, pergi pendek; apabila harga jatuh di bawah rel bawah, pergi panjang.

Selepas memasuki pasaran, strategi akan menetapkan titik stop loss dan mengambil keuntungan. Khususnya, selepas pergi panjang, garis stop loss adalah harga penutupan pada masa kemasukan (100 - peratusan stop loss); selepas pergi pendek, garis mengambil keuntungan adalah harga penutupan pada masa kemasukan (100 + mengambil peratusan keuntungan).

Analisis Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Keupayaan pengesanan trend yang kuat. Menggunakan saluran penyimpangan standard dapat menjejaki turun naik pasaran secara dinamik.

  2. Keupayaan kawalan penarikan yang kuat. Menggunakan kerugian berhenti mudah alih dapat mengawal kerugian tunggal dengan berkesan.

  3. Pelaksanaan mudah. Menjimatkan banyak pengoptimuman parameter dan sangat mudah dilaksanakan.

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Risiko pembalikan trend. Strategi pengesanan trend terdedah kepada kerugian dan kemudian pembalikan.

  2. Risiko sensitiviti parameter: Pilihan parameter seperti tempoh purata bergerak dan pengganda penyimpangan standard akan mempunyai kesan yang lebih besar terhadap prestasi strategi.

  3. Stop loss terlalu agresif untuk menyebabkan kerugian tambahan. tetapan titik stop loss yang tidak betul boleh menyebabkan kerugian tambahan.

Penyelesaian untuk risiko yang sepadan adalah seperti berikut:

  1. Gabungkan penunjuk turun naik untuk mengelakkan pecah palsu.

  2. Mengoptimumkan parameter untuk mencari kombinasi parameter yang optimum.

  3. Sesuaikan mekanisme stop loss untuk mengelakkan pencerobohan yang berlebihan.

Arahan pengoptimuman

Masih ada ruang untuk mengoptimumkan lagi strategi:

  1. Menggunakan purata bergerak jangka masa berbilang untuk pengesahan untuk mengelakkan lengkung yang terlalu sensitif.

  2. Menggabungkan penunjuk lain seperti MACD untuk menilai trend dan perbezaan.

  3. Memperkenalkan algoritma pembelajaran mesin untuk mengoptimumkan parameter secara dinamik.

Ringkasan

Secara keseluruhan, strategi terobosan regresi purata bergerak adalah strategi perdagangan kuantitatif yang sangat praktikal. Ia mempunyai kelebihan mengesan trend dan mengawal pengeluaran, pelaksanaan yang mudah, dan memenuhi keperluan perdagangan kuantitatif. Pada masa yang sama, perhatian juga harus diberikan kepada isu-isu seperti pemilihan parameter dan tetapan stop loss. Dengan analisis paksi masa berbilang dan pengoptimuman parameter, prestasi strategi yang lebih baik dapat diperoleh.


/*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)


Lebih lanjut