Strategi ini mengira turun naik harga ATR dan menggabungkan VWAP tempoh yang berbeza untuk menetapkan syarat masuk dan keluar panjang untuk perdagangan trend saham.
Strategi ini digunakan terutamanya untuk mengesan trend produk saham. Dengan mengira turun naik ATR dan menggabungkan harga VWAP dari tempoh yang berbeza, ia menetapkan keadaan beli dan jual untuk menilai dan mengesan trend. Strategi ini cukup fleksibel untuk beralih antara jangka panjang dan jangka pendek, sesuai untuk menangkap trend jangka menengah dan panjang.
Strategi ini menggunakan penunjuk ATR untuk mengira turun naik harga dan menilai arah trend berdasarkan sama ada harga memecahkan saluran turun naik. Pada masa yang sama, ia memperkenalkan harga VWAP dari kitaran yang berbeza untuk menentukan konsistensi trend jangka panjang dan jangka pendek. Logik khusus adalah sebagai berikut:
Ini adalah logik teras strategi. Volatiliti ATR menilai trend jangka pendek dan harga VWAP menilai trend jangka panjang. Kedua-duanya digabungkan untuk menentukan konsistensi trend dan dengan itu menghasilkan isyarat perdagangan.
Strategi ini merealisasikan pengesanan trend saham melalui pengesahan ganda mengenai turun naik ATR dan VWAP. Terdapat ruang yang cukup untuk pengoptimuman dengan menyesuaikan parameter atau menggabungkan penunjuk teknikal lain. Secara keseluruhan, logik strategi jelas dan kukuh untuk mengesan trend 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)