Strategi mengikuti tren berdasarkan VWMA dan ATR


Tanggal Pembuatan: 2023-11-07 16:39:47 Akhirnya memodifikasi: 2023-11-07 16:39:47
menyalin: 1 Jumlah klik: 716
1
fokus pada
1617
Pengikut

Strategi mengikuti tren berdasarkan VWMA dan ATR

Ringkasan

Strategi ini menggunakan indikator VWMA untuk menentukan arah tren, dan menggunakan indikator ATR untuk menetapkan garis stop loss untuk melakukan pelacakan tren. Strategi ini berlaku untuk lingkungan pasar dengan tren yang jelas.

Prinsip Strategi

  1. Menggunakan indikator VWMA untuk menentukan arah tren. Jika harga lebih tinggi dari VWMA, menilai sebagai tren naik, melakukan lebih banyak; Jika harga lebih rendah dari VWMA, menilai sebagai tren turun, melakukan kosong.

  2. Untuk memfilter terobosan palsu, tambahkan penilaian oscillator RSI. Sinyal multi hanya akan dipancarkan ketika RSI lebih dari 30.

  3. Menggunakan indikator ATR untuk menghitung stop loss. Panjang ATR diatur sama dengan VWMA, dan perkalian diatur menjadi 3.5. Stop loss akan diperbarui secara real-time berdasarkan harga.

  4. Pengaturan ATR akan mempengaruhi tingkat pengurangan garis stop loss. Semakin besar pengganda, semakin rendah frekuensi pembaruan garis stop loss, dan lebih baik untuk melacak tren.

  5. Ukuran posisi berdasarkan persentase stop loss dalam strategi dan ekuitas akun.

  6. Stop loss exit adalah posisi yang diambil ketika harga berada di bawah garis stop loss.

Keunggulan Strategis

  1. Menggunakan indikator VWMA untuk menentukan arah tren, Anda dapat terus menangkap peluang tren.

  2. Tambahkan filter RSI untuk menyaring beberapa sinyal palsu.

  3. ATR Stop loss line memungkinkan trend tracking dan menghindari terbalik Stop out

  4. Perhitungan posisi berdasarkan persentase ekuitas dan stop loss akun, yang membantu untuk mengendalikan risiko.

Risiko Strategis

  1. Ada risiko kerugian pada titik-titik perubahan tren. Posisi harus dikurangi secara tepat untuk mengurangi kerugian tunggal.

  2. ATR parameter yang tidak tepat, dapat menyebabkan stop loss terlalu sensitif atau lambat. Harus diuji untuk menentukan parameter yang tepat.

  3. Jika tren berbalik terlalu cepat, pembaruan stop loss line mungkin tidak datang dan akan memperluas kerugian.

  4. Dalam pasar yang kurang berfluktuasi, posisi harus dikurangi dan frekuensi pengurangan stop loss line harus ditingkatkan.

Arah optimasi

  1. Kombinasi parameter VWMA yang berbeda dapat diuji, memilih parameter yang menghasilkan sinyal terbaik.

  2. Anda dapat menguji parameter lain dari oscillator RSI, seperti overbought dan oversold.

  3. Parameter perkalian ATR dapat diuji untuk menemukan titik terbaik untuk melakukan tradeoff antara penarikan dan pelacakan.

  4. Dapat dikombinasikan dengan indikator lain untuk memfilter sinyal, seperti MACD, KD, dll, untuk meningkatkan kualitas sinyal.

  5. Manajemen posisi dan persentase stop loss dapat dioptimalkan sesuai dengan fluktuasi pasar.

Meringkaskan

Strategi ini memiliki keuntungan dalam hal penilaian tren, pemfilteran sinyal, dan pelacakan stop loss, tetapi ada juga risiko pembalikan tren. Dengan pengaturan parameter yang dioptimalkan dan manajemen posisi, efek strategi yang lebih baik dapat diperoleh.

Kode Sumber Strategi
/*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 )