
Strategi ini mengkaji turun naik ATR harga, VWAP rata-rata dalam tempoh yang berbeza, menetapkan kemasukan dan keluar dari kedudukan panjang, dan mengikuti trend saham.
Strategi ini digunakan terutamanya untuk mengesan trend produk seperti saham, dengan mengira kadar turun naik ATR dan menggabungkan harga VWAP dari pelbagai kitaran, menetapkan syarat membeli dan menjual, untuk menilai dan mengesan trend. Strategi ini lebih fleksibel, boleh beralih antara garis panjang dan garis pendek, sesuai untuk menangkap trend garis panjang.
Strategi menggunakan indikator ATR untuk mengira kadar turun naik harga, dan digabungkan dengan arah trend untuk menentukan sama ada harga menembusi saluran turun naik. Di samping itu, memperkenalkan harga VWAP dari pelbagai tempoh untuk menentukan konsistensi trend garis panjang dan pendek. Logik khusus adalah seperti berikut:
Ini adalah logik teras strategi tersebut. ATR menilai trend jangka pendek, dan harga VWAP menilai trend jangka panjang. Kedua-duanya digabungkan untuk menilai trend konsistensi, dan menghasilkan isyarat perdagangan.
Strategi ini melalui ATR turun naik dan VWAP dua kali penilaian, untuk menjejaki trend saham. Terdapat ruang yang lebih besar untuk mengoptimumkan strategi, boleh menyesuaikan parameter atau menambah isyarat pengoptimuman petunjuk teknikal lain. Secara keseluruhan, logik strategi jelas dan mudah difahami, prestasi yang mantap, sesuai untuk mengesan trend garis 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)