Strategi Kuantitatif yang Agresif

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

img

Gambaran umum

Strategi ini mengidentifikasi dasar jangka pendek dengan mendeteksi volume yang luar biasa dalam tren penurunan, dan mengambil posisi panjang selama kondisi oversold.

Prinsip Strategi

Ketika volume melebihi 2 standar deviasi di atas volume rata-rata berdasarkan SMA, itu dianggap volume yang belum terjual. Sementara itu, RSI di bawah 30 menunjukkan status oversold. Ketika kedua kondisi terpenuhi, itu dinilai sebagai bawah jangka pendek dan posisi panjang diambil segera. Posisi akan ditutup setelah periode waktu tertentu (misalnya 10 bar).

Jadi logika strategi ini sederhana:

  1. Menghitung SMA volume 20-bar sebagai acuan
  2. Menghitung 2 standar deviasi volume 20 bar sebagai ambang untuk volume yang belum terhitung
  3. Menghitung RSI 20-bar untuk menilai status oversold
  4. Bila volume melebihi benchmark + 2 standar deviasi dan RSI < 30, menilai sebagai bawah jangka pendek
  5. Mengambil posisi panjang segera di bawah
  6. Tutup posisi setelah 10 bar secara otomatis

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Logika sederhana, mudah dipahami dan dioptimalkan
  2. Menggunakan volume yang masih tersisa untuk mendeteksi titik balik jangka pendek
  3. RSI memastikan hanya mengambil panjang di zona oversold, menghindari mengejar puncak
  4. Stop loss otomatis memaksimalkan penghindaran risiko di bagian bawah

Singkatnya, strategi ini memanfaatkan volume breakout untuk menangkap pembalikan tren, sambil mengontrol risiko secara ketat.

Analisis Risiko

Risiko utama dari strategi ini meliputi:

  1. Volume dan RSI dapat menghasilkan sinyal breakout yang salah, menyebabkan long dan kerugian yang salah.
  2. Waktu stop loss tetap mungkin gagal untuk menghentikan kerugian atau menghentikan kerugian terlalu dini selama pembalikan pasar yang signifikan.
  3. Penyesuaian parameter yang kurang optimal dapat menyebabkan terlalu sedikit atau terlalu banyak sinyal.

Untuk mengatasi risiko ini, optimasi dapat dilakukan dalam aspek berikut:

  1. Tambahkan indikator lain untuk menyaring sinyal kebohongan.
  2. Tetapkan stop loss trailing dinamis alih-alih jumlah batang tetap.
  3. Pengujian dan penyesuaian parameter yang komprehensif untuk memastikan ketahanan.

Arahan Optimasi

Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:

  1. Tambahkan model ML untuk menilai keandalan volume breakout untuk menghindari sinyal palsu
  2. Tambahkan mekanisme stop loss adaptif alih-alih batang tetap
  3. Optimasi dataset multi-dimensi untuk parameter volume yang belum terhitung
  4. Meningkatkan akurasi sinyal oversold dengan menggunakan screening ML
  5. Masukkan analisis sentimen untuk meningkatkan alfa

Dengan memperkenalkan teknik yang lebih maju, peningkatan signifikan dapat dicapai pada stabilitas, rasio alfa dan Sharpe.

Kesimpulan

Secara singkat, ini adalah strategi breakout jangka pendek yang sangat sederhana, mudah dan logis. Dengan memanfaatkan volume dengan benar untuk mendeteksi pembalikan tren, dan mengendalikan risiko secara ketat, kinerja yang solid dapat dicapai. Tetapi risiko sinyal palsu dan ketahanan parameter ada. Ini dapat ditangani secara bertahap dengan memperkenalkan teknik yang lebih maju untuk meningkatkan 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 banyak