
Strategi ini memungkinkan perdagangan untuk melacak tren saham dengan menghitung volatilitas harga ATR, VWAP rata-rata dalam siklus yang berbeda, dan menetapkan kondisi masuk dan keluar posisi panjang.
Strategi ini terutama diterapkan untuk pelacakan tren produk seperti saham, dengan menghitung ATR volatilitas dan menggabungkan harga VWAP dari siklus yang berbeda, mengatur kondisi jual beli, untuk mencapai penilaian dan pelacakan tren. Strategi ini lebih fleksibel, dapat beralih antara garis panjang dan garis pendek, cocok untuk menangkap tren garis panjang menengah.
Strategi ini menggunakan indikator ATR untuk menghitung volatilitas harga, dan digabungkan dengan apakah harga menerobos saluran volatilitas untuk menentukan arah tren. Sementara memperkenalkan VWAP harga untuk menentukan konsistensi tren garis pendek dan panjang dari periode yang berbeda. Logika spesifiknya adalah sebagai berikut:
Ini adalah logika inti dari strategi tersebut. ATR volatilitas menilai tren jangka pendek, VWAP harga menilai tren jangka panjang, keduanya digabungkan untuk menilai konsistensi tren, sehingga menghasilkan sinyal perdagangan.
Strategi ini memungkinkan pelacakan tren saham melalui penilaian ganda ATR dan VWAP. Ada ruang yang luas untuk pengoptimalan strategi, parameter dapat disesuaikan atau sinyal pengoptimalan indikator teknis lainnya dapat ditambahkan. Secara keseluruhan, logika strategi jelas dan mudah dimengerti, berkinerja stabil, cocok untuk melacak tren 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)