Chiến lược này xác định các cơ hội mua bằng cách kết hợp khối lượng giao dịch và các chỉ số RSI. Nó quản lý các vị trí bằng cách sử dụng các mục tiêu lợi nhuận theo giai đoạn để khóa lợi nhuận dần dần. Chiến lược này hoạt động tốt trong các thị trường giới hạn phạm vi và có thể nắm bắt hiệu quả các tín hiệu mua lặp lại trong các biến động giá nhỏ.
Chiến lược này sử dụng hai chỉ số để xác định tín hiệu mua - khối lượng giao dịch và RSI. Cụ thể, nó đi dài khi khối lượng vượt quá 2,5 lần khối lượng trung bình 70 ngày, cùng với RSI giảm xuống dưới 30 (mức bán quá mức).
Một khi một vị trí dài được thiết lập, chiến lược đặt ra 5 mục tiêu lợi nhuận ở mức 0,4%, 0,6%, 0,8%, 1,0% và 1,2%. Nó đóng các vị trí dần dần dựa trên tỷ lệ vị trí (20%, 40%, 60%, 80% và 100%) cho đến khi hoàn toàn thoát ra.
Bằng cách lấy lợi nhuận theo giai đoạn, nó nhằm mục đích khóa lợi nhuận giữa các động thái tăng nhẹ, thay vì chờ đợi các hoạt động lớn hơn có thể không thực hiện.
Những lợi thế chính của chiến lược này là:
Sử dụng các chỉ số kép ngăn chặn sự phá vỡ sai. khối lượng tăng xác nhận sự xác nhận đáy trong khi tín hiệu RSI quá bán có nghĩa là tỷ lệ đảo ngược.
Lấy lợi nhuận theo lô cho phép tối đa hóa các lần thu nhỏ trong phạm vi không cần phải chờ đợi các lần chạy lớn để kiếm tiền.
Xuất sắc trong các thị trường giới hạn phạm vi, đặc biệt là những người bị mắc kẹt xung quanh các khu vực chưa hoàn thành của tổ chức.
Giới hạn dừng lỗ rộng cho phép thị trường có chỗ cho các whipsaws trước khi dừng lại.
Những rủi ro chính là:
Sự hiểu lầm về tín hiệu đôi dẫn đến các mục nhập sai.
Lựa chọn lợi nhuận theo giai đoạn rủi ro bỏ lỡ các xu hướng lớn do kích thước vị trí nhỏ.
Các điểm dừng rộng dẫn đến tổn thất lớn trong giao dịch duy nhất.
Chú ý đến cấu trúc khung thời gian lớn hơn.
Tần suất giao dịch cao làm tăng chi phí giao dịch.
Các hướng tối ưu hóa có thể bao gồm:
Tối ưu hóa kết hợp khối lượng và RSI để giảm tín hiệu sai.
Kiểm tra các mức lợi nhuận và tỷ lệ vị trí khác nhau cho các cấu hình lý tưởng, có khả năng với các cơ chế năng động.
Đưa ra các quy tắc kích thước vị trí để giảm rủi ro tối đa cho mỗi giao dịch thông qua các hệ thống quản lý rủi ro.
Kết hợp các chỉ số xu hướng để phát hiện sự đảo ngược để dừng lỗ kịp thời.
Tận dụng algorithmic backtesting để nhanh chóng lặp lại các tham số cho các cấu hình tốt nhất.
Học hỏi từ các mô hình kiểm soát chi phí / trượt của tổ chức HFT để cải thiện hiệu quả mặc dù doanh thu cao.
Chiến lược đảo ngược giá trị trung bình hai chỉ số này xác định các tín hiệu dưới cùng với sự gia tăng khối lượng và RSI quá bán để mua, lấy lợi nhuận dần dần giữa các phạm vi thông qua lối ra từng giai đoạn. Nó thường kiếm lợi nhuận mà không cần chạy lớn. Nhược điểm bao gồm rủi ro hiểu sai tín hiệu và doanh thu cao. Xây dựng xác nhận và kiểm soát rủi ro / chi phí cải thiện độ bền. Tốt cho việc thu hoạch lợi nhuận ngắn hạn trong thị trường hỗn loạn.
/*backtest start: 2023-12-27 00:00:00 end: 2024-01-03 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/ // © wielkieef //@version=5 strategy(title='BTFD strategy [3min]', overlay=true, pyramiding=5, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03) // Volume vol_sma_length = input.int(70, title='Volume lenght ', minval=1) Volume_condt = volume > ta.sma(volume, vol_sma_length) * 2.5 // Rsi rsi_lenght = input.int(20, title='RSI lenght', minval=0) rsi_up = ta.rma(math.max(ta.change(close), 0), rsi_lenght) rsi_down = ta.rma(-math.min(ta.change(close), 0), rsi_lenght) rsi_value = rsi_down == 0 ? 100 : rsi_up == 0 ? 0 : 100 - 100 / (1 + rsi_up / rsi_down) rsi_overs = rsi_value <= 30 rsi_overb = rsi_value >= 70 // logic tp_1 = input.float(0.4," TP 1", minval=0.1, step=0.1) tp_2 = input.float(0.6," TP 2", minval=0.2, step=0.1) tp_3 = input.float(0.8," TP 3", minval=0.3, step=0.1) tp_4 = input.float(1.0," TP 4", minval=0.4, step=0.1) tp_5 = input.float(1.2," TP 5", minval=0.5, step=0.1) q_1 = input.int(title=' % TP 1 Q ', defval=20, minval=1, step=10) q_2 = input.int(title=' % TP 2 Q ', defval=40, minval=1, step=10) q_3 = input.int(title=' % TP 3 Q ', defval=60, minval=1, step=10) q_4 = input.int(title=' % TP 4 Q ', defval=80, minval=1, step=10) q_5 = input.int(title=' % TP 5 Q ', defval=100, minval=1, step=10) sl = input.float(5.0, '% Stop Loss', step=0.1) long_cond = Volume_condt and rsi_overs // this code is from author RafaelZioni, modified by wielkieef per(procent) => strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na) // -------------------------------------------------------------------------------------------------------------------- if long_cond strategy.entry('BUY', strategy.long) strategy.exit('TP 1', qty_percent=q_1, profit=per(tp_1), loss=per(sl) ) strategy.exit('TP 2', qty_percent=q_2, profit=per(tp_2), loss=per(sl) ) strategy.exit('TP 3', qty_percent=q_3, profit=per(tp_3), loss=per(sl) ) strategy.exit('TP 4', qty_percent=q_4, profit=per(tp_4), loss=per(sl) ) strategy.exit('TP 5', qty_percent=q_5, profit=per(tp_5), loss=per(sl) ) // by wielkieef