
Gambaran keseluruhan
Strategi pegangan dinamik dua hala adalah strategi perdagangan kuantitatif yang berdagang berdasarkan dua isyarat simpulan bergerak sederhana (SMA) yang berbeza. Strategi ini menggunakan persilangan purata bergerak jangka pendek dan jangka panjang untuk menilai trend pasaran, dan menyesuaikan arah pegangan berdasarkan isyarat persilangan dan hubungan harga dengan garis rata jangka panjang.
Prinsip Strategi
- Pengiraan purata bergerak: Strategi menggunakan dua purata bergerak mudah pada hari ke-9 dan ke-21 ((SMA)).
- Sinyal dagangan dihasilkan:
- isyarat beli: garis purata jangka pendek ((9 hari SMA) atas garis purata jangka panjang ((21 hari SMA)
- Sinyal jual: garis purata jangka pendek di bawah garis purata jangka panjang
- Pengurusan simpanan:
- Pembukaan kedudukan: membuka kedudukan berbilang mata apabila muncul isyarat beli; membuka kedudukan kosong apabila muncul isyarat jual
- Penempatan kosong dan penempatan terbalik:
a) Apabila memegang kedudukan berbilang mata, jika harga bukaan berada di bawah garis purata jangka panjang atau terdapat isyarat menjual, tutup mata dan buka mata kosong
b) Apabila memegang kedudukan kosong, jika harga bukaan lebih tinggi daripada garis purata jangka panjang atau terdapat isyarat beli, kosongkan kepala kosong dan buka mata wang
- Kawalan risiko: Strategi tidak menetapkan stop loss tetap, tetapi mengawal risiko dengan menyesuaikan arah pegangan secara dinamik
Kelebihan Strategik
- Pengesanan Trend: Menggunakan penyeberangan rata untuk menangkap trend pasaran, membantu untuk mendapatkan keuntungan yang ketara dalam trend besar
- Pemegang kedudukan dinamik: Pemegang kedudukan yang disesuaikan secara fleksibel mengikut hubungan harga dengan garis rata-rata jangka panjang, meningkatkan fleksibiliti dan kebolehsuaian strategi
- Mudah difahami: Logik strategi jelas, mudah difahami dan dilaksanakan
- Parameter yang boleh disesuaikan: dapat disesuaikan dengan keadaan pasaran dan jenis perdagangan yang berbeza dengan menyesuaikan kitaran purata
- Dagangan sepanjang masa: strategi boleh terus berjalan dalam keadaan pasaran yang berbeza, tanpa sekatan keadaan pasaran
- Pelaksanaan automatik: Strategi boleh diprogram untuk mencapai transaksi sepenuhnya automatik, mengurangkan gangguan emosi manusia
- Pengurusan risiko: Mengelakkan kehilangan slippage yang mungkin disebabkan oleh hentian tetap dengan menyesuaikan arah pegangan secara dinamik
Risiko Strategik
- Bursa goyah tidak menguntungkan: Dalam pasaran yang bergolak, perdagangan yang kerap boleh menyebabkan kerugian
- Ketinggalan zaman: purata bergerak pada dasarnya adalah penunjuk ketinggalan zaman, mungkin terlepas tahap awal pergerakan yang melampau
- Risiko penembusan palsu: turun naik harga jangka pendek boleh menyebabkan penembusan palsu garis purata, yang menyebabkan isyarat perdagangan yang salah
- Kurangnya stop loss: Strategi tidak menetapkan stop loss tetap, yang boleh menyebabkan kerugian besar dalam keadaan yang melampau
- Terlalu banyak dagangan: perubahan kedudukan yang kerap boleh menyebabkan kos dagangan yang tinggi
- Sensitiviti parameter: prestasi strategi lebih sensitif terhadap pilihan parameter rata-rata, dan parameter yang berbeza boleh menyebabkan hasil yang sangat berbeza
- Kekurangan satu petunjuk: hanya bergantung pada penyambungan linear boleh mengabaikan maklumat pasaran penting yang lain
Arah pengoptimuman strategi
- Pengenalan penunjuk tambahan: menggabungkan RSI, MACD dan lain-lain untuk meningkatkan kebolehpercayaan isyarat
- Optimumkan masa kemasukan: meningkatkan penapis seperti jumlah transaksi, kadar turun naik, dan mengurangkan penembusan palsu
- Masukkan mekanisme hentian kerugian: menetapkan hentian tetap atau hentian pengesanan, mengawal risiko perdagangan tunggal
- Sesuaikan saiz pegangan: Sesuaikan saiz pegangan mengikut dinamik turun naik pasaran, optimumkan pengurusan wang
- Meningkatkan penilaian keadaan pasaran: mengenal pasti trend dan pasaran yang bergolak, menggunakan strategi yang berbeza dalam keadaan pasaran yang berbeza
- Pilihan parameter optimum: menggunakan data sejarah untuk mencari kombinasi parameter garis purata yang optimum
- Menambah penapis kekuatan trend: memperkenalkan penunjuk seperti ADX, hanya berdagang di pasaran trend kuat
- Mempunyai parameter penyesuaian diri: menyesuaikan kitaran purata secara automatik mengikut turun naik pasaran untuk meningkatkan kebolehsesuaian strategi
ringkaskan
Strategi pegangan kedudukan dinamik dua garis sejajar adalah kaedah perdagangan kuantitatif klasik dan praktikal untuk menangkap trend pasaran dengan menangkap isyarat persilangan garis sejajar dan arah pegangan yang disesuaikan secara dinamik. Strategi ini mudah difahami, sepenuhnya automatik, dan mempunyai keupayaan dan fleksibiliti yang baik untuk mengesan trend. Walau bagaimanapun, strategi ini juga mempunyai risiko yang berpotensi seperti prestasi buruk di pasaran goyah, kelewatan isyarat.
Kod sumber strategi
/*backtest
start: 2024-06-29 00:00:00
end: 2024-07-29 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="MA Cross Backtest", overlay=true, default_qty_type=strategy.cash, default_qty_value=10)
// Parâmetros das Médias Móveis
shortlen = input.int(9, "Short MA Length", minval=1)
longlen = input.int(21, "Long MA Length", minval=1)
// Cálculo das Médias Móveis
short = ta.sma(close, shortlen)
long = ta.sma(close, longlen)
// Plotagem das Médias Móveis
plot(short, color=color.orange, title="Short MA")
plot(long, color=color.green, title="Long MA")
// Sinal de Compra baseado no cruzamento das médias móveis
buySignal = ta.crossover(short, long)
// Sinal de Venda (Short) baseado no cruzamento das médias móveis
sellSignal = ta.crossunder(short, long)
// Plotagem dos Sinais de Compra e Venda
plotshape(series=buySignal, location=location.belowbar, color=color.blue, style=shape.labelup, text="Buy", title="Buy Signal")
plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", title="Sell Signal")
// Condições para alertas
alertcondition(buySignal, title="Buy Signal", message="MA Cross Buy Signal")
alertcondition(sellSignal, title="Sell Signal", message="MA Cross Sell Signal")
// Lógica da Estratégia de Backtest
if (buySignal)
// Se não há posição aberta ou se a posição atual é curta, feche a posição curta antes de abrir uma nova posição longa
if (strategy.position_size < 0)
strategy.close("Short", comment="Closing Short Position before Long Entry")
strategy.entry("Long", strategy.long)
// Alerta de compra
alert("MA Cross Buy Signal", alert.freq_once_per_bar_close)
if (strategy.position_size > 0)
// Se o preço abrir abaixo da média longa
if (open < long)
strategy.close("Long", comment="Price Opened Below Long MA")
strategy.entry("Short", strategy.short, comment="Switched to Short")
// Alerta de venda
alert("Price Opened Below Long MA - Switched to Short", alert.freq_once_per_bar_close)
// Se a média móvel curta cruzar abaixo da média móvel longa
else if (sellSignal)
strategy.close("Long", comment="Short MA Crossed Below Long MA")
strategy.entry("Short", strategy.short, comment="Switched to Short")
// Alerta de venda
alert("Short MA Crossed Below Long MA - Switched to Short", alert.freq_once_per_bar_close)
if (strategy.position_size < 0)
// Se o preço abrir acima da média longa
if (open > long)
strategy.close("Short", comment="Price Opened Above Long MA")
strategy.entry("Long", strategy.long, comment="Switched to Long")
// Alerta de compra
alert("Price Opened Above Long MA - Switched to Long", alert.freq_once_per_bar_close)