Chiến lược mua đột phá đường tích cực của KDJ


Ngày tạo: 2024-02-01 10:28:12 sửa đổi lần cuối: 2024-02-01 10:28:12
sao chép: 0 Số nhấp chuột: 1098
1
tập trung vào
1617
Người theo dõi

Chiến lược mua đột phá đường tích cực của KDJ

Tổng quan

Chiến lược mua đứt đường nắng KDJ là một chiến lược giao dịch định lượng dựa trên chỉ số KDJ. Chiến lược này chủ yếu sử dụng đường J của chỉ số KDJ và đường D của đường vàng để tạo ra tín hiệu mua, thực hiện nhiều đầu vào khi đi qua đường D trên đường J. Chiến lược này đơn giản, dễ thực hiện và phù hợp cho người mới bắt đầu giao dịch định lượng.

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

Chỉ số kỹ thuật chính được sử dụng trong chiến lược này là chỉ số KDJ. Chỉ số KDJ bao gồm các đường K, đường D và đường J. Trong đó:

Giá trị K = ((giá đóng cửa trong ngày - giá thấp nhất trong N ngày) ÷ ((giá cao nhất trong N ngày - giá thấp nhất) × 100;

Giá trị D = trung bình di chuyển M ngày của giá trị K;

Giá trị J = 3K-2D.

Theo thiết lập của chỉ số KDJ, khi giá J vượt qua giá D, cho thấy giá cổ phiếu tăng ngược, bạn có thể làm nhiều hơn; khi giá J vượt qua giá D, cho thấy giá cổ phiếu giảm ngược, bạn có thể làm trống.

Chiến lược này là sử dụng các quy tắc trên, khi đường J đi qua đường D, tức là khi hình thành một cái gai vàng, hãy xem đó là tín hiệu mua và nhập nhiều. ❚ exitsignal là đường J lớn hơn 100 và thoát ra làm nhiều.

Lợi thế chiến lược

  1. Sử dụng chỉ số KDJ để xác định thời gian mua, chỉ số này tổng hợp thông tin về giá cổ phiếu và giá cả, đáng tin cậy hơn.

  2. Quy tắc đánh giá tín hiệu chiến lược đơn giản, rõ ràng, dễ hiểu và phù hợp cho người mới bắt đầu giao dịch định lượng.

  3. Chiến lược dừng lỗ ngăn chặn được áp dụng để kiểm soát rủi ro hiệu quả.

  4. Các tham số chiến lược được tối ưu hóa rộng rãi, thực hiện linh hoạt.

Rủi ro chiến lược

  1. Các chỉ số KDJ dễ tạo ra các tín hiệu giả, có thể dẫn đến tổn thất.

  2. Một sự điều chỉnh ngắn hạn của thị trường sau khi mua có thể làm cho lệnh dừng lỗ thoát ra và không thể nắm bắt được xu hướng lớn.

  3. Thiết lập tham số không đúng có thể dẫn đến giao dịch thường xuyên hoặc tín hiệu không rõ ràng.

  4. Cần chú ý đến ảnh hưởng của chi phí giao dịch đến lợi nhuận tổng thể.

Phương pháp kiểm soát rủi ro chính: tối ưu hóa tham số hợp lý, tăng cường chỉ số theo dõi, nới lỏng phạm vi dừng lỗ thích hợp.

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

  1. Tối ưu hóa các tham số của KDJ, tìm kiếm sự kết hợp tham số tốt nhất.

  2. Tăng điều kiện lọc để tránh tín hiệu giả. Có thể lọc kết hợp với các chỉ số hoặc hình thức khác.

  3. Các tham số khác nhau có thể được đặt tùy thuộc vào loại thị trường ((thị trường bò và gấu)).

  4. Có thể nới lỏng mức dừng lỗ một cách thích hợp để giảm khả năng dừng lỗ.

  5. Có thể kết hợp với các chỉ số phân tích như khối lượng giao dịch để tránh bị đặt cược.

Tóm tắt

Chiến lược mua bán đột phá của KDJ nói chung là đơn giản, thực tế, dễ thực hiện, đặc biệt phù hợp với người mới bắt đầu giao dịch số lượng. Chiến lược này có một số lợi thế giao dịch, nhưng cũng có một số rủi ro, cần được tối ưu hóa một cách cụ thể để tận dụng đầy đủ giá trị của chiến lược. Nói chung, chiến lược này đáng để nghiên cứu và áp dụng.

Mã nguồn chiến lược
/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//  ## !<------------------ Script --------------------------> 
//@version=5
strategy('KDJ NVDA', shorttitle='KDJ')

ilong = input(9, title='period')
isig = input(3, title='signal')

bcwsma(s, l, m) =>
    _bcwsma = float(na)
    _s = s
    _l = l
    _m = m
    _bcwsma := (_m * _s + (_l - _m) * nz(_bcwsma[1])) / _l
    _bcwsma

// profit strategy add
profit_m = input.float(1.20,"Profit Margin",minval=1.0,maxval=1.99,step=0.05)
stop_m = input.float(0.98,"Stop Loss Margin",minval=0.0,maxval=1,step=0.05)

// Make input options that configure backtest date range
startDate = input.int(title="Start Date", defval=1, minval=1,maxval=31)
startMonth = input.int(title="Start Month", defval=1,minval=1,maxval=12)
startYear = input.int(title="Start Year", defval=2023,minval=2018,maxval=2024)
endDate = input.int(title="End Date", defval=1, minval=1,maxval=31)
endMonth = input.int(title="End Month", defval=1,minval=1,maxval=12)
endYear = input.int(title="End Year", defval=2024,minval=2018,maxval=2099)

// intialization of variables
// Look if the close time of the current bar
// falls inside the date range
inDateRange = (time >= timestamp(syminfo.timezone, startYear,startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))

c = close
h = ta.highest(high, ilong)
l = ta.lowest(low, ilong)
RSV = 100 * ((c - l) / (h - l))
pK = bcwsma(RSV, isig, 1)
pD = bcwsma(pK, isig, 1)
pJ = 3 * pK - 2 * pD
KDJ = math.avg(pD, pJ, pK)

go_long= ta.crossunder(pD,pJ)


if (inDateRange and go_long)
    strategy.entry("S",strategy.long,comment="C")
	// strategy.exit("S", limit=c*profit_m, stop=c*stop_m, comment="SL/SP")
	
if (inDateRange and pJ > 100)
	strategy.close("S", comment="TP")
	
// Plot options
// plot(pK, color= #1E88E5)
// plot(pD, color=#FF6F00)
// plot(ma, color=color.yellow)
// bgcolor(pJ>pD? color.green : color.red)

plot(pK, title='% K', color=color.new(color.orange, 0))
plot(pD, title='% D', color=color.new(color.lime, 0))
plot(pJ, title='% J', color=color.new(color.fuchsia, 0))
plot(KDJ, title='KDJ', color=color.new(color.white, 0))
// </PINE> </SCRIPT>
// ## This source code is subject to the terms of the ozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// ## !<------------------ End Script -------------------------->