Chiến lược chuyển đổi chỉ số dao động

Tác giả:ChaoZhang, Ngày: 2023-12-22 14:21:28
Tags:

img

Tổng quan

Chiến lược biến đổi chỉ số dao động sử dụng các giao thoa giữa chỉ số dao động 3-10 của Bressert và đường trung bình di chuyển đơn giản 16 ngày của nó để tạo ra tín hiệu giao dịch. Nó phù hợp với giao dịch trong ngày và qua đêm.

Chiến lược logic

Chiến lược này dựa trên chỉ số dao động 3-10 của Bressert, đó là sự khác biệt giữa trung bình động theo cấp số nhân 3 ngày và 10 ngày. Nó đi dài khi đường nhanh (3-10 dao động) vượt qua đường chậm (16-ngày SMA), và đi ngắn khi đường nhanh vượt qua đường chậm.

Đặc biệt, chiến lược này đầu tiên tính toán EMA 3 ngày, EMA 10 ngày và sự khác biệt của chúng dưới dạng chỉ số dao động. Sau đó nó tính toán trung bình di chuyển đơn giản 16 ngày của chỉ số dao động dưới dạng đường tín hiệu. Nó đi dài khi chỉ số dao động vượt qua đường tín hiệu và đi ngắn khi nó vượt qua đường tín hiệu. Các giao dịch đảo ngược được phép.

Phân tích lợi thế

  1. Sử dụng chỉ số dao động Bressert cổ điển mà là khá hiệu quả
  2. Tạo tín hiệu giao dịch rõ ràng với đường chéo nhanh và chậm
  3. Cho phép các giao dịch đảo ngược thích nghi với các chế độ thị trường khác nhau
  4. Có thể được sử dụng trong cả giao dịch trong ngày và giao dịch qua đêm

Phân tích rủi ro

  1. Hiệu suất dao động Bressert không ổn định với biến động lợi nhuận/mất
  2. Đi ngang đường nhanh và chậm có thể tạo ra tín hiệu sai
  3. Các giao dịch đảo ngược có rủi ro cao hơn và nên được sử dụng thận trọng
  4. Yêu cầu dừng lỗ cho giao dịch trong ngày và kích thước vị trí cho giao dịch qua đêm

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

  1. Tối ưu hóa các thông số bằng cách điều chỉnh các khoảng thời gian trung bình động
  2. Thêm bộ lọc bằng cách sử dụng các chỉ số khác hoặc hành động giá
  3. Thêm chiến lược dừng lỗ để hạn chế kích thước lỗ giao dịch duy nhất
  4. Tối ưu hóa quản lý vốn để giảm tác động tổng thể của việc rút vốn

Kết luận

Chiến lược biến đổi chỉ số dao động là một chiến lược giao dịch ngắn hạn tạo ra các tín hiệu từ 3-10 dao động và đường giao thông tín hiệu. Nó đơn giản và thực tế cho cả sử dụng trong ngày và qua đêm, nhưng có biến động PnL và rủi ro tín hiệu sai. Các bộ lọc bổ sung, dừng lỗ và kích thước vị trí được yêu cầu để tinh chỉnh chiến lược. Với tối ưu hóa thích hợp, nó có thể đạt được alpha nhất quán.


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 27/03/2017
// TradeStation does not allow the user to make a Multi Data Chart with 
// a Tick Bar Chart and any other type a chart. This indicator allows the 
// user to plot a daily 3-10 Oscillator on a Tick Bar Chart or any intraday interval.
// Walter Bressert's 3-10 Oscillator is a detrending oscillator derived 
// from subtracting a 10 day moving average from a 3 day moving average. 
// The second plot is an 16 day simple moving average of the 3-10 Oscillator. 
// The 16 period moving average is the slow line and the 3/10 oscillator is 
// the fast line.
// For more information on the 3-10 Oscillator see Walter Bressert's book 
// "The Power of Oscillator/Cycle Combinations" 
//
// 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="D_Three Ten Osc", shorttitle="D_Three Ten Osc")
Length1 = input(3, minval=1)
Length2 = input(10, minval=1)
Length3 = input(16, minval=1)
reverse = input(false, title="Trade reverse")
hline(0, color=green, linestyle=line)
xPrice =  request.security(syminfo.tickerid,"D", hl2)
xfastMA = ema(xPrice, Length1)
xslowMA = ema(xPrice, Length2)
xMACD = xfastMA - xslowMA
xSignal = sma(xMACD, Length3)
pos = iff(xSignal > xMACD, -1,
	     iff(xSignal < xMACD, 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(request.security(syminfo.tickerid, "D", xMACD), color=blue, title="D_Three Ten Osc")
plot(request.security(syminfo.tickerid, "D", xSignal), color=red, title="D_Three Ave")

Thêm nữa