Chiến lược giao dịch dựa trên chỉ báo KST và chỉ báo EMA


Ngày tạo: 2023-11-07 16:36:21 sửa đổi lần cuối: 2023-11-07 16:36:21
sao chép: 0 Số nhấp chuột: 756
1
tập trung vào
1621
Người theo dõi

Chiến lược giao dịch dựa trên chỉ báo KST và chỉ báo EMA

Tổng quan

Ý tưởng cốt lõi của chiến lược này là kết hợp chỉ số KST và đường trung bình EMA để có thể đánh giá và theo dõi xu hướng. Mua khi chỉ số KST xuất hiện và thấp hơn 0 khi mua và bán khi xuất hiện và cao hơn 0. Đồng thời kết hợp đường trung bình EMA làm kháng cự hỗ trợ, chỉ khi giá đóng cửa phá vỡ đường trung bình EMA mới phát ra tín hiệu giao dịch. Chiến lược này đơn giản và thực tế, có thể tự động theo dõi xu hướng, phù hợp cho các vị trí trung hạn dài hạn.

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

  1. Tính chỉ số KST: Tính chỉ số ROC 10, 15, 20 và 30 ngày, sau đó cộng trọng lượng cho chúng, và cuối cùng có chỉ số KST thông qua một SMA trơn tru 9 ngày.

  2. Tính toán đường trung bình EMA: tính toán đường trung bình EMA với độ dài 50.

  3. Sản xuất tín hiệu mua: Sản xuất tín hiệu mua khi đường nhanh của chỉ số KST xuyên qua đường chậm ((Goldfork) và thấp hơn 0, đồng thời giá đóng cửa cao hơn đường trung bình EMA.

  4. Sản xuất tín hiệu bán: Sản xuất tín hiệu bán khi đường nhanh của chỉ số KST xuyên qua đường chậm (đường chết) và cao hơn 0, đồng thời giá đóng cửa thấp hơn đường trung bình EMA.

  5. Thiết lập dừng di động: Theo dõi dừng được thiết lập là 1% giá trị tài khoản, thực hiện dừng tự động.

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

  1. Chỉ số KST có thể nhận diện sự thay đổi xu hướng, đường trung bình EMA có thể xác nhận hướng xu hướng, kết hợp cả hai có thể xác định chính xác thời gian ENTRY.

  2. Sử dụng trục 0 kết hợp chéo nhanh và chậm để đánh giá hướng chỉ số KST, tránh giao dịch vô nghĩa.

  3. Đường trung bình EMA được sử dụng như một kháng cự hỗ trợ, để lọc thêm các tín hiệu giả, chỉ được sử dụng khi vượt qua EMA.

  4. Tự động theo dõi lỗ hổng để kiểm soát rủi ro và hoạt động lợi nhuận.

  5. Các tham số chiến lược ít hơn, dễ thực hiện và tối ưu hóa.

Rủi ro chiến lược

  1. Chỉ số KST có sự chậm trễ trong việc đánh giá sự thay đổi xu hướng, có thể bỏ lỡ một số cơ hội. Bạn có thể rút ngắn chu kỳ tính toán hoặc tối ưu hóa cách tăng trọng.

  2. EMA trung bình có độ trễ và có thể không có hiệu lực tại điểm chuyển hướng. Bạn có thể thử các chỉ số khác hoặc kết hợp nhiều đường trung bình.

  3. Cài đặt dừng lỗ quá thoải mái sẽ làm cho tổn thất mở rộng; quá chặt chẽ sẽ bị dừng bởi biến động lớn qua đêm. Cần kiểm tra cẩn thận để tìm điểm cân bằng.

  4. Các tín hiệu chiến lược thường xuyên và có thể có chi phí giao dịch cao.

Hướng tối ưu hóa chiến lược

  1. Tối ưu hóa các tham số chu kỳ tính toán của chỉ số KST để tìm các tham số kết hợp nhạy cảm hơn với một giống cụ thể.

  2. Kiểm tra các chỉ số hoặc kết hợp khác nhau, chẳng hạn như MA, WMA, v.v., để xem loại nào có hiệu quả hơn khi kết hợp với KST.

  3. Cố gắng điều chỉnh mức dừng lỗ theo biến động của tỷ lệ biến động hoặc ATR

  4. Thêm các điều kiện lọc, chẳng hạn như khối lượng giao dịch tăng đột biến, để tránh bị đặt.

  5. Cân nhắc kết hợp với các chỉ số khác như RSI, MACD, v.v. để chiến lược toàn diện hơn.

  6. Kiểm tra hiệu quả của các tham số của các giống khác nhau, xây dựng các chương trình tối ưu hóa cho các giống khác nhau.

Tóm tắt

Chiến lược này có ý tưởng tổng thể rõ ràng, đáng tin cậy, dễ thực hiện, thông qua chỉ số KST để đánh giá xu hướng đảo ngược, EMA đồng đều để lọc thêm, kiểm soát rủi ro, có thể tự động theo dõi xu hướng đường dài. Lựa chọn tham số hợp lý, có không gian tối ưu hóa, người dùng có thể điều chỉnh tham số theo nhu cầu, phù hợp với các giống khác nhau, có khả năng thích hợp tốt. Chiến lược này phù hợp cho người mới học và cũng có thể cung cấp hướng dẫn cho các nhà giao dịch chuyên nghiệp. Bằng cách tiếp tục tối ưu hóa thử nghiệm, chiến lược này có khả năng trở thành một chiến lược theo dõi xu hướng ổn định và đáng tin cậy.

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

//@version=4
strategy(title="Know Sure Thing and EMA Strategy by JLX", shorttitle="KST EMA JLX", format=format.price, precision=4, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)
roclen1 = input(10, minval=1, title = "ROC Length #1")
roclen2 = input(15, minval=1, title = "ROC Length #2")
roclen3 = input(20, minval=1, title = "ROC Length #3")
roclen4 = input(30, minval=1, title = "ROC Length #4")
smalen1 = input(10, minval=1, title = "SMA Length #1")
smalen2 = input(10, minval=1, title = "SMA Length #2")
smalen3 = input(10, minval=1, title = "SMA Length #3")
smalen4 = input(15, minval=1, title = "SMA Length #4")
siglen = input(9, minval=1, title = "Signal Line Length")
smaroc(roclen, smalen) => sma(roc(close, roclen), smalen)
kst = smaroc(roclen1, smalen1) + 2 * smaroc(roclen2, smalen2) + 3 * smaroc(roclen3, smalen3) + 4 * smaroc(roclen4, smalen4)
sig = sma(kst, siglen)
plot(kst, color=color.green, title="KST")
plot(sig, color=color.red, title="Signal")
hline(0, title="Zero")

len = input(50, minval=1, title="Length EMA")
src = input(close, title="Source EMA")
offset = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
fastEMA = ema(src, len)

delta = kst - sig

buySignal = crossover(delta, 0) and kst < 0 and close > fastEMA
sellSignal = crossunder(delta, 0) and kst > 0 and close < fastEMA

longTrailPerc = input(title="Trail Long Loss (%)", type=input.float, minval=0.0, step=0.1, defval=1) * 0.01
shortTrailPerc = input(title="Trail Short Loss (%)",type=input.float, minval=0.0, step=0.1, defval=1) * 0.01

// STEP 2:
// Determine trail stop loss prices
longStopPrice = 0.0, shortStopPrice = 0.0

longStopPrice := if (strategy.position_size > 0)
    stopValue = close * (1 - longTrailPerc)
    max(stopValue, longStopPrice[1])
else
    0
shortStopPrice := if (strategy.position_size < 0)
    stopValue = close * (1 + shortTrailPerc)
    min(stopValue, shortStopPrice[1])
else
    999999

// Submit entry orders
if (buySignal)
    strategy.entry(id="EL", long=true)

if (sellSignal)
    strategy.entry(id="ES", long=false)

// STEP 3:
// Submit exit orders for trail stop loss price
if (strategy.position_size > 0)
    strategy.exit(id="XL TRL STP", stop=longStopPrice)

if (strategy.position_size < 0)
    strategy.exit(id="XS TRL STP", stop=shortStopPrice)



alertcondition(crossover(delta, 0) and kst < 0 and close > fastEMA,'Long alert', 'You should buy')

alertcondition(crossunder(delta, 0) and kst > 0 and close < fastEMA, 'Short alert', 'You should sell')