Chiến lược dừng lỗ động của chỉ báo động lượng giao thoa


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

Chiến lược dừng lỗ động của chỉ báo động lượng giao thoa

Tổng quan

Chiến lược này kết hợp các chỉ số trung bình di chuyển và chỉ số di chuyển, thực hiện tín hiệu chéo của cả hai chỉ số để phát ra tín hiệu mua và bán. Đồng thời, chiến lược này thêm vào lệnh dừng động để kiểm soát rủi ro.

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

  1. Xây dựng chỉ số trung bình di chuyển bằng cách sử dụng EMA 9 ngày ngắn hạn và EMA 21 ngày dài hạn. Xây dựng tín hiệu mua khi EMA dài hạn trên EMA ngắn hạn; Xây dựng tín hiệu bán khi EMA dài hạn dưới EMA ngắn hạn.
  2. Sử dụng ADX, + DI và -DI để xây dựng chỉ số DMI. Khi + DI trên DI, DI là tín hiệu mua; Khi - DI trên DI, + DI là tín hiệu bán.
  3. Kết hợp các tín hiệu của chỉ số EMA và chỉ số DMI, chỉ khi cả hai chỉ số đáp ứng các điều kiện, tín hiệu mua và bán thực tế sẽ được phát ra.
  4. Sử dụng dừng động theo dõi giá cao nhất / giá thấp nhất để dừng lỗ.

Phân tích lợi thế

  1. Chỉ số kép kết hợp các tín hiệu lọc giả để tăng độ chính xác của tín hiệu. Chỉ số ngắn hạn nắm bắt xu hướng thay đổi; chỉ số dài hạn xác định hướng của xu hướng lớn.
  2. Các chỉ số động lực có thể bắt kịp xu hướng giá và có một số đặc điểm dẫn đầu.
  3. Cơ chế dừng lỗ động có thể khóa lợi nhuận tối đa, đồng thời kiểm soát rủi ro.

Phân tích rủi ro

  1. Khi hai chỉ số được kết hợp, tín hiệu mua và bán sẽ giảm, và bạn có thể bỏ lỡ một số cơ hội.
  2. Thiết lập tham số chỉ số không đúng có thể dẫn đến tần số giao dịch quá cao hoặc chất lượng tín hiệu kém.
  3. Cài đặt dừng lỗ quá thoải mái sẽ làm tăng nguy cơ mất mát; thiết lập quá nghiêm ngặt sẽ làm tăng nguy cơ mất khớp với xu hướng.

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

  1. Kiểm tra các tham số ngắn hạn dài của EMA với các độ dài khác nhau để tìm tham số tối ưu.
  2. Kiểm tra các tùy chọn tham số ADX khác nhau để cải thiện chất lượng tín hiệu DMI.
  3. Tối ưu hóa các tham số dừng lỗ để nó có thể khóa lợi nhuận tối đa và kiểm soát rủi ro.
  4. Có thể xem xét thêm các chỉ số sóng lọc để cải thiện hơn nữa chất lượng tín hiệu.

Tóm tắt

Chiến lược này tích hợp các lợi thế của các chỉ số chuyển động trung bình và động lực, tín hiệu xác nhận kép, sử dụng sự tương tác giữa các chỉ số để nâng cao khả năng lợi nhuận của chiến lược. Đồng thời, cơ chế dừng lỗ theo dõi động có thể kiểm soát rủi ro của chiến lược một cách hiệu quả.

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

//@version=5
strategy("Combined EMA and DMI Strategy with Enhanced Table", overlay=true)

// Input parameters for EMA
shortTermEMA = input.int(9, title="Short-Term EMA Period")
longTermEMA = input.int(21, title="Long-Term EMA Period")
riskPercentageEMA = input.float(1, title="Risk Percentage EMA", minval=0.1, maxval=5, step=0.1)

// Calculate EMAs
emaShort = ta.ema(close, shortTermEMA)
emaLong = ta.ema(close, longTermEMA)

// EMA Crossover Strategy
longConditionEMA = emaShort > emaLong and emaShort[1] <= emaLong[1]
shortConditionEMA = emaShort < emaLong and emaShort[1] >= emaLong[1]

// Input parameters for DMI
adxlen = input(17, title="ADX Smoothing")
dilen = input(17, title="DI Length")

// DMI Logic
dirmov(len) =>
    up = ta.change(high)
    down = -ta.change(low)
    truerange = ta.tr
    plus = fixnan(100 * ta.rma(up > down and up > 0 ? up : 0, len) / truerange)
    minus = fixnan(100 * ta.rma(down > up and down > 0 ? down : 0, len) / truerange)
    [plus, minus]

adx(dilen, adxlen) => 
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adxValue = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
    [adxValue, plus, minus]

[adxValue, up, down] = adx(dilen, adxlen)

// DMI Conditions
buyConditionDMI = up > down or (up and adxValue > down)
sellConditionDMI = down > up or (down and adxValue > up)

// Combined Conditions for Entry
longEntryCondition = longConditionEMA and buyConditionDMI
shortEntryCondition = shortConditionEMA and sellConditionDMI

// Combined Conditions for Exit
longExitCondition = shortConditionEMA
shortExitCondition = longConditionEMA

// Enter long trade based on combined conditions
if (longEntryCondition)
    strategy.entry("Long", strategy.long)

// Enter short trade based on combined conditions
if (shortEntryCondition)
    strategy.entry("Short", strategy.short)

// Exit trades
if (longExitCondition)
    strategy.close("Long")

if (shortExitCondition)
    strategy.close("Short")

// Plot EMAs
plot(emaShort, color=color.blue, title="Short-Term EMA")
plot(emaLong, color=color.red, title="Long-Term EMA")

// Create and fill the enhanced table
var tbl = table.new(position.top_right, 4, 1)
if (barstate.islast)
    table.cell(tbl, 0, 0, "ADX: " + str.tostring(adxValue), bgcolor=color.new(color.red, 90), width=15, height=4)
    table.cell(tbl, 1, 0, "+DI: " + str.tostring(up), bgcolor=color.new(color.blue, 90), width=15, height=4)
    table.cell(tbl, 2, 0, "-DI: " + str.tostring(down), bgcolor=color.new(color.orange, 90), width=15, height=4)