Band Volatilitas dan VWAP Multi-Timeframe Stock Trend Trading Strategy

Penulis:ChaoZhang, Tanggal: 2024-01-17 16:34:23
Tag:

img

Strategi ini menghitung volatilitas harga ATR dan menggabungkan VWAP periode yang berbeda untuk menetapkan kondisi masuk dan keluar panjang untuk perdagangan tren saham.

Tinjauan Strategi

Strategi ini terutama digunakan untuk melacak tren produk saham. Dengan menghitung volatilitas ATR dan menggabungkan harga VWAP dari periode yang berbeda, ia menetapkan kondisi beli dan jual untuk menilai dan melacak tren. Strategi ini cukup fleksibel untuk beralih antara jangka panjang dan jangka pendek, cocok untuk menangkap tren jangka menengah dan panjang.

Logika Strategi

Strategi ini menggunakan indikator ATR untuk menghitung volatilitas harga dan menilai arah tren berdasarkan apakah harga menembus saluran volatilitas. Pada saat yang sama, strategi ini memperkenalkan harga VWAP dari siklus yang berbeda untuk menentukan konsistensi tren jangka panjang dan jangka pendek. Logika spesifiknya adalah sebagai berikut:

  1. Menghitung saluran volatilitas harga ATR
  2. Menghakimi jika harga menembus saluran volatilitas
    1. Menembus rel atas menunjukkan tren bullish
    2. Menembus rel bawah menunjukkan tren penurunan
  3. Memperkenalkan harga VWAP mingguan dan harian
    1. Ketika harga menembus rel volatilitas atas, jika VWAP harian dan mingguan berada di atas harga, sinyal panjang dihasilkan
    2. Ketika harga menembus rel volatilitas rendah, jika VWAP harian dan mingguan berada di bawah harga, sinyal pendek dihasilkan

Di atas adalah logika inti dari strategi. Volatilitas ATR menilai tren jangka pendek dan harga VWAP menilai tren jangka panjang. Keduanya dikombinasikan untuk menentukan konsistensi tren dan dengan demikian menghasilkan sinyal perdagangan.

Keuntungan dari Strategi

  • Gunakan kombinasi ATR dan VWAP untuk menilai tren, lebih dapat diandalkan
  • Parameter periode ATR yang dapat disesuaikan untuk menyesuaikan sensitivitas strategi
  • Memperkenalkan VWAP multi-timeframe untuk menentukan konsistensi tren jangka panjang dan jangka pendek
  • Fleksibel untuk beralih antara jangka panjang dan jangka pendek
  • Cocok untuk melacak tren saham jangka menengah dan panjang

Risiko dan Optimalisasi

  • Sebagai tren yang mengikuti strategi dapat menghasilkan lebih banyak perdagangan selama konsolidasi, membawa risiko slippage
  • Pengaturan parameter ATR dan VWAP mempengaruhi kinerja strategi, membutuhkan pengujian yang cermat terhadap produk yang berbeda
  • Pertimbangkan untuk menambahkan stop loss untuk mengendalikan kerugian perdagangan tunggal
  • Dapat dikombinasikan dengan MA dan indikator lain untuk menyaring sinyal masuk dan mengurangi perdagangan yang tidak perlu

Ringkasan

Strategi ini mewujudkan pelacakan tren saham melalui konfirmasi ganda dari volatilitas ATR dan VWAP. Ada banyak ruang untuk optimasi dengan menyesuaikan parameter atau menggabungkan indikator teknis lainnya. Secara keseluruhan, logika strategi jelas dan kuat untuk melacak tren jangka menengah hingga panjang.


/*backtest
start: 2023-12-17 00:00:00
end: 2024-01-16 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/
// © exlux99

//@version=4
strategy(title="VWAP MTF STOCK STRATEGY", overlay=true )

// high^2 / 2 - low^2 -2

h=pow(high,2) / 2
l=pow(low,2) / 2

o=pow(open,2) /2
c=pow(close,2) /2


x=(h+l+o+c) / 4
y= sqrt(x)

source = y
useTrueRange = false
length = input(27, minval=1)
mult = input(0, step=0.1)
ma = sma(source, length)
range = useTrueRange ? tr : high - low
rangema = sma(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult
crossUpper = crossover(source, upper)
crossLower = crossunder(source, lower)
bprice = 0.0
bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1])
sprice = 0.0
sprice := crossLower ? low -syminfo.mintick : nz(sprice[1])
crossBcond = false
crossBcond := crossUpper ? true
     : na(crossBcond[1]) ? false : crossBcond[1]
crossScond = false
crossScond := crossLower ? true
     : na(crossScond[1]) ? false : crossScond[1]
cancelBcond = crossBcond and (source < ma or high >= bprice )
cancelScond = crossScond and (source > ma or low <= sprice )

longOnly = true

fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

srcX = input(ohlc4)
t = time("W")
start = na(t[1]) or t > t[1]

sumSrc = srcX * volume
sumVol = volume
sumSrc := start ? sumSrc : sumSrc + sumSrc[1]
sumVol := start ? sumVol : sumVol + sumVol[1]

vwapW= sumSrc / sumVol

 
//crossUpper = crossover(source, upper)
//crossLower = crossunder(source, lower)
shortCondition = close < vwap and time_cond and (close < vwapW)
longCondition = close > vwap and time_cond and (close > vwapW)

 


if(longOnly and time_cond)
    if (crossLower and close < vwapW )
        strategy.close("long")
    if (crossUpper and close>vwapW)
        strategy.entry("long", strategy.long, stop=bprice)


Lebih banyak