Xu hướng ADX dầu thô theo chiến lược

Tác giả:ChaoZhang, Ngày: 2024-01-25 15:18:15
Tags:

img

Tổng quan

Chiến lược này được chuyển thể từ chiến lược giao dịch tương lai dầu thô miễn phí của Kevin Davey. Nó sử dụng chỉ số ADX để xác định xu hướng trên thị trường dầu thô và, kết hợp với nguyên tắc phá vỡ giá, thực hiện một chiến lược giao dịch tự động đơn giản và thực tế cho dầu thô.

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

  1. Tính toán chỉ số ADX 14 giai đoạn
  2. Khi ADX> 10, thị trường được coi là có xu hướng
  3. Nếu giá đóng cửa cao hơn giá đóng cửa 65 thanh trước đây, nó cho thấy một sự đột phá giá và một tín hiệu dài
  4. Nếu giá đóng cửa thấp hơn giá đóng cửa 65 thanh trước đây, nó cho thấy một sự đột phá giá và một tín hiệu ngắn
  5. Thiết lập dừng lỗ và lấy lợi nhuận sau khi nhập vào vị trí

Chiến lược chủ yếu dựa trên chỉ số ADX để xác định xu hướng, và tạo ra các tín hiệu giao dịch dựa trên sự đột phá giá theo chu kỳ cố định trong điều kiện xu hướng.

Phân tích lợi thế

  • Sử dụng ADX để xác định xu hướng và tránh bỏ lỡ cơ hội xu hướng
  • Sự đột phá giá theo chu kỳ cố định tạo ra tín hiệu với kết quả backtest tốt
  • Mã trực quan và đơn giản, dễ hiểu và sửa đổi
  • Kevin Davey's xác minh giao dịch trực tiếp nhiều năm, không phù hợp với đường cong

Phân tích rủi ro

  • Là chỉ số chính, ADX nhạy cảm với lựa chọn tham số và lựa chọn chu kỳ đột phá
  • Các vụ phá vỡ chu kỳ cố định có thể bỏ lỡ một số cơ hội
  • Các thiết lập dừng lỗ và lấy lợi nhuận không đúng có thể làm tăng lỗ
  • Có thể có sự khác biệt giữa giao dịch trực tiếp và kết quả backtest

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

  • Tối ưu hóa các thông số ADX và chu kỳ đột phá
  • Tăng điều chỉnh động của kích thước vị trí
  • Tiếp tục sửa đổi và cải thiện chiến lược dựa trên kết quả backtest và xác minh giao dịch trực tiếp
  • Giới thiệu kỹ thuật học máy và học sâu để tối ưu hóa chiến lược

Tóm lại

Tổng thể, đây là một chiến lược giao dịch dầu thô rất thực tế. Nó sử dụng chỉ số ADX để xác định xu hướng rất hợp lý. Nguyên tắc đột phá giá đơn giản và hiệu quả với kết quả kiểm tra hậu quả tốt. Đồng thời, là chiến lược miễn phí công khai của Kevin Davey, nó có độ tin cậy rất mạnh trong chiến đấu thực tế. Mặc dù vẫn còn chỗ để cải thiện chiến lược, nhưng nó là một lựa chọn rất phù hợp cho người mới bắt đầu và các nhà giao dịch vốn nhỏ để bắt đầu và thực hành.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// Strategy idea coded from EasyLanguage to Pinescript
//@version=5
strategy("Kevin Davey Crude free crude oil strategy", shorttitle="CO Fut", format=format.price, precision=2, overlay = true, calc_on_every_tick = true)
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = ta.change(high)
	down = -ta.change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = ta.rma(ta.tr, len)
	plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
	minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
plot(sig, color=color.red, title="ADX")

buy = sig > 10 and (close - close[65]) > 0 and (close - close[65])[1] < 0
sell = sig > 10 and (close - close[65]) < 0 and (close - close[65])[1] > 0

plotshape(buy, style = shape.arrowup, location = location.belowbar,size = size.huge)
plotshape(sell, style = shape.arrowdown, location = location.abovebar,size = size.huge)

if buy
	strategy.entry("long", strategy.long)
if sell
	strategy.entry("short", strategy.short)

if strategy.position_size != 0
	strategy.exit("long", profit = 450, loss = 300)
	strategy.exit("short", profit = 450, loss = 300)


// GetTickValue() returns the currency value of the instrument's
// smallest possible price movement.
GetTickValue() =>
    syminfo.mintick * syminfo.pointvalue

// On the last historical bar, make a label to display the
// instrument's tick value
if barstate.islastconfirmedhistory
    label.new(x=bar_index + 1, y=close, style=label.style_label_left,
         color=color.black, textcolor=color.white, size=size.large, 
         text=syminfo.ticker + " has a tick value of:\n" + 
             syminfo.currency + " " + str.tostring(GetTickValue()))

Thêm nữa