Strategi Pengesanan Momentum Harga

Penulis:ChaoZhang, Tarikh: 2024-01-03 17:32:14
Tag:

img

Ringkasan

Strategi ini menggunakan penunjuk momentum harga untuk menentukan arah perdagangan. Secara khusus, ia mengira purata bergerak dan harga purata masing-masing. Apabila harga melintasi di atas purata bergerak dan harga purata, isyarat beli dihasilkan. Untuk menapis isyarat palsu, ia tidak memerlukan isyarat sebelumnya yang serupa. Kemudian ia menyimpan status isyarat dan menghasilkan isyarat kedudukan pembukaan akhir dalam kombinasi dengan purata bergerak. Strategi ini juga mengandungi tetapan stop loss dan mengambil keuntungan.

Prinsip Strategi

Strategi ini terutamanya bergantung pada penunjuk momentum harga untuk menilai arah trend. Pertama ia mengira purata bergerak dan harga purata harga:

swmaClose = swma(close)
vwapClose = vwap(close) 

Di mana?swmaialah purata bergerak yang dilancangkan danvwapkedua-duanya boleh mencerminkan tahap harga purata.

Kemudian bandingkan harga dengan purata untuk melihat jika harga melintasi di atas purata bergerak dan harga purata, untuk menilai jika ia adalah isyarat menaik:

swmaLong = close > swmaClose 
vwapLong = close > vwapClose

Untuk menapis isyarat palsu, ia tidak memerlukan isyarat sebelumnya dari kedua-dua petunjuk ini:

triggerLong = vwapLong and not vwapLong[1] and not swmaLong and not swmaLong[1] 

Seterusnya, simpan isyarat menaik:

saveLong = false, saveLong := triggerLong ? true : not vwapLong ? false : saveLong[1] 

Akhirnya, apabila isyarat penyeberangan yang disimpan dan harga menyeberang di atas purata bergerak sekali lagi, menghasilkan isyarat kedudukan pembukaan:

startLong = saveLong and swmaLong

Ini boleh menapis beberapa isyarat palsu dan menjadikan isyarat lebih boleh dipercayai.

Strategi ini juga mengandungi tetapan stop loss dan take profit. Jarak stop loss boleh dikonfigurasi, dan take profit ditetapkan kepada kelipatan tertentu dari stop loss.

Analisis Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Menggunakan penunjuk momentum harga boleh menilai arah trend dengan lebih baik
  2. Gabungan penunjuk dua dan pengesahan pelbagai langkah dapat menapis isyarat palsu dan menjadikan strategi lebih boleh dipercayai
  3. Tetapan stop loss dan mengambil keuntungan adalah munasabah untuk mengawal risiko perdagangan tunggal
  4. Parameter strategi boleh dikonfigurasi untuk menyesuaikan diri dengan persekitaran pasaran yang berbeza
  5. Logik strategi adalah mudah dan lurus, mudah difahami dan dilaksanakan

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Penunjuk purata bergerak mempunyai kelewatan dan mungkin terlepas beberapa turun naik harga
  2. Kesan bergantung pada tetapan parameter, dan kombinasi parameter yang berbeza boleh membuat perbezaan besar
  3. Terdapat agak sedikit isyarat beli, dengan beberapa risiko perdagangan yang terlepas
  4. Pengesahan pelbagai langkah akan menapis beberapa peluang yang mungkin mempengaruhi tahap keuntungan

Tindakan balas:

  1. Uji parameter purata bergerak yang berbeza untuk pengoptimuman parameter
  2. Sedikit memudahkan penilaian logik untuk meningkatkan isyarat beli
  3. Sesuaikan stop loss dan mengambil nisbah keuntungan untuk mengawal kerugian tunggal

Arahan pengoptimuman

Strategi ini juga boleh dioptimumkan ke arah berikut:

  1. Uji lebih banyak penunjuk momentum harga seperti MACD, DMI, dll.
  2. Tambah penilaian isyarat jual untuk melaksanakan perdagangan dua arah
  3. Menggabungkan penunjuk jumlah dagangan untuk mengelakkan kemungkinan pecah palsu
  4. Mengoptimumkan tetapan parameter berdasarkan hasil backtest
  5. Pertimbangkan menyesuaikan parameter secara automatik berdasarkan keadaan pasaran
  6. Tambah algoritma pembelajaran mesin untuk mencapai pengoptimuman penyesuaian diri parameter

Pengoptimuman ini boleh meningkatkan fleksibiliti strategi, ketahanan dan keuntungan.

Ringkasan

Secara keseluruhan, strategi penjejakan momentum harga ini adalah strategi penjejakan trend yang mudah, mudah dan logik. Strategi ini menggunakan purata pergerakan harga dan harga purata untuk menentukan arah momentum harga, dan merancang mekanisme pengesahan pelbagai langkah untuk meningkatkan kualiti isyarat. Strategi ini juga mengandungi tetapan stop loss dan mengambil keuntungan yang munasabah. Dari segi kod, logika strategi sangat ringkas, memerlukan hanya 20+ baris skrip Pine untuk dilaksanakan. Ringkasnya, strategi ini adalah contoh pembelajaran yang sangat baik, pemula boleh menggunakannya sebagai titik permulaan yang sangat baik untuk memahami strategi perdagangan kuantitatif. Sudah tentu, strategi itu sendiri juga mempunyai nilai perdagangan praktikal. Melalui pengoptimuman parameter dan pengembangan fungsi, ia boleh menjadi sistem trek perdagangan praktikal untuk mengelakkan bunyi bising dan trend.


/*backtest
start: 2023-12-03 00:00:00
end: 2024-01-02 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "Simple Price Momentum", shorttitle = "SPM", overlay = true, initial_capital = 20000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.025)

// How To Create A Simple Trading Strategy With TradingView
// https://docs.google.com/document/d/1fXxCtPuGgTXb-RuBJNbwlfgkeiLTK5060LfTrzRlr5k/view

swmaClose = swma(close)
vwapClose = vwap(close)

swmaLong = close > swmaClose
vwapLong = close > vwapClose

triggerLong = vwapLong and not vwapLong[1] and not swmaLong and not swmaLong[1]
saveLong = false, saveLong := triggerLong ? true : not vwapLong ? false : saveLong[1]

startLong = saveLong and swmaLong
startLong := input(false, "Consecutive Orders") ? startLong : startLong and not startLong[1]

stopLoss = input(250, "Stop Loss", step = 50)
takeProfit = input(10, "Reward/Risk") * stopLoss

strategy.entry("Open Long", strategy.long, when = startLong)
strategy.exit("Exit Long", "Open Long", profit = stopLoss, loss = takeProfit)

// bgcolor(swmaLong ? color.blue : na)
// bgcolor(vwapLong ? color.orange : na)
// bgcolor(triggerLong ? color.purple : na)
// bgcolor(saveLong ? color.yellow : na)
bgcolor(startLong[1] ? color.green : na)


Lebih lanjut