Strategi ini disebut
Strategi pertama mendefinisikan partikel yang sesuai dengan lintasan harga. Di bawah pengaruh gravitasi dan inersia, lintasan partikel akan berosilasi di sekitar harga. Kemudian kita menghitung penyimpangan rata-rata antara partikel dan harga, dan menggunakannya untuk membangun band atas dan bawah. Ketika harga menembus band atas atau bawah, sinyal perdagangan dihasilkan.
Secara khusus, rumus posisi partikel yang didefinisikan dalam strategi adalah:
pos:=if pos<close
nz(pos[1])+grav+traj
else
nz(pos[1])-(grav)+traj
Di sini.grav
mewakili istilah gravitasi yang membuat partikel mendekati harga;traj
merupakan istilah inersia yang menjaga tren pergerakan partikel. Kombinasi dari kedua item ini membuat partikel berosilasi di sekitar harga.
Kemudian kita menghitung deviasi rata-rataavgdist
antara harga dan partikel, dan menggunakannya untuk membangun band atas dan bawah:
bbl=pos-sma(avgdist,varb)
bbh=pos+sma(avgdist,varb)
Akhirnya, pergi panjang ketika harga lebih besar dari band atas, dan pergi pendek ketika di bawah band bawah.
Dibandingkan dengan strategi rata-rata bergerak tradisional, strategi ini memiliki keuntungan berikut:
Strategi ini juga memiliki beberapa risiko:
Langkah-langkah manajemen risiko yang sesuai meliputi: mengoptimalkan parameter untuk mengurangi sinyal palsu, mendefinisikan aturan waktu kerangka waktu yang jelas, menetapkan posisi stop loss yang tepat, dll.
Strategi ini dapat dioptimalkan dalam aspek berikut:
Strategi ini meningkatkan strategi rata-rata bergerak dengan memperkenalkan penyesuaian lintasan harga. Ini memiliki fitur seperti parameter adaptif, beberapa kerangka waktu, pengoptimalan stop loss, dll. Kuncinya adalah menemukan persamaan gerak partikel yang sesuai untuk mensimulasikan harga. Meskipun pengujian dan pengoptimalan lebih lanjut diperlukan, ide dasar adalah layak dan layak penelitian lebih 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)