Strategi ini mengidentifikasi dasar jangka pendek dengan mendeteksi volume yang luar biasa dalam tren penurunan, dan mengambil posisi panjang selama kondisi oversold.
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:
Keuntungan dari strategi ini meliputi:
Singkatnya, strategi ini memanfaatkan volume breakout untuk menangkap pembalikan tren, sambil mengontrol risiko secara ketat.
Risiko utama dari strategi ini meliputi:
Untuk mengatasi risiko ini, optimasi dapat dilakukan dalam aspek berikut:
Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:
Dengan memperkenalkan teknik yang lebih maju, peningkatan signifikan dapat dicapai pada stabilitas, rasio alfa dan Sharpe.
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)