Chiến lược xếp chồng động lực của các khung thời gian khác nhau

Tác giả:ChaoZhang, Ngày: 2023-10-26 17:39:26
Tags:

img

Tổng quan

Chiến lược đắp đắp động lực chủ yếu tính toán Tỷ lệ thay đổi (ROC) trong các giai đoạn khác nhau, cân nặng và xếp chồng chúng thành một chỉ số động lực toàn diện để đánh giá hướng xu hướng. Chiến lược này xếp chồng các chỉ số động lực ngắn hạn, trung hạn và dài hạn để cân bằng xu hướng ngắn hạn và dài hạn và tránh tín hiệu sai.

Chiến lược logic

Chiến lược đầu tiên tính toán các chỉ số ROC trong khoảng thời gian 10 ngày, 15 ngày, 20 ngày, v.v. Sau đó làm mịn ROC và xếp chúng theo tỷ lệ trọng số 1-4 để có được công thức:

roc1 = (sma(roc(close,10),10)*1)
roc2 = (sma(roc(close,15),10)*2)  
...
osc = roc1+roc2+roc3+roc4+...

Trong đó roc1-roc12 đại diện cho các tính toán ROC trong các khoảng thời gian khác nhau từ 10 ngày đến 530 ngày.

Sau đó nó làm mịn osc bằng một SMA của một (bên mặc định 10) ngày để có được oscsmt.

So sánh osc với oscsmt, khi osc vượt qua oscsmt như tín hiệu tăng và đi mua. Khi osc vượt dưới oscsmt như tín hiệu giảm và đi mua.

Cuối cùng, nó có thể chọn để đảo ngược hướng giao dịch.

Ưu điểm

  1. Việc xếp chồng các chỉ số động lực ngắn hạn và dài hạn có thể nắm bắt cả xu hướng ngắn hạn và dài hạn, tránh các tín hiệu sai.

  2. So sánh osc và oscsmt có thể giảm giao dịch không cần thiết trên thị trường bên cạnh.

  3. Các thông số có thể tùy chỉnh để điều chỉnh các khoảng thời gian ROC và độ mượt mà SMA.

  4. Hướng giao dịch đảo ngược phục vụ cho các phong cách giao dịch khác nhau.

  5. Các chỉ số trực quan làm cho các điểm mua và bán trực quan.

Rủi ro và tối ưu hóa

  1. ROC rất nhạy cảm với sự bất thường của giá đột ngột, có thể tạo ra tín hiệu sai. Có thể làm tăng độ mượt mà của SMA để giảm độ nhạy của ROC.

  2. Các tham số mặc định có thể không phù hợp với tất cả các công cụ giao dịch. Cần tối ưu hóa để tìm kết hợp tham số tốt nhất dựa trên các đặc điểm khác nhau.

  3. Giao dịch chỉ dựa trên OSC và OSCSMT chéo. Có thể thêm các chỉ số khác để lọc tín hiệu và giảm lỗi.

  4. Thích hợp hơn cho giao dịch trung bình dài hạn. Có thể cần phải điều chỉnh thời gian ROC để tối ưu hóa kịch bản sử dụng.

Kết luận

Chiến lược đắp chồng động lực tính toán nhiều giai đoạn ROC để có được chỉ số động lực toàn diện, nắm bắt cả xu hướng ngắn hạn và dài hạn, tránh các tín hiệu sai. So với một ROC duy nhất, nó cải thiện đáng kể chất lượng và độ tin cậy của tín hiệu. Nhưng nó vẫn mang lại một số rủi ro theo dõi. Các thông số cần tối ưu hóa và kết hợp các chỉ số khác để tối đa hóa tính hữu ích.


/*backtest
start: 2023-09-25 00:00:00
end: 2023-10-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter 08/08/2017
// Pring's Special K is a cyclical indicator created by Martin Pring. 
// His method combines short-term, intermediate and long-term velocity 
// into one complete series. Useful tool for Long Term Investors
// Modified for any source.
//
// 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="Martin Pring's Special K Backtest", shorttitle="UCS_Pring_sK")
a = input(10, title = "Smooth" )
sources = input(title="Source",  defval=close)
reverse = input(false, title="Trade reverse")
roc1 = (sma(roc(sources,10),10)*1)
roc2 = (sma(roc(sources,15),10)*2)
roc3 = (sma(roc(sources,20),10)*3)
roc4 = (sma(roc(sources,30),15)*4)
roc5 = (sma(roc(sources,40),50)*1)
roc6 = (sma(roc(sources,65),65)*2)
roc7 = (sma(roc(sources,75),75)*3)
roc8 = (sma(roc(sources,100),100)*4)
roc9 = (sma(roc(sources,195),130)*1)
roc10 = (sma(roc(sources,265),130)*2)
roc11 = (sma(roc(sources,390),130)*3)
roc12 = (sma(roc(sources,530),195)*4)
osc = roc1+roc2+roc3+roc4+roc5+roc6+roc7+roc8+roc9+roc10+roc11+roc12
oscsmt = sma(osc,a)
pos = iff(osc > oscsmt, 1,
	     iff(osc < oscsmt, -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(osc, color=blue, title="Martin Pring's Special K")
plot(oscsmt, color = red, title = "Smooth")
hline(0, title="Zero Line")

Thêm nữa