Strategi ini menghasilkan isyarat perdagangan trend di kawasan tanpa rintangan dengan mengira berapa lama harga tinggal di kawasan yang berbeza dan menentukan sama ada harga memasuki kawasan tanpa rintangan baru. Strategi ini termasuk dalam kategori strategi trend tracking.
Mengira peratusan harga yang tinggal berhampiran tahap semasa dalam tempoh N kitaran lalu sebagai ukuran geseran harga.
Menentukan sama ada harga telah memasuki kawasan geseran rendah yang mempunyai sedikit perhentian pada masa lalu, sebagai kawasan tanpa rintangan yang menghasilkan isyarat.
Menggunakan Garis Rata-rata Bergerak Berpadan untuk menentukan arah trend terkini, dan melakukan perdagangan trend apabila terdapat penembusan di zon bebas rintangan.
Apabila harga kembali ke zon geseran tinggi, penarikan semula penarikan semula berlaku.
Parameter perdagangan boleh disesuaikan, termasuk kitaran penghakiman zon gesekan, penembusan masuk ke zon dan sebagainya.
Menggunakan harga geseran untuk menentukan kawasan bebas rintangan, mengelakkan kawasan goyah.
Garis purata cepat menjejaki trend terkini, menggunakan arah penilaian gabungan.
Antara muka visual yang intuitif, menunjukkan kawasan geseran harga.
Parameter lalai dioptimumkan untuk perdagangan frekuensi tinggi cryptocurrency.
Peraturan-peraturan dasar adalah ringkas dan jelas, mudah difahami dan diubah suai.
Friksi harga tidak dapat meramalkan pergerakan harga sepenuhnya.
Penghakiman masa yang cepat mungkin tidak tepat.
Tidak boleh masuk dan keluar dari pasaran dengan lancar.
Mungkin ada risiko terlalu sesuai apabila dioptimumkan
Parameter tetap mungkin tidak berkesan apabila pasaran berubah secara mendadak.
Uji parameter kitaran yang berbeza untuk mengira geseran harga.
Penilaian pelbagai jenis garis purata untuk menilai trend terkini.
Mengoptimumkan parameter untuk menembusi zon bebas rintangan, meningkatkan kestabilan strategi.
Tambah strategi Hentikan Kerosakan (Stop Loss Stop) untuk menguruskan risiko dagangan.
Pertimbangkan untuk menggunakan parameter dinamik untuk menyesuaikan diri dengan perubahan pasaran.
Ujian semula dilakukan pada lebih banyak jenis dan kitaran.
Strategi ini mempunyai kelebihan tertentu untuk berdagang dengan mencari kawasan pecah trend berkemungkinan tinggi melalui harga geseran. Tetapi ada juga batasan parameter tetap. Dengan meningkatkan mekanisme pengoptimuman parameter dinamik, pengurusan risiko dan sebagainya, strategi ini dapat dibuat lebih stabil dan cekap.
/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//made for 30m chart with BTCUSD or other cryptocurrency
strategy("LUBE",overlay=false )
friction=0.0
barsback=input(500,"bars back to measure friction",step=100)
flevel=input(50,"0-100 friction level to stop trade",step=2)
tlevel=input(-10,"pic lower than 0 to number selected above to initiate trade",step=2)
fl=flevel/100
tl=tlevel/100
for i = 1 to barsback
friction := if high[i] >= close and low[i] <= close
friction+(1+barsback)/(i+barsback)
else
friction
range=input(100,"bars back to measure lowest friction",step=10)
lowf = lowest(friction,range)
highf = highest(friction,range)
midf = (lowf*(1-fl)+highf*fl)
lowf2 = (lowf*(1-tl)+highf*tl)
plot(friction)
m=plot(midf[5],color=color.red)
l=plot(lowf2[5],color=color.white)
h=plot(highf[5],color=color.white)
fill(l,h,color.white)
src = input(title="Source", type=input.source, defval=close)
//FIR Filter
_fir(src) =>
(4 * src + 3 * nz(src[1]) + 2 * nz(src[2]) + nz(src[3])) / 10
fir = _fir(src)
trend = fir > fir[1]? 1:-1
//bgcolor(trend==1?color.lime:color.red,transp=50)
long=friction<lowf2[5] and trend == 1
short=friction<lowf2[5] and trend == -1
end=friction > midf[5]
keeplong=0
keeplong:=long?1:nz(keeplong[1])
keeplong:=short or end?0:keeplong
keepshort=0
keepshort:=short?1:nz(keepshort[1])
keepshort:=long or end?0:keepshort
bgcolor(keeplong==1?color.lime:keepshort==1?color.red:na,transp=50)
leverage=input(2,"leverage",step=.5)
enableshort=input(true,"enable shorts?")
barcount=0
barcount:=nz(barcount[1])+1
contracts=min(max(.000001,(strategy.equity/close)*leverage),50000)
strategy.entry("Long",strategy.long,when=long and barcount>20, qty=contracts)
strategy.close("Long",when=short or end )
strategy.entry("Short",strategy.short,when=short and enableshort==true and barcount>20, qty=contracts)
strategy.close("Short",when=(long or end) and enableshort==true)
alertcondition(keeplong==1 and keeplong[1]==0,"LONG")
alertcondition(keepshort==1 and keepshort[1]==0,"SHORT")
alertcondition((keeplong[1]==1 or keepshort[1]==1) and (keeplong==0 and keepshort==0),"CLOSE TRADE")