Strategi Gyroscopic Bands Berdasarkan Pelbagai Jangka Masa dan Amplitude Purata

Penulis:ChaoZhang, Tarikh: 2023-11-24 17:29:39
Tag:

img

Ringkasan

Strategi ini dinamakan Gyroscopic Bands Strategy Based on Multi Time Frame and Average Amplitude. Idea utamanya adalah untuk membina isyarat perdagangan berdasarkan amplitudo purata antara harga dan zarah yang sesuai dengan lintasan harga.

Logika Strategi

Strategi pertama menentukan zarah yang sesuai dengan lintasan harga. Di bawah pengaruh graviti dan inersia, lintasan zarah akan berayun di sekitar harga. Kemudian kita mengira penyimpangan purata antara zarah dan harga, dan menggunakannya untuk membina jalur atas dan bawah. Apabila harga memecahkan jalur atas atau bawah, isyarat perdagangan dihasilkan.

Khususnya, formula kedudukan zarah yang ditakrifkan dalam strategi adalah:

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

Di sini.gravmewakili istilah graviti yang menjadikan zarah hampir dengan harga;trajmewakili istilah inersia yang mengekalkan trend pergerakan zarah. gabungan kedua-dua item ini membuat zarah berayun di sekitar harga.

Kemudian kita mengira penyesuaian purataavgdistAntara harga dan zarah, dan menggunakannya untuk membina jalur atas dan bawah:

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

Akhirnya, pergi panjang apabila harga lebih besar daripada band atas, dan pergi pendek apabila kurang daripada band bawah.

Kelebihan

Berbanding dengan strategi purata bergerak tradisional, strategi ini mempunyai kelebihan berikut:

  1. Menggunakan lintasan zarah untuk mensimulasikan fluktuasi harga yang lebih baik;
  2. Band atas dan bawah boleh disesuaikan berdasarkan amplitudo purata sejarah, yang mendorong untuk menangkap terobosan;
  3. Reka bentuk bingkai masa berbilang boleh beralih antara bingkai masa yang tinggi dan rendah untuk menangkap lebih banyak peluang perdagangan.

Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Tetapan parameter pergerakan zarah yang tidak betul boleh menyebabkan isyarat palsu atau isyarat gagal;
  2. Konflik isyarat mungkin berlaku apabila beralih antara pelbagai bingkai masa;
  3. Isyarat penembusan jalur atas dan bawah boleh meningkatkan risiko stop loss.

Langkah pengurusan risiko yang sesuai termasuk: mengoptimumkan parameter untuk mengurangkan isyarat palsu, menentukan peraturan jangka masa yang jelas, menetapkan kedudukan stop loss yang sesuai, dll.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan parameter yang berkaitan dengan pergerakan zarah untuk menyesuaikan lintasan harga;
  2. Meningkatkan bilangan lapisan bingkai masa untuk mengesahkan isyarat pada bingkai masa yang lebih tinggi;
  3. Tambah penunjuk turun naik untuk mengelakkan isyarat semasa turun naik pasaran yang ganas;
  4. Mengoptimumkan strategi stop loss untuk mengurangkan satu stop loss.

Kesimpulan

Strategi ini meningkatkan strategi purata bergerak dengan memperkenalkan pemasangan lintasan harga. Ia mempunyai ciri-ciri seperti parameter adaptif, bingkai masa berbilang, pengoptimuman kehilangan berhenti, dan lain-lain. Kuncinya adalah untuk mencari persamaan pergerakan zarah yang sesuai untuk mensimulasikan harga. Walaupun ujian dan pengoptimuman lanjut diperlukan, idea asasnya adalah layak dan bernilai penyelidikan lanjut.


/*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)

Lebih lanjut