Chiến lược giao dịch DMI & Stochastic với Stop-loss động

Tác giả:ChaoZhang, Ngày: 2023-12-26 14:30:23
Tags:

img

Tổng quan

Chiến lược giao dịch này kết hợp Chỉ số chuyển động theo hướng (DMI) và Trình dao động chứng khoán để tạo ra tín hiệu giao dịch. DMI, với đường DI +, DI- và Chỉ số định hướng trung bình (ADX), đo sức mạnh và hướng xu hướng. Chiến lược mua dài (mua) khi DI + trên DI-, ADX trên 25 và Stochastic %K dưới 20 (đã bán quá mức). Nó bán ngắn (bán) khi DI- trên DI+, ADX vẫn ở trên 25 và Stochastic %K vượt quá 80 (đã mua quá mức). Mức dừng lỗ năng động dựa trên mức cao nhất và thấp nhất gần đây tăng cường kiểm soát rủi ro.

Chiến lược logic

Chiến lược dựa trên các thành phần chính sau:

  1. DMI để xác định xu hướng: Các đường DI+, DI- và ADX của DMI xác định hướng và sức mạnh xu hướng thị trường. DI+ trên DI- báo hiệu xu hướng tăng trong khi DI- trên DI+ báo hiệu xu hướng giảm. Giá trị ADX cao hơn cho thấy xu hướng mạnh hơn.

  2. Stochastic cho quá mua / quá bánĐường %K của Stochastic cho thấy gần gần với mức cao nhất và thấp nhất gần đây.

  3. Logic tín hiệuKết hợp DMI và Stochastic, chiến lược đi dài khi DI+>DI-(trend tăng), ADX>25 (sức mạnh xu hướng) và Stochastic %K <20 (đã bán quá mức).

  4. Đánh giá giá: Các mức đóng cửa cao nhất và thấp nhất gần đây sau khi vào được sử dụng làm mức dừng lỗ năng động, cho phép kiểm soát rủi ro thích nghi.

Phân tích lợi thế

Những lợi thế chính của chiến lược này là:

  1. Độ tin cậy cao hơn bằng cách xác nhận kép từ DMI ( xu hướng) & Stochastic (trở nên quá mua / quá bán).

  2. Động thái dừng lỗ sáng tạo dựa trên biến động giá gần đây cho phép kiểm soát rủi ro tốt hơn.

  3. Ít thông số làm cho tối ưu hóa và thực hiện dễ dàng.

  4. Khả năng thích nghi rộng trên các thị trường tài chính (cổ phiếu, ngoại hối, tiền điện tử v.v.) và khung thời gian.

  5. Pine script cho phép ứng dụng trực tiếp trên các nền tảng giao dịch.

Phân tích rủi ro

Một số rủi ro cần xem xét:

  1. Các tín hiệu sai tiềm năng trong các thị trường xu hướng khi ADX thấp.

  2. Stochastic là một chỉ số chậm trễ. thị trường có thể đã đảo ngược vào thời điểm tín hiệu. kết hợp với các chỉ số hàng đầu.

  3. Các điểm dừng động không thể tránh hoàn toàn những biến động xu hướng lớn.

  4. Chế độ điều chỉnh tham số không đầy đủ ảnh hưởng tiêu cực đến hiệu suất.

  5. Các sự kiện thiên nga đen đòi hỏi phải đình chỉ chiến lược để ngăn ngừa tổn thất bất thường.

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

Một số cách để tăng cường chiến lược:

  1. Thêm các bộ lọc với nhiều chỉ số như đường trung bình động và MACD làm tăng độ tin cậy tín hiệu.

  2. Tối ưu hóa tham số thông qua backtesting giúp khám phá các cài đặt tối ưu.

  3. Tùy chỉnh các tham số dựa trên thiết bị và khung thời gian.

  4. Kết hợp các đầu ra nhật ký chi tiết bằng cách sử dụng getInfo ((() để cho phép phân tích và tinh chỉnh dễ dàng hơn.

  5. Chụp các điểm tín hiệu và đường dừng lỗ trên biểu đồ để có thêm thông tin chi tiết.

  6. Phát triển các cảnh báo tùy chỉnh để nhận thông báo kịp thời cho phép can thiệp nhanh chóng.

Kết luận

Chiến lược này kết hợp các điểm mạnh của DMI và Stochastic Oscillator để xác định hướng xu hướng và mức mua quá mức / bán quá mức cho các mục nhập giao dịch. Cơ chế dừng lỗ năng động sáng tạo cũng cho phép kiểm soát rủi ro thông minh hơn. Với các tín hiệu đáng tin cậy, khả năng áp dụng rộng rãi, dễ sử dụng và tùy chỉnh, đây là một chiến lược giao dịch thuật toán hiệu quả. Tăng cường hơn có thể dẫn đến hiệu suất vượt trội.


/*backtest
start: 2022-12-19 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("DMI with Stochastic and Dynamic Stop-Loss", shorttitle="DMI_Stoch_SL", overlay=true)

length = input(14, title="DMI Length")
adxThreshold = input(25, title="ADX Threshold")
stochKLength = input(14, title="Stochastic %K Length")
stochDLength = input(3, title="Stochastic %D Length")

[diPlus, diMinus, adx] = ta.dmi(length, length)
stochKLine = ta.stoch(close, high, low, stochKLength)

var float lowestClose = na
var float highestClose = na
lowestClose := na(lowestClose) ? close : math.min(lowestClose, close)
highestClose := na(highestClose) ? close : math.max(highestClose, close)

longCondition = (diPlus > diMinus) and (adx > adxThreshold) and (stochKLine < 20)
shortCondition = (diMinus > diPlus) and (adx > adxThreshold) and (stochKLine > 80)

if longCondition
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", stop=lowestClose)

if shortCondition
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", stop=highestClose)

Thêm nữa