Chiến lược giao dịch song hướng chỉ số


Ngày tạo: 2023-12-19 14:13:52 sửa đổi lần cuối: 2023-12-19 14:13:52
sao chép: 0 Số nhấp chuột: 669
1
tập trung vào
1621
Người theo dõi

Chiến lược giao dịch song hướng chỉ số

Tổng quan

Chiến lược này thực hiện giao dịch hai chiều bằng cách tính toán chỉ số chuyển động của hàng hóa ((DI) và kết hợp các tham số giới hạn. Làm nhiều khi DI + lớn hơn DI - một tham số giới hạn và làm trống khi DI - lớn hơn DI + một tham số giới hạn.

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

Chỉ số trung tâm của chiến lược này là chỉ số chuyển động ((DI) ≠ DI được tính bằng công thức sau:

DI + = (DM + / phạm vi thực tế) * 100 DI- = (DM- / phạm vi thực tế) * 100

Trong đó, DM + đại diện cho chuyển động đa đầu, DM - đại diện cho chuyển động không đầu. Phạm vi thực đại diện cho tỷ lệ dao động gần đây bằng cách tính toán giá cao nhất, giá thấp nhất trong ba ngày và giá đóng cửa ngày hôm qua.

Theo định nghĩa của DI, khi DI+ > DI- thì cho thấy lực lượng đầu trống lớn hơn lực lượng đầu trống, thuộc thị trường đầu trống; khi DI- > DI+ thì cho thấy lực lượng đầu trống lớn hơn lực lượng đầu trống, thuộc thị trường đầu trống.

Chiến lược này sử dụng tính năng này để đặt một tham số giới hạn. Khi DI + lớn hơn DI - một tham số giới hạn, đánh giá hiện tại là thị trường đầu nhiều, làm nhiều; Khi DI - lớn hơn DI + một tham số giới hạn, đánh giá hiện tại là thị trường đầu trống, làm trống.

Ví dụ, nếu bạn đặt tham số giới hạn là 3, các quy tắc giao dịch cụ thể là:

  1. Làm nhiều hơn khi DI+ - DI- > 3
  2. Làm trống khi DI- - DI+ > 3

Vì thường có sự dao động nhỏ giữa DI+ và DI- nên việc đặt tham số giới hạn có thể lọc ra một số tín hiệu giao dịch không có định hướng rõ ràng, giảm giao dịch không cần thiết, đây là một lợi thế của chiến lược này.

Phân tích lợi thế

Chiến lược này có những lợi thế chính như sau:

  1. Sử dụng DI để đánh giá tình hình có định hướng, đáng tin cậy cao

DI bằng cách tính toán sức mạnh của hai bên nhiều không gian để đánh giá trực tiếp xu hướng thị trường, không có thuật toán phức tạp như phù hợp với đường cong, lý thuyết đơn giản và đáng tin cậy.

  1. Thiết lập các tham số giới hạn có thể lọc hiệu quả tín hiệu

Bằng cách hạn chế các tham số lọc không có biến động nhỏ theo hướng rõ ràng, chỉ chọn các giai đoạn có hướng mạnh mẽ rõ ràng để giao dịch, tránh bị đặt.

  1. Thực hiện giao dịch hai chiều tự động

Vị trí đa vị trí trống có thể được tự động chuyển đổi theo chỉ số DI, không cần phán đoán bằng tay, làm giảm độ khó giao dịch.

  1. Thời gian giao dịch tùy chỉnh

Cài đặt hỗ trợ giao dịch chỉ trong phạm vi ngày tùy chỉnh, tự động thanh toán khi kết thúc, linh hoạt và tiện lợi.

  1. Bạn có thể chọn chỉ làm nhiều hoặc chỉ làm trống tùy theo tình huống

Thông qua chuyển đổi đa không chỉ có thể chọn tín hiệu một chiều, thực hiện chỉ làm nhiều hoặc chỉ làm trống, thích nghi với môi trường thị trường khác nhau.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. DI có thể phát tín hiệu sai

Khi thị trường biến động mạnh, DI có thể phát tín hiệu sai trong thời gian ngắn, dẫn đến thất bại trong giao dịch. Cần kết hợp các chỉ số khác để kiểm tra.

  1. Thiết lập tham số giới hạn không đúng

Thiết lập các tham số giới hạn quá lớn hoặc quá nhỏ có thể dẫn đến tín hiệu giao dịch quá ít hoặc quá nhiều, cần điều chỉnh các tham số theo thị trường.

  1. Không thể đoán được kết thúc của xu hướng

DI chỉ có thể đánh giá xu hướng hiện tại, không thể xác định xu hướng có kết thúc hay đảo ngược, cần kết hợp các chỉ số khác.

Các giải pháp đối phó với rủi ro bao gồm:

  1. Bộ lọc tín hiệu DI kết hợp với các chỉ số như trung bình di chuyển

  2. Điều chỉnh tham số giới hạn theo kết quả đo lại

  3. Kết hợp với Volumes, MACD và những người khác để đánh giá liệu xu hướng có đảo ngược hay không

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

Chiến lược này có thể được tiếp tục cải thiện bằng cách:

  1. Kết hợp với các chỉ số khác để đánh giá xu hướng như biểu đồ dư luận

Các chỉ số trực quan hơn về sức mạnh của không khí, chẳng hạn như biểu đồ dư luận, kết hợp với DI, có thể giúp tăng độ chính xác của phán đoán.

  1. Tham gia chiến lược dừng lỗ

Thiết lập điểm dừng động, thời gian hoặc tỷ lệ dừng lỗ, có thể khóa lợi nhuận và giảm lỗ.

  1. Điều chỉnh tham số cho các giống cụ thể

Điều chỉnh các tham số giới hạn và thời gian giao dịch theo đặc tính giao dịch của các giống khác nhau có thể giúp cải thiện hiệu quả chiến lược.

  1. Tối ưu hóa động lực bằng công nghệ học máy

Sử dụng các kỹ thuật như học tăng cường để thiết lập các tham số tối ưu hóa tín hiệu dựa trên ổ đĩa thực.

Tóm tắt

Chiến lược này khá đơn giản và thực tế. Nó sử dụng các phương pháp tính toán của DI để xác định hướng của xu hướng; bằng cách hạn chế các tham số để lọc tín hiệu; có thể giao dịch hai chiều, hoặc chỉ có thể làm nhiều hoặc trống; hỗ trợ thời gian giao dịch được thiết lập. Ưu điểm chính là độ tin cậy cao, tín hiệu lọc hiệu quả.

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

//@version=3
strategy("Noro's DI Strategy", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(title="Length", defval=14)
limit = input(3, title = "limit, %")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//DI
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedTrueRange = 0.0
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementMinus = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100

//Trend
trend = 0
trend := DIPlus > DIMinus + limit ? 1 : DIPlus < DIMinus - limit ? -1 : trend[1]

//Background
col = trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Lines
plot(DIPlus, color=lime, title="DI+", linewidth = 3)
plot(DIMinus, color=red, title="DI-", linewidth = 3)

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if trend == 1
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if trend == -1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()