Strategi VWAP berdasarkan jarak Z


Tarikh penciptaan: 2023-11-10 12:02:19 Akhirnya diubah suai: 2023-11-10 12:02:19
Salin: 0 Bilangan klik: 803
1
fokus pada
1617
Pengikut

Strategi VWAP berdasarkan jarak Z

Gambaran keseluruhan

Strategi ini didasarkan pada indikator jarak Z dari VWAP oleh LazyBear, dengan mengira harga dengan jarak Z dari VWAP untuk menentukan sama ada terlalu banyak membeli atau terlalu banyak, dan untuk membuat tawaran masuk. Strategi ini menggabungkan penilaian EMA rata-rata dan jarak Z kembali ke 0 dan dapat menyaring beberapa isyarat bunyi bising.

Prinsip Strategi

  1. Mengira nilai VWAP
  2. Jarak z dari harga kepada VWAP
  3. Tetapkan garis overbought ((2.5) dan garis oversold ((-0.5))
  4. Apabila garis cepat lebih besar daripada garis lambat, jarak Z adalah lebih rendah daripada garis super, dan jarak Z lebih banyak apabila melalui 0
  5. Apabila Z melampaui garis beli
  6. Tambah logik stop loss

Fungsi utama:

  • calc_zvwap: mengira jarak Z antara harga dan VWAP
  • Nilai VWAP:vwap(hlc3)
  • Talian pantas: Ema
  • Garis perlahan: Ema

Analisis kelebihan

  1. Menggunakan jarak Z untuk lebih intuitif menilai overbuying dan overselling
  2. Penembusan palsu dengan penapisan EMA untuk mengelakkan kebocoran
  3. Ia membolehkan penambahan saham dan keuntungan daripada trend.
  4. Logik Stop Loss untuk Mengendalikan Risiko

Analisis risiko

  1. Pastikan parameter yang ditetapkan adalah munasabah, seperti kedudukan overbought dan oversold, kitaran EMA dan sebagainya
  2. Z terlewat dari indeks, mungkin terlepas titik jual beli utama
  3. Menerima peruntukan tambahan boleh meningkatkan risiko kerugian
  4. Hentikan kerosakan yang perlu diletakkan dengan betul

Penyelesaian:

  1. Tetapan parameter pengoptimuman dengan pengukuran semula
  2. Gabungan penapis isyarat penunjuk tambahan
  3. Menetapkan Syarat Tambahan Rasional
  4. Dinamika penyesuaian kedudukan berhenti

Arah pengoptimuman

  1. Optimumkan parameter kitaran EMA
  2. Ujian kriteria penilaian yang berbeza untuk membeli dan menjual
  3. Menyenaraikan penapis isyarat kebisingan
  4. Uji kecederaan yang berbeza
  5. Optimumkan logik masuk, kenaikan dan hentikan

ringkaskan

Strategi ini menggunakan jarak Z untuk menentukan hubungan harga dengan VWAP, digabungkan dengan isyarat bunyi penapisan EMA, untuk menangkap peluang trend. Strategi ini membenarkan penarikan saham untuk mengikuti trend, sambil menetapkan risiko kawalan hentian.

Kod sumber strategi
/*backtest
start: 2022-11-03 00:00:00
end: 2023-11-09 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee

//@version=4
//This is based on Z distance from VWAP by Lazybear
strategy(title="ZVWAP[LB] strategy", overlay=false,pyramiding=2, default_qty_type=strategy.fixed, default_qty_value=3,    initial_capital=10000, currency=currency.USD)
length=input(13,"length")

calc_zvwap(pds, source1) =>
	mean = sum(volume*source1,pds)/sum(volume,pds)
	vwapsd = sqrt(sma(pow(source1-mean, 2), pds) )
	(close-mean)/vwapsd


upperTop=2.5  //input(2.5)
upperBottom=2.0  //input(2.0)
lowerTop=-0.5  //input(-0.5)
lowerBottom=-2.0 //input(-2.0)

buyLine=input(-0.5, title="OverSold Line",minval=-2, maxval=3)
sellLine=input(2.0, title="OverBought Line",minval=-2, maxval=3)

fastEma=input(13, title="Fast EMA",minval=1, maxval=50)
slowEma=input(55, title="Slow EMA",minval=10, maxval=200)

stopLoss =input(5, title="Stop Loss",minval=1) 

hline(0, title="Middle Line", linestyle=hline.style_dotted, color=color.green)

ul1=plot(upperTop, "OB High")
ul2=plot(upperBottom, "OB Low")
fill(ul1,ul2, color=color.red)
ll1=plot(lowerTop, "OS High")
ll2=plot(lowerBottom, "OS Low")
fill(ll1,ll2, color=color.green)
zvwapVal=calc_zvwap(length,close)
plot(zvwapVal,title="ZVWAP",color=color.purple, linewidth=2)


longEmaVal=ema(close,slowEma)
shortEmaVal=ema(close,fastEma)  

vwapVal=vwap(hlc3)


zvwapDipped=false

for i = 1 to 10
    zvwapDipped := zvwapDipped or zvwapVal[i]<=buyLine

longCondition=  shortEmaVal > longEmaVal  and zvwapDipped and  crossover(zvwapVal,0)

barcolor(longCondition ? color.yellow: na)

strategy.entry(id="ZVWAPLE", long=true,  when= longCondition  and strategy.position_size<1) 


//Add
strategy.entry(id="ZVWAPLE", comment="Add", long=true,  when= strategy.position_size>1 and close<strategy.position_avg_price and crossover(zvwapVal,0)) 


//calculate stop Loss
stopLossVal =  strategy.position_avg_price -  (strategy.position_avg_price*stopLoss*0.01)

strategy.close(id="ZVWAPLE",comment="SL Exit",    when=close<stopLossVal)   //close all on stop loss

strategy.close(id="ZVWAPLE",comment="TPExitAll",    qty=strategy.position_size ,   when= crossunder(zvwapVal,sellLine))   //close all      zvwapVal>sellLine