VWMA dan ATR Trend Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2023-11-07 16:39:47
Tag:

img

Gambaran umum

Strategi ini menggunakan VWMA untuk menentukan arah tren dan menetapkan stop loss dengan ATR untuk mengikuti tren.

Logika Strategi

  1. Gunakan VWMA untuk menentukan arah tren. pergi panjang ketika harga di atas VWMA, pergi pendek ketika harga di bawah VWMA.

  2. Tambahkan filter osilator RSI untuk menghindari sinyal pecah palsu. Hanya mengambil sinyal panjang ketika RSI di atas 30.

  3. Gunakan ATR untuk menghitung garis stop loss. panjang ATR ditetapkan sama dengan VWMA, pengganda adalah 3.5. pembaruan stop loss line secara real time.

  4. Multiplikator ATR mengontrol ketegangan garis stop loss. Multiplikator yang lebih besar berarti pembaruan yang kurang sering, yang lebih baik untuk mengikuti tren.

  5. Ukuran posisi dihitung berdasarkan ekuitas akun dan persentase stop loss.

  6. Keluar posisi panjang ketika harga melanggar di bawah garis stop loss.

Keuntungan

  1. Menggunakan VWMA untuk menentukan tren menangkap peluang tren secara konsisten.

  2. Filter RSI menghindari beberapa sinyal palsu.

  3. ATR trailing stop mengikuti tren dan menghindari dihentikan oleh pembalikan.

  4. Ukuran posisi berdasarkan ekuitas akun dan stop loss mendukung manajemen risiko.

Risiko

  1. Potensi kerugian pada titik balik tren.

  2. Pengaturan parameter ATR yang tidak benar menyebabkan garis stop loss terlalu ketat atau longgar.

  3. Pembalikan tren yang cepat dapat menyebabkan pembaruan stop loss tertunda, meningkatkan kerugian.

  4. Dalam lingkungan volatilitas rendah, mengurangi ukuran posisi dan meningkatkan frekuensi pembaruan stop loss.

Peningkatan

  1. Uji kombinasi parameter VWMA yang berbeda untuk menemukan parameter sinyal yang optimal.

  2. Uji pengaturan RSI lainnya seperti garis overbought/oversold.

  3. Uji pengganda ATR untuk menemukan keseimbangan optimal antara penarikan dan kemampuan pelacakan.

  4. Tambahkan filter lain seperti MACD, KD untuk meningkatkan kualitas sinyal.

  5. Mengoptimalkan ukuran posisi dan persentase stop loss berdasarkan volatilitas pasar.

Ringkasan

Strategi ini memiliki bias trend-mengikuti keseluruhan dan menangkap tren harga yang jelas dengan baik. Ini memiliki keuntungan dalam penentuan tren, penyaringan sinyal, stop loss trailing dll. Ini juga memiliki risiko dalam pembalikan tren. Parameter penyesuaian halus dan ukuran posisi dapat menyebabkan kinerja yang lebih baik.


/*backtest
start: 2023-10-07 00:00:00
end: 2023-10-13 00:00:00
period: 1h
basePeriod: 15m
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
//strategy("", overlay=true)
strategy(title="VWMA_withATRstops_strategy V2", overlay=true, pyramiding=1,     default_qty_type=strategy.percent_of_equity,  default_qty_value=20, initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed,

float xATRTrailingStop=na
int pos=na

vwmalength = input(33, title="VWMA Length", minval=1, maxval=365)
//vwmalength2 = input(9, title="VWAM Short Term Length", minval=1, maxval=365)
nATRPeriod = input(33, title="ATR length", minval=1, maxval=365)
nATRMultip = input(3.5, title="ATR Multiplier")

rsiofVwmaLength=input(14, title="RSI of VWMA Length")

riskCapital = input(title="Risk % of capital", defval=10, minval=1)
stopLoss=input(5,title="Stop Loss",minval=1)

vwmaVal=vwma(close, vwmalength)
//vwmaVal2=vwma(close, vwmalength2)
//maVal=sma(close, vwmalength)

plot(vwmaVal, color=color.orange, linewidth=2,  title="VWMA")
//plot(vwmaVal2, color=color.blue, title="VWMA Short Term")
//plot(maVal, color=color.blue, title="MA")

//rsi of vwma Longterm
rsiofVwmaVal=rsi(vwmaVal,rsiofVwmaLength)

xATR = atr(nATRPeriod)
nLoss = nATRMultip * xATR

xATRTrailingStop:= iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss), iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))

pos:=	iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1, 	    iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 

color1 = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 

//plot(xATRTrailingStop, color=color1, title="ATR Trailing Stop")

//Entry--
//Echeck how many units can be purchased based on risk manage ment and stop loss
qty1 = (strategy.equity  * riskCapital / 100 ) /  (close*stopLoss/100)  

//check if cash is sufficient  to buy qty1  , if capital not available use the available capital only
qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1


//Long Entry
//strategy.entry(id="VWMA LE", long=true, qty=qty1, when= close >vwmaVal and open>vwmaVal and close>open and close > xATRTrailingStop and xATRTrailingStop>  vwmaVal)

strategy.entry(id="VWMA LE", long=true, qty=qty1, when= rsiofVwmaVal>=30 and  close>open and close>vwmaVal and pos == 1 )    ///pos == 1 means ATRStop line is green    
//vwmaVal2>vwmaVal and

plot(strategy.position_size>=1  ? xATRTrailingStop : na, color=color1, style=plot.style_linebr, title="ATR Trailing Stop")
bgcolor(strategy.position_size>=1 ? color.blue : na )

//Exit
strategy.close(id="VWMA LE",  when= strategy.position_size>=1 and crossunder(close, xATRTrailingStop)  )
//strategy.close(id="VWMA LE",  when= strategy.position_size>=1 and close<vwmaVal and open<vwmaVal and close<open )

Lebih banyak