Strategi Kuantitatif Sniping Bottom yang agresif

Penulis:ChaoZhang, Tarikh: 2024-01-18 16:25:33
Tag:

img

Ringkasan

Strategi ini mengenal pasti bahagian bawah jangka pendek dengan mengesan jumlah yang luar biasa dalam trend penurunan, dan mengambil kedudukan panjang semasa keadaan oversold.

Prinsip Strategi

Apabila jumlah melebihi 2 penyimpangan standard di atas jumlah purata berasaskan SMA, ia dianggap jumlah yang belum dibayar. Sementara itu, RSI di bawah 30 menunjukkan status oversold. Apabila kedua-dua syarat dipenuhi, ia dinilai sebagai bawah jangka pendek dan kedudukan panjang diambil dengan serta-merta. Posisi akan ditutup selepas tempoh masa tertentu (contohnya 10 bar).

Jadi logik strategi ini mudah:

  1. Mengira 20-bar SMA jumlah sebagai penanda aras
  2. Mengira 2 penyimpangan piawai 20 bar sebagai ambang untuk jumlah yang belum dibayar
  3. Mengira RSI 20-bar untuk menilai status oversold
  4. Apabila jumlah melebihi penanda aras + 2 penyimpangan piawai dan RSI < 30, menilai sebagai bawah jangka pendek
  5. Ambil kedudukan panjang di bahagian bawah.
  6. Tutup kedudukan selepas 10 bar secara automatik

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Logik yang mudah, mudah difahami dan dioptimumkan
  2. Menggunakan jumlah yang luar biasa untuk mengesan titik perubahan jangka pendek
  3. RSI memastikan hanya mengambil panjang di zon oversold, mengelakkan mengejar puncak
  4. Stop loss automatik memaksimumkan mengelakkan risiko di bahagian bawah

Ringkasnya, strategi ini mengambil kesempatan daripada pecah jumlah untuk menangkap pembalikan trend, sambil mengawal risiko dengan ketat.

Analisis Risiko

Risiko utama strategi ini termasuk:

  1. Volume dan RSI boleh menghasilkan isyarat pecah palsu, menyebabkan panjang dan kerugian yang salah.
  2. Masa berhenti rugi tetap mungkin gagal untuk menghentikan kerugian atau menghentikan kerugian terlalu awal semasa pembalikan pasaran yang ketara.
  3. Penyesuaian parameter yang kurang optimum boleh menyebabkan terlalu sedikit atau terlalu banyak isyarat.

Untuk menangani risiko ini, pengoptimuman boleh dilakukan dalam aspek berikut:

  1. Tambah penunjuk lain untuk menapis isyarat pecah palsu.
  2. Tetapkan stop loss dinamik yang tertinggal dan bukannya bilangan bar yang tetap.
  3. Ujian parameter yang komprehensif dan penyesuaian untuk memastikan ketahanan.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dalam aspek berikut:

  1. Tambah model ML untuk menilai kebolehpercayaan gangguan jumlah untuk mengelakkan isyarat palsu
  2. Tambah mekanisme kehilangan berhenti adaptif bukannya bar tetap
  3. Pengoptimuman set data berbilang dimensi untuk parameter jumlah yang belum selesai
  4. Meningkatkan ketepatan isyarat oversold menggunakan pemeriksaan ML
  5. Menggabungkan analisis sentimen untuk meningkatkan alfa

Dengan memperkenalkan teknik yang lebih maju, peningkatan yang ketara dapat dicapai pada kestabilan, nisbah alfa dan Sharpe.

Kesimpulan

Ringkasnya, ini adalah strategi breakout jangka pendek yang sangat mudah, mudah dan logik. Dengan memanfaatkan jumlah dengan betul untuk mengesan pembalikan trend, dan mengawal risiko dengan ketat, prestasi yang kukuh dapat dicapai. Tetapi risiko isyarat palsu dan ketahanan parameter ada. Ini boleh ditangani secara bertahap dengan memperkenalkan teknik yang lebih maju untuk meningkatkan lagi strategi.


/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © footlz

//@version=4
strategy("Bottom catch strategy", overlay=true)

v_len = input(20, title="Volume SMA Length")
mult = input(2)
rsi_len = input(20, title="RSI Length")
oversold = input(30, title="Oversold")
close_time = input(10, title="Close After")

v = volume
basis = sma(v, v_len)
dev = mult * stdev(v, v_len)
upper_volume = basis + dev

rsi = rsi(close, rsi_len)

long = v > upper_volume and rsi < oversold

strategy.entry("Long", true, when=long)

passed_time = 0.0
if strategy.position_size != 0
    passed_time := 1
else
    passed_time := 0

if strategy.position_size != 0 and strategy.position_size[1] != 0
    passed_time := passed_time[1] + 1

if passed_time >= close_time
    strategy.close_all()

// If want to enable plot, change overlay=false.
v_color = close >= close[1] ? color.new(#3eb370, 0) : color.new(#e9546b, 0)

// plot(v, title="volume", color=v_color, style=plot.style_columns)
// plot(upper_volume, title="Threshold", color=color.aqua)

Lebih lanjut