Trend Mengikut Strategi Berdasarkan Zon Ketegangan Harga

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

Ringkasan

Strategi ini mengukur masa tinggal harga di zon yang berbeza untuk mengenal pasti kawasan geseran rendah, dan perdagangan pecah di zon ini.

Logika Strategi

  1. Mengira nisbah harga tinggal di sekitar tahap semasa selama N tempoh yang lalu sebagai geseran harga.

  2. Tentukan sama ada harga memasuki zon geseran rendah dengan masa tinggal minimum baru-baru ini.

  3. Menggunakan MA yang ditimbang pantas untuk menentukan arah trend baru-baru ini.

  4. Ambil keuntungan apabila harga kembali memasuki zon gesekan tinggi menjangkakan pembalikan trend.

  5. Parameter yang boleh disesuaikan termasuk pandangan geseran, zon pecah dll.

Kelebihan

  1. Pergarisan harga mengelakkan pasaran yang berbeza dan mencari zon ledakan trend.

  2. MA pantas digabungkan dengan geseran untuk menentukan arah.

  3. Imej intuitif yang menunjukkan tahap geseran harga.

  4. Parameter lalai yang dioptimumkan untuk perdagangan frekuensi tinggi kripto.

  5. Logik yang mudah dan jelas mudah difahami dan disesuaikan.

Risiko

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

  2. MA pantas boleh menghasilkan masa yang tidak tepat.

  3. Penghapusan masuk dan keluar perdagangan yang tidak berkesan.

  4. Pengoptimuman berisiko terlalu sesuai.

  5. Parameter tetap mungkin kurang berprestasi di pasaran yang tidak menentu.

Peningkatan

  1. Uji tempoh yang berbeza untuk mengira geseran harga.

  2. Menilai pelbagai jenis MA untuk menentukan trend terkini.

  3. Mengoptimumkan parameter zon pecah untuk kestabilan yang lebih tinggi.

  4. Tambah stop loss dan ambil keuntungan untuk pengurusan risiko.

  5. Pertimbangkan parameter dinamik untuk menyesuaikan diri dengan pasaran yang berubah.

  6. Uji semula di lebih banyak simbol dan jangka masa.

Kesimpulan

Strategi ini memperdagangkan zon geseran harga dengan potensi kemerosotan kemungkinan tinggi, dengan kebaikan dan keburukan.


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