Phạm vi biến động và Chiến lược giao dịch xu hướng chứng khoán đa khung thời gian của VWAP

Tác giả:ChaoZhang, Ngày: 2024-01-17 16:34:23
Tags:

img

Chiến lược này tính toán biến động giá ATR và kết hợp các VWAP giai đoạn khác nhau để thiết lập các điều kiện đầu vào và ra dài cho giao dịch xu hướng chứng khoán.

Tổng quan chiến lược

Chiến lược này chủ yếu được sử dụng để theo dõi xu hướng của các sản phẩm cổ phiếu. Bằng cách tính toán biến động ATR và kết hợp giá VWAP của các giai đoạn khác nhau, nó thiết lập các điều kiện mua và bán để đánh giá và theo dõi xu hướng. Chiến lược đủ linh hoạt để chuyển đổi giữa dài hạn và ngắn hạn, phù hợp để nắm bắt xu hướng trung bình và dài hạn.

Chiến lược logic

Chiến lược sử dụng chỉ số ATR để tính biến động giá và đánh giá hướng xu hướng dựa trên việc giá có vượt qua kênh biến động hay không. Đồng thời, nó giới thiệu giá VWAP của các chu kỳ khác nhau để xác định tính nhất quán của xu hướng dài hạn và ngắn hạn.

  1. Tính toán kênh biến động ATR của giá
  2. Phán quyết nếu giá vượt qua kênh biến động
    1. Bước qua đường ray trên cho thấy xu hướng tăng
    2. Bước qua đường sắt dưới cho thấy xu hướng giảm
  3. Thiết lập giá VWAP hàng tuần và hàng ngày
    1. Khi giá vượt qua đường sắt biến động trên, nếu cả VWAP hàng ngày và hàng tuần đều trên giá, một tín hiệu dài được tạo ra
    2. Khi giá vượt qua đường sắt biến động thấp hơn, nếu cả VWAP hàng ngày và hàng tuần đều dưới giá, một tín hiệu ngắn được tạo ra

Điều trên là logic cốt lõi của chiến lược. Sự biến động ATR đánh giá xu hướng ngắn hạn và giá VWAP đánh giá xu hướng dài hạn. Cả hai được kết hợp để xác định tính nhất quán của xu hướng và do đó tạo ra tín hiệu giao dịch.

Ưu điểm của Chiến lược

  • Sử dụng một sự kết hợp của ATR và VWAP để đánh giá xu hướng, đáng tin cậy hơn
  • Các tham số thời gian ATR có thể tùy chỉnh để điều chỉnh độ nhạy của chiến lược
  • Đưa ra VWAP nhiều khung thời gian để xác định sự nhất quán xu hướng dài hạn và ngắn hạn
  • Chuyển đổi linh hoạt giữa dài hạn và ngắn hạn
  • Thích hợp để theo dõi xu hướng cổ phiếu trung và dài hạn

Rủi ro và tối ưu hóa

  • Là một xu hướng sau chiến lược, nó có thể tạo ra nhiều giao dịch hơn trong quá trình củng cố, mang lại rủi ro trượt
  • Các thiết lập tham số ATR và VWAP ảnh hưởng đến hiệu suất chiến lược, đòi hỏi kiểm tra cẩn thận đối với các sản phẩm khác nhau
  • Xem xét thêm stop loss để kiểm soát lỗ giao dịch duy nhất
  • Có thể kết hợp với MA và các chỉ số khác để lọc tín hiệu nhập cảnh và giảm giao dịch không cần thiết

Tóm lại

Chiến lược này thực hiện theo dõi xu hướng cổ phiếu thông qua xác nhận kép về biến động ATR và VWAP. Có nhiều chỗ để tối ưu hóa bằng cách điều chỉnh các tham số hoặc kết hợp các chỉ số kỹ thuật khác. Nhìn chung, logic chiến lược rõ ràng và mạnh mẽ để theo dõi xu hướng trung hạn đến dài hạn.


/*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)


Thêm nữa