Chiến lược dải gyroscopic dựa trên nhiều khung thời gian và chiều rộng trung bình

Tác giả:ChaoZhang, Ngày: 2023-11-24 17:29:39
Tags:

img

Tổng quan

Chiến lược này được gọi là Gyroscopic Bands Strategy Based on Multi Time Frame and Average Amplitude. Ý tưởng chính của nó là xây dựng các tín hiệu giao dịch dựa trên độ phình trung bình giữa giá và một hạt phù hợp với quỹ đạo giá.

Chiến lược logic

Chiến lược đầu tiên xác định một hạt phù hợp với quỹ đạo giá. Dưới ảnh hưởng của trọng lực và quán tính, quỹ đạo của hạt sẽ dao động xung quanh giá. Sau đó chúng tôi tính toán độ lệch trung bình giữa hạt và giá, và sử dụng nó để xây dựng các dải trên và dưới. Khi giá vượt qua dải trên hoặc dưới, các tín hiệu giao dịch được tạo ra.

Cụ thể, công thức vị trí hạt được xác định trong chiến lược là:

pos:=if pos<close  
     nz(pos[1])+grav+traj
else
     nz(pos[1])-(grav)+traj 

Ở đây.gravđại diện cho thuật ngữ trọng lực làm cho hạt gần với giá;trajđại diện cho thuật ngữ quán tính giữ xu hướng chuyển động của hạt. Sự kết hợp của hai mục này làm cho hạt dao động xung quanh giá.

Sau đó chúng ta tính toán độ lệch trung bìnhavgdistgiữa giá và hạt, và sử dụng nó để xây dựng dải trên và dưới:

bbl=pos-sma(avgdist,varb)
bbh=pos+sma(avgdist,varb)  

Cuối cùng, đi dài khi giá lớn hơn dải trên, và đi ngắn khi thấp hơn dải dưới.

Ưu điểm

So với các chiến lược trung bình động truyền thống, chiến lược này có những lợi thế sau:

  1. Sử dụng quỹ đạo hạt để mô phỏng tốt hơn biến động giá;
  2. Các băng tần trên và dưới có thể được điều chỉnh thích nghi dựa trên chiều rộng trung bình trong lịch sử, điều này tạo điều kiện thuận lợi cho việc thu thập các bước đột phá;
  3. Thiết kế khung thời gian đa có thể chuyển đổi giữa khung thời gian cao và thấp để nắm bắt nhiều cơ hội giao dịch hơn.

Rủi ro

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

  1. Các thiết lập tham số không chính xác của chuyển động hạt có thể gây ra tín hiệu sai hoặc tín hiệu sai;
  2. Có thể xảy ra xung đột tín hiệu khi chuyển đổi giữa nhiều khung thời gian;
  3. Các tín hiệu đột phá của dải trên và dưới có thể làm tăng rủi ro dừng lỗ.

Các biện pháp quản lý rủi ro tương ứng bao gồm: tối ưu hóa các tham số để giảm tín hiệu sai, xác định các quy tắc thời gian khung rõ ràng, thiết lập các vị trí dừng lỗ thích hợp, v.v.

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

Chiến lược này có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tối ưu hóa các thông số liên quan đến chuyển động hạt để phù hợp với quỹ đạo giá;
  2. Tăng số lớp khung thời gian để xác nhận tín hiệu ở khung thời gian cao hơn;
  3. Thêm các chỉ số biến động để tránh tín hiệu trong thời gian biến động thị trường mạnh mẽ;
  4. Tối ưu hóa các chiến lược dừng lỗ để giảm lỗ dừng duy nhất.

Kết luận

Chiến lược này cải thiện chiến lược trung bình động bằng cách giới thiệu phù hợp quỹ đạo giá. Nó có các tính năng như các tham số thích nghi, khung thời gian đa, tối ưu hóa stop loss, vv. Chìa khóa là tìm ra phương trình chuyển động hạt phù hợp để mô phỏng giá. Mặc dù cần thử nghiệm và tối ưu hóa thêm, ý tưởng cơ bản là khả thi và đáng nghiên cứu thêm.


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

//@version=4
//2 revert
strategy("Jomy's Gyroscopic Bands",precision=8,commission_value=.03,overlay=true,initial_capital =10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100,  pyramiding=0)//,calc_on_order_fills= true, calc_on_every_tick=false) 
leverage=input(1,"leverage")
a=0
a:= if volume > -1
    nz(a[1])+1
else
    nz(a)
    
vara=input(4.0,"variable a (10 to the power of __ ",step=.5)
vara:=pow(10,vara)
varb=input(12,"variable b")
pos=0.0
pos:=if a<=5
    close
else
    nz(pos[1])
grav=1/sqrt((close*close))*vara
traj=0.0
traj:=(nz(close[1])-nz(close[2])+nz(traj[1])*varb)/(varb+1)
pos:=if pos<close
    nz(pos[1])+grav+traj
else
    nz(pos[1])-(grav)+traj

plot(pos,color=color.white)
plot(close)

avgdist=abs(close-pos)
bbl=pos-sma(avgdist,varb)
bbh=pos+sma(avgdist,varb)

plbbh=plot(bbh,color=color.red)
plbbl=plot(bbl,color=color.red)

long = close>pos
short = close<pos

fill(plbbh,plbbl,color=long?color.lime:color.red)
//bgcolor(close>bbh?color.lime:close<bbl?color.red:na,transp=90)

strategy.entry("Long1",strategy.long,when=long,qty=(strategy.equity*leverage/open)) 
strategy.close("Long1",when=not long)
strategy.entry("Short1",strategy.short,when=short,qty=(strategy.equity*leverage/open)) 
strategy.close("Short1",when=not short)


//plot(strategy.equity,color=color.lime,linewidth=4)

Thêm nữa