Tren Mengikuti Strategi Berdasarkan Zona Friksi Harga

Penulis:ChaoZhang, Tanggal: 2023-09-20 16:46:17
Tag:

Gambaran umum

Strategi ini mengukur waktu tinggal harga di zona yang berbeda untuk mengidentifikasi zona gesekan rendah, dan perdagangan breakout di zona ini.

Logika Strategi

  1. Menghitung rasio harga tinggal di sekitar tingkat saat ini selama periode N terakhir sebagai gesekan harga.

  2. Tentukan apakah harga memasuki zona gesekan rendah dengan waktu tinggal minimal baru-baru ini.

  3. Menggunakan MA yang diimbang cepat untuk menentukan arah tren baru-baru ini.

  4. Ambil keuntungan ketika harga kembali memasuki zona gesekan tinggi mengantisipasi pembalikan tren.

  5. Parameter yang dapat disesuaikan termasuk lookback gesekan, zona istirahat dll.

Keuntungan

  1. Pergeseran harga menghindari pasar yang berbeda dan menemukan zona terjadinya tren.

  2. MA cepat menggabungkan dengan gesekan untuk menentukan arah.

  3. Visual intuitif menampilkan tingkat gesekan harga.

  4. Parameter default dioptimalkan untuk perdagangan frekuensi tinggi kripto.

  5. Logika sederhana dan jelas mudah dimengerti dan disesuaikan.

Risiko

  1. Ketegangan harga tidak dapat sepenuhnya memprediksi pergerakan masa depan.

  2. MA cepat dapat menghasilkan waktu yang tidak akurat.

  3. Perataan masuk dan keluar dari perdagangan yang tidak efektif.

  4. Optimasi berisiko terlalu pas.

  5. Parameter tetap dapat berkinerja buruk di pasar yang tidak stabil.

Peningkatan

  1. Uji periode yang berbeda untuk menghitung gesekan harga.

  2. Mengevaluasi berbagai jenis MA untuk menentukan tren terbaru.

  3. Mengoptimalkan parameter zona breakout untuk stabilitas yang lebih tinggi.

  4. Tambahkan stop loss dan mengambil keuntungan untuk manajemen risiko.

  5. Pertimbangkan parameter dinamis untuk beradaptasi dengan perubahan pasar.

  6. Uji balik di lebih banyak simbol dan kerangka waktu.

Kesimpulan

Strategi ini memperdagangkan zona gesekan harga dengan potensi breakout probabilitas tinggi, dengan pro dan kontra. Peningkatan seperti optimasi dinamis dan manajemen risiko dapat membuatnya lebih kuat dan efisien.


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


Lebih banyak