KST EMA Dynamic Trend Theo chiến lược

Tác giả:ChaoZhang, Ngày: 2023-11-07 16:36:21
Tags:

img

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 EMA để xác định và theo dõi xu hướng. Nó tạo ra tín hiệu mua khi chỉ số KST vượt trên 0 và đóng trên đường EMA, và bán tín hiệu khi nó vượt dưới 0 và đóng dưới đường EMA. Chiến lược đơn giản và thực tế này có thể tự động theo dõi xu hướng và phù hợp với cổ phần trung hạn đến dài hạn.

Chiến lược logic

  1. Tính toán chỉ số KST: Tính toán ROC của 10, 15, 20 và 30 giai đoạn, lấy tổng trọng số và làm mịn nó với SMA 9 giai đoạn để dẫn ra chỉ số KST.

  2. Tính toán đường EMA: Tính toán đường EMA 50 giai đoạn.

  3. Tạo tín hiệu mua: Khi đường KST nhanh vượt qua trên đường KST chậm (cầu vàng) và dưới 0, trong khi đóng cửa nằm trên đường EMA, một tín hiệu mua được kích hoạt.

  4. Tạo tín hiệu bán: Khi đường KST nhanh vượt qua dưới đường KST chậm (cross chết) và trên 0, trong khi đóng cửa nằm dưới đường EMA, một tín hiệu bán được kích hoạt.

  5. Thiết lập stop loss: Stop loss theo dõi 1% giá trị tài khoản để nhận ra stop loss tự động.

Ưu điểm

  1. KST xác định sự thay đổi xu hướng, EMA xác nhận hướng.

  2. Sử dụng chéo nhanh / chậm và đường 0 tránh giao dịch không cần thiết.

  3. EMA như hỗ trợ/kháng cự thêm lọc tín hiệu giả. Chỉ nhập trên EMA breakouts.

  4. Đánh giá tự động kiểm soát rủi ro và cho phép lợi nhuận chạy.

  5. Các tham số đơn giản làm cho việc thực hiện và tối ưu hóa dễ dàng.

Rủi ro

  1. KST có trễ trong việc phát hiện sự thay đổi xu hướng, có thể bỏ lỡ một số cơ hội.

  2. EMA đã bị chậm trễ trong việc đảo ngược xu hướng.

  3. Đánh lỗ quá rộng sẽ làm tăng lỗ, quá chặt sẽ bị dừng lại bởi các mũi nhọn.

  4. Các tín hiệu thường xuyên có thể làm tăng chi phí giao dịch. Có thể thắt chặt các quy tắc nhập cảnh để giảm giao dịch.

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

  1. Tối ưu hóa thời gian KST cho độ nhạy với các công cụ cụ thể.

  2. Kiểm tra các đường trung bình động khác như MA, WMA để xem kết hợp tốt nhất với KST.

  3. Thử nghiệm dừng động dựa trên các chỉ số biến động như ATR.

  4. Thêm các bộ lọc như âm lượng cao để tránh bẫy.

  5. Xem xét kết hợp với các chỉ số như RSI, MACD cho nhiều chiều kích hơn.

  6. Kiểm tra các tham số trên các thiết bị để tối ưu hóa cho mỗi thiết bị.

Kết luận

Chiến lược này có logic rõ ràng, đáng tin cậy, dễ thực hiện. KST xác định các biến đổi xu hướng, lọc EMA hơn nữa và ngăn chặn rủi ro. Nó tự động theo dõi xu hướng trung hạn đến dài hạn. Các thông số hợp lý cung cấp không gian tối ưu hóa lớn. Người dùng có thể điều chỉnh cho các công cụ khác nhau. Áp dụng cho người mới bắt đầu học và các chuyên gia xây dựng. Với tối ưu hóa hơn nữa, nó cho thấy hứa hẹn như một hệ thống theo xu hướng mạnh mẽ.


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





Thêm nữa