Strategi ini menghitung volatilitas harga ATR dan menggabungkan VWAP periode yang berbeda untuk menetapkan kondisi masuk dan keluar panjang untuk perdagangan tren saham.
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.
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:
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.
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)