KDJ Golden Cross Long Entry chiến lược

Tác giả:ChaoZhang, Ngày: 2024-02-01 10:28:12
Tags:

img

Tổng quan

Chiến lược KDJ Golden Cross Long Entry 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 chéo vàng của đường J và đường D của chỉ số KDJ để tạo ra tín hiệu mua và đi dài khi đường J vượt qua đường D. Chiến lược tương đối đơn giản và dễ thực hiện, phù hợp với người mới bắt đầu giao dịch định lượng.

Chiến lược logic

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 đường K, đường D và đường J. Nơi:

K = (Close hiện tại - Low nhất trong N ngày qua) ÷ (Highest High trong N ngày qua - Lowest Low trong N ngày qua) x 100;

D = M-day moving average của K;

J = 3K - 2D.

Theo các quy tắc chỉ số KDJ, khi đường J vượt qua đường D, nó cho thấy giá đang đảo ngược lên và các vị trí dài có thể được thực hiện; khi đường J giảm xuống dưới đường D, nó báo hiệu rằng giá đang đảo ngược xuống và các vị trí ngắn có thể được bắt đầu.

Chiến lược này sử dụng các quy tắc trên và tạo ra tín hiệu mua khi đường J vượt qua trên đường D, tức là hình thành một thánh giá vàng, để mua mua.

Ưu điểm

  1. Sử dụng chỉ số KDJ để xác định thời gian nhập vốn kết hợp các biến động giá tăng và giảm, do đó đáng tin cậy hơn.

  2. Chiến lược có các quy tắc tín hiệu rõ ràng và đơn giản, dễ hiểu và thực hiện, phù hợp cho người mới bắt đầu.

  3. Chấp nhận dừng lợi nhuận và dừng lỗ để kiểm soát rủi ro hiệu quả.

  4. Không gian lớn cho tối ưu hóa tham số và thực hiện linh hoạt.

Rủi ro

  1. Chỉ số KDJ có xu hướng tạo ra tín hiệu sai dẫn đến tổn thất.

  2. Điều chỉnh thị trường ngắn hạn sau khi mua có thể kích hoạt dừng lỗ và bỏ lỡ các xu hướng lớn.

  3. Cài đặt tham số không chính xác có thể dẫn đến giao dịch quá mức hoặc tín hiệu không rõ ràng.

  4. Cần phải xem xét chi phí giao dịch ảnh hưởng đến lợi nhuận tổng thể.

Phương pháp quản lý rủi ro chính: Tối ưu hóa các tham số đúng cách, theo dõi chỉ số để tăng cường, mở rộng phạm vi dừng lỗ phù hợp, v.v.

Hướng dẫn tối ưu hóa

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

  2. Thêm điều kiện lọc để tránh tín hiệu sai. Có thể kết hợp các chỉ số hoặc hình thành khác để lọc.

  3. Có thể chọn các thiết lập tham số khác nhau dựa trên các loại thị trường (thị trường tăng hoặc giảm).

  4. Có thể mở rộng phạm vi dừng lỗ một cách thích hợp để giảm xác suất thoát khỏi lỗ dừng.

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

Tóm lại

Chiến lược KDJ Golden Cross Long Entry tương đối đơn giản và thực tế, dễ dàng để bắt đầu và thực hiện cho người mới bắt đầu. Chiến lược có một số lợi thế giao dịch nhưng cũng có một số rủi ro. Nó cần tối ưu hóa có mục tiêu để hoàn toàn nhận ra giá trị chiến lược. Nhìn chung, chiến lược xứng đáng với nghiên cứu và ứng dụng chính.


/*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 --------------------------> 


Thêm nữa