Strategi penembusan garis rata-rata adalah strategi perdagangan kuantitatif khas yang melacak tren. Strategi ini menggunakan rata-rata bergerak dan band deviasi standar mereka untuk menilai tren pasar dan menghasilkan sinyal perdagangan ketika harga menembus band deviasi standar.
Strategi ini pertama-tama menghitung SMA bergerak sederhana N-hari (default 50 hari), dan kemudian menghitung deviasi standar StdDev dari harga berdasarkan SMA untuk siklus ini. Dengan SMA sebagai sumbu pusat dan rel atas dan bawah sebagai 2 kali StdDev,
Setelah memasuki pasar, strategi akan menetapkan stop loss dan take profit point. Secara khusus, setelah pergi panjang, garis stop loss adalah harga penutupan pada saat masuk (100 - persentase stop loss); setelah pergi pendek, garis take profit adalah harga penutupan pada saat masuk (100 + persentase take profit).
Strategi ini memiliki keuntungan berikut:
Kemampuan pelacakan tren yang kuat. Menggunakan saluran penyimpangan standar dapat secara dinamis melacak fluktuasi pasar.
Kemampuan pengendalian penarikan yang kuat. Menggunakan stop loss mobile dapat secara efektif mengendalikan kerugian tunggal.
Implementasi sederhana. Menghemat banyak optimasi parameter dan sangat mudah diterapkan.
Strategi ini juga memiliki beberapa risiko:
Risiko pembalikan tren. Strategi pelacakan tren cenderung mengalami kerugian dan kemudian pembalikan.
Risiko sensitivitas parameter: Pilihan parameter seperti periode rata-rata bergerak dan pengganda standar deviasi akan memiliki dampak yang lebih besar pada kinerja strategi.
Stop loss terlalu agresif untuk menyebabkan kerugian tambahan. pengaturan stop loss point yang tidak benar dapat menyebabkan kerugian tambahan.
Solusi untuk risiko yang sesuai adalah sebagai berikut:
Menggabungkan indikator volatilitas untuk menghindari kegagalan palsu.
Mengoptimalkan parameter untuk menemukan kombinasi parameter yang optimal.
Sesuaikan mekanisme stop loss untuk mencegah agresi yang berlebihan.
Masih ada ruang untuk optimalisasi strategi lebih lanjut:
Gunakan beberapa rata-rata bergerak jangka waktu untuk verifikasi untuk menghindari kurva yang terlalu sensitif.
Masukkan indikator lain seperti MACD untuk menilai tren dan divergensi.
Memperkenalkan algoritma pembelajaran mesin untuk mengoptimalkan parameter secara dinamis.
Secara keseluruhan, strategi terobosan regresi rata-rata bergerak adalah strategi perdagangan kuantitatif yang sangat praktis. Ini memiliki keuntungan melacak tren dan mengendalikan penarikan, implementasi sederhana, dan memenuhi kebutuhan perdagangan kuantitatif. Pada saat yang sama, perhatian juga harus diberikan pada masalah seperti pemilihan parameter dan pengaturan stop loss. Dengan analisis multi-axis waktu dan optimasi parameter, kinerja 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)