Lý thuyết cốt lõi của chiến lược này là phát hiện xem giá đóng của N nến liên tiếp có tiếp tục tăng hay không. Nếu vậy, mua dài; nếu không, đóng vị trí. Điều này có thể nắm bắt xu hướng tăng của giá cổ phiếu và kiếm lợi nhuận.
Chỉ số cốt lõi của chiến lược này là nCounter. Nó so sánh giá đóng và giá mở của nến hiện tại để đánh giá liệu giá có tăng hay không.
Cụ thể, nếu close[1]>=open[1], nCounter sẽ thêm 1, cho thấy tăng; nếu close[1]
Sau đó so sánh nCounter với tham số nLength. Khi nCounter>=nLength, tín hiệu đầu ra C1=1; nếu không C1=0.
Sau khi nhận được tín hiệu C1 = 1, nếu không có vị trí hiện tại, đi dài; nếu đã ở vị trí dài, tiếp tục giữ.
Ngoài ra, chiến lược này đặt ra các điều kiện dừng lỗ và lấy lợi nhuận. Nếu giá giảm xuống dưới giá nhập khẩu một tỷ lệ phần trăm nhất định, dừng lỗ thoát khỏi vị trí; nếu tăng trên giá nhập khẩu một tỷ lệ phần trăm nhất định, lấy lợi nhuận.
Đây là một xu hướng điển hình sau chiến lược với điểm mạnh dưới đây:
Có một số rủi ro của chiến lược này, chủ yếu trong các khía cạnh sau:
Để giảm rủi ro này, chúng ta có thể thiết lập lệnh dừng lỗ nghiêm ngặt hơn, tối ưu hóa nLength, thêm các quy tắc điều kiện thị trường hoặc kiểm tra các tham số riêng biệt cho các cổ phiếu khác nhau.
Xem xét các rủi ro trên, chúng ta có thể tối ưu hóa chiến lược từ các khía cạnh sau:
Chiến lược này nắm bắt xu hướng tăng bằng cách phát hiện N nến tăng liên tục. Nó có thể thực hiện theo xu hướng một cách hiệu quả. Những lợi thế là logic đơn giản, điều chỉnh tham số linh hoạt, lọc breakout sai. Nhưng cũng có một số rủi ro. Nó cần thêm các mô-đun như dừng lỗ, tối ưu hóa tham số, đánh giá môi trường để cải thiện. Nhìn chung, chiến lược này cung cấp một mô hình cơ bản có giá trị cho giao dịch định lượng. Nó có thể trở thành một công cụ giao dịch mạnh mẽ sau khi cải thiện liên tục.
/*backtest start: 2023-01-01 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 05/02/2020 // Evaluates for n number of consecutive higher closes. Returns a value // of 1 when the condition is true or 0 when false. // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// strategy(title="N Bars Up", shorttitle="NBU Backtest", overlay = false) nLength = input(4, minval=1) input_takeprofit = input(20, title="Take Profit pip", step=0.01) input_stoploss = input(10, title="Stop Loss pip", step=0.01) nCounter = 0 nCounter := iff(close[1] >= open[1], nz(nCounter[1],0)+1, iff(close[1] < open[1], 0, nCounter)) C1 = iff(nCounter >= nLength, 1, 0) posprice = 0.0 pos = 0 barcolor(nz(pos[1], 0) == -1 ? color.red: nz(pos[1], 0) == 1 ? color.green : color.blue ) posprice := iff(C1== 1, close, nz(posprice[1], 0)) pos := iff(posprice > 0, 1, 0) if (pos == 0) strategy.close_all() if (pos == 1) strategy.entry("Long", strategy.long) posprice := iff(low <= posprice - input_stoploss and posprice > 0, 0 , nz(posprice, 0)) posprice := iff(high >= posprice + input_takeprofit and posprice > 0, 0 , nz(posprice, 0)) plot(C1, title='NBU', color=color.green)