Strategi ini dinamakan
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.grav
mewakili istilah graviti yang menjadikan zarah hampir dengan harga;traj
mewakili istilah inersia yang mengekalkan trend pergerakan zarah. gabungan kedua-dua item ini membuat zarah berayun di sekitar harga.
Kemudian kita mengira penyesuaian purataavgdist
Antara 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.
Berbanding dengan strategi purata bergerak tradisional, strategi ini mempunyai kelebihan berikut:
Strategi ini juga mempunyai beberapa risiko:
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.
Strategi ini boleh dioptimumkan dalam aspek berikut:
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)