Chiến lược này xác định đáy ngắn hạn bằng cách phát hiện khối lượng nổi bật trong xu hướng giảm, và có các vị trí dài trong điều kiện bán quá mức.
Khi khối lượng vượt quá 2 độ lệch chuẩn trên khối lượng trung bình dựa trên SMA, nó được coi là khối lượng tồn tại. Trong khi đó, chỉ số RSI dưới 30 cho thấy tình trạng bán quá mức. Khi cả hai điều kiện được đáp ứng, nó được đánh giá là đáy ngắn hạn và vị trí dài được thực hiện ngay lập tức. Vị trí sẽ được đóng sau một khoảng thời gian nhất định (ví dụ: 10 thanh).
Vì vậy, logic của chiến lược này rất đơn giản:
Những lợi thế của chiến lược này bao gồm:
Tóm lại, chiến lược này tận dụng lợi thế của việc phá vỡ khối lượng để nắm bắt sự đảo ngược xu hướng, trong khi kiểm soát rủi ro nghiêm ngặt.
Những rủi ro chính của chiến lược này bao gồm:
Để giải quyết những rủi ro này, tối ưu hóa có thể được thực hiện trong các khía cạnh sau:
Chiến lược này có thể được tối ưu hóa thêm trong các khía cạnh sau:
Bằng cách giới thiệu các kỹ thuật tiên tiến hơn, có thể đạt được sự cải thiện đáng kể về sự ổn định, tỷ lệ alpha và Sharpe.
Tóm lại, đây là một chiến lược đột phá ngắn hạn rất đơn giản, đơn giản và hợp lý. Bằng cách tận dụng đúng khối lượng để phát hiện sự đảo ngược xu hướng và kiểm soát nghiêm ngặt rủi ro, hiệu suất vững chắc có thể đạt được. Nhưng rủi ro tín hiệu sai và độ bền của tham số tồn tại. Chúng có thể được giải quyết dần dần bằng cách giới thiệu các kỹ thuật tiên tiến hơn để cải thiện thêm chiến lược.
/*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)