Chiến lược của N dòng K liên tiếp đóng cửa tiêu cực


Ngày tạo: 2023-12-26 10:29:12 sửa đổi lần cuối: 2023-12-26 10:29:12
sao chép: 1 Số nhấp chuột: 562
1
tập trung vào
1623
Người theo dõi

Chiến lược của N dòng K liên tiếp đóng cửa tiêu cực

Tổng quan

Chiến lược này dựa trên các chỉ số kỹ thuật để đánh giá xu hướng thị trường, và là một chiến lược giao dịch ngắn hạn khi có kết thúc âm của đường K nối tiếp.

Nguyên tắc chiến lược

Chiến lược này sử dụng biến số nCounter để thống kê số lần thu âm liên tục. Khi giá đóng thấp hơn giá mở, tăng giá trị nCounter; Khi giá đóng cao hơn giá mở, đặt nCounter lại là 0 . Khi nCounter đạt đến tham số đầu vào nLength, đánh dấu sự xuất hiện của một số lần thu âm liên tục của đường K gốc, tín hiệu đầu ra C2 = 1 .

Khi có tín hiệu, nếu không có vị trí hiện tại, hãy mở vị trí để làm trống; Nếu đã giữ lệnh làm trống, hãy tiếp tục giữ. Sau khi mở vị trí, sử dụng posprice để ghi lại giá mở vị trí. Dựa trên giá mở vị trí làm chuẩn, thiết lập điều kiện dừng và dừng: Nếu giá đạt đến điểm dừng ((giá mở vị trí + tham số đầu vào takeprofit), trơn vị và đặt lại; Nếu giá đạt đến điểm dừng lỗ ((giá mở vị trí - tham số đầu vào stop), trơn vị và đặt lại.

Phân tích lợi thế

Những ưu điểm chính của chiến lược này là:

  1. Các quy tắc đơn giản, rõ ràng và dễ hiểu.
  2. Các tham số có thể tùy chỉnh, linh hoạt đối với các điều kiện thị trường khác nhau.
  3. Cơ chế dừng lỗ ngăn chặn có thể kiểm soát rủi ro hiệu quả.

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. Các kết thúc liên tục của đường K gốc N không thể xác định hoàn toàn xu hướng đảo ngược, có thể xảy ra phá vỡ giả. Các giá trị N có thể được điều chỉnh thích hợp hoặc kết hợp với các chỉ số khác để xác minh.
  2. Cài đặt dừng lỗ không đúng có thể gây ra sự ra đi sớm hoặc mở rộng lỗ. Các tham số hợp lý nên được đặt theo mức độ biến động của thị trường.

Hướng tối ưu hóa

Chính sách này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Thêm bộ lọc xu hướng để tránh sai lệch trong việc điều chỉnh ngắn hạn trên thị trường không rõ ràng. Ví dụ, kết hợp các chỉ số như đường trung bình để đánh giá xu hướng tổng thể.

  2. Tăng lượng chứng minh, ví dụ như tăng khối lượng giao dịch sẽ xác nhận tốt hơn sự đảo ngược xu hướng.

  3. Tối ưu hóa các chiến lược dừng lỗ, chẳng hạn như sử dụng các phương pháp dừng lỗ rời rạc, dừng tỷ lệ, để làm cho dừng lỗ thông minh hơn.

  4. Sử dụng phương pháp học máy để tối ưu hóa các tham số, để nLength có thể điều chỉnh theo sự thay đổi của thị trường trong thời gian thực.

Tóm tắt

Chiến lược này đánh giá xu hướng ngắn hạn dựa trên mối quan hệ lớn giữa giá đóng cửa và giá mở cửa, tạo ra tín hiệu giao dịch khi phát hiện kết thúc của các dòng K nối tiếp. Chiến lược này đơn giản, trực quan, có thể điều chỉnh tham số, có cơ chế dừng lỗ, có thể lọc một số giao dịch ồn. Nhưng cũng có một số rủi ro tín hiệu giả, khuyến nghị tối ưu hóa kết hợp với các chỉ số khác.

Mã nguồn chiến lược
/*backtest
start: 2023-12-18 00:00:00
end: 2023-12-25 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 05/02/2020
// Evaluates for n number of consecutive lower 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 Down", shorttitle="NBD 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))
C2 = 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(C2== 1, close, nz(posprice[1], 0)) 
pos := iff(posprice > 0, -1, 0)
if (pos == 0) 
    strategy.close_all()
if (pos == -1)
    strategy.entry("Short", strategy.short)
posprice := iff(low <= posprice - input_takeprofit and posprice > 0, 0 ,  nz(posprice, 0))
posprice := iff(high >= posprice + input_stoploss and posprice > 0, 0 ,  nz(posprice, 0))
plot(C2, title='NBD', color=color.red)