Strategi ini didasarkan pada jarak Z dari indikator VWAP oleh LazyBear. Strategi ini menggunakan jarak Z antara harga dan VWAP untuk menentukan kondisi overbought dan oversold, serta entri dan keluar.
Fungsi Utama:
Solusi:
Strategi ini menggunakan jarak Z untuk menentukan hubungan harga-VWAP dan menambahkan EMA untuk menyaring sinyal, bertujuan untuk menangkap peluang tren. Ini memungkinkan piramida untuk mengikuti tren dan memiliki stop loss untuk mengendalikan risiko. Optimasi dan menambahkan indikator lain dapat meningkatkan ketahanan. Namun, masalah tertinggal jarak Z harus dipertimbangkan selama optimasi. Secara keseluruhan, ini adalah strategi trend-mengikuti dengan logika yang sederhana dan jelas. Ketika sepenuhnya dioptimalkan, ini bisa menjadi alat yang efisien untuk perdagangan tren.
/*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