Chiến lược giao dịch định lượng theo dao động giá theo định hướng

Tác giả:ChaoZhang, Ngày: 2023-11-24 11:22:30
Tags:

Tổng quan chiến lược

Chiến lược được đặt tên là Detrended Price Oscillator Quantitative Trading Strategy. Nó tạo ra các tín hiệu giao dịch dựa trên chỉ số Detrended Price Oscillator, đó là một chiến lược chỉ số kỹ thuật điển hình.

Chiến lược logic

Cốt lõi của chiến lược này là chỉ số dao động giá giảm (DPO). DPO tương tự như đường trung bình động, có thể lọc các xu hướng dài hạn trong giá để làm cho biến động chu kỳ rõ rệt hơn. Cụ thể, DPO so sánh giá với đường trung bình động đơn giản N ngày của họ. Khi giá trên đường trung bình động, DPO là dương; khi giá dưới đường trung bình động, DPO là âm. Điều này dẫn đến một dao động dao động xung quanh trục 0. Chúng ta có thể sử dụng dương / âm của DPO để đánh giá sự gia tăng / giảm giá tương đối với xu hướng.

Chiến lược này đặt tham số N thành 14 và xây dựng chỉ số DPO 14 ngày. Khi DPO dương tính, một tín hiệu dài được phát hành. Khi DPO âm tính, một tín hiệu ngắn được phát hành.

Ưu điểm

  • DPO về cơ bản là một chỉ số lọc có thể xác định hiệu quả chu kỳ giá trung hạn.
  • DPO có cấu trúc đơn giản và dễ hiểu.
  • So với chính giá cả, mô hình chỉ số DPO được chuẩn hóa hơn và dễ đánh giá hơn, làm cho nó phù hợp với việc xây dựng các quy tắc.

Rủi ro

  • Giống như hầu hết các chiến lược chỉ số kỹ thuật, chiến lược DPO có xu hướng tạo ra các tín hiệu giao dịch không cần thiết thường xuyên.
  • DPO rất nhạy cảm với tham số N. Các lựa chọn tham số khác nhau có thể dẫn đến hiệu quả chiến lược rất khác nhau.
  • Trong các thị trường xu hướng, thời gian giữ các chiến lược DPO có thể quá dài để ngăn chặn tổn thất kịp thời, gây ra một số nguy cơ mất máu.

Để giảm thiểu rủi ro, tối ưu hóa có thể được xem xét trong các khía cạnh sau:

  1. Thêm các cơ chế dừng lỗ để kiểm soát lỗ đơn.

  2. Điều chỉnh giá trị của tham số N để tìm tham số tối ưu.

  3. Bao gồm các chỉ số xu hướng để tránh giao dịch chống lại các xu hướng quan trọng.

Kết luận

Chiến lược này tạo ra các tín hiệu giao dịch dựa trên chỉ số dao động giá giảm. Bằng cách so sánh với trung bình động, chỉ số này lọc các xu hướng dài hạn trong giá để làm cho các đặc điểm chu kỳ giá rõ rệt hơn. Điều này giúp khám phá một số cơ hội giao dịch ẩn. Đồng thời, nó cũng phải đối mặt với các vấn đề như độ nhạy của tham số, lọc, vv. Vẫn còn nhiều chỗ để cải thiện hiệu quả thông qua tối ưu hóa liên tục.


/*backtest
start: 2023-11-16 00:00:00
end: 2023-11-20 08:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 31/03/2017
// The Detrend Price Osc indicator is similar to a moving average, 
// in that it filters out trends in prices to more easily identify 
// cycles. The indicator is an attempt to define cycles in a trend 
// by drawing a moving average as a horizontal straight line and 
// placing prices along the line according to their relation to a 
// moving average. It provides a means of identifying underlying 
// cycles not apparent when the moving average is viewed within a 
// price chart. Cycles of a longer duration than the Length (number 
// of bars used to calculate the Detrend Price Osc) are effectively 
// filtered or removed by the oscillator.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Detrended Price Oscillator", shorttitle="DPO")
Length = input(14, minval=1)
Series = input(title="Price",  defval="close")
reverse = input(false, title="Trade reverse")
hline(0, color=green, linestyle=line)
xPrice = close
xsma = sma(xPrice, Length)
nRes = xPrice - xsma
pos = iff(nRes > 0, 1,
	     iff(nRes < 0, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nRes, color=red, title="Detrended Price Oscillator")

Thêm nữa