Chiến lược xu hướng cổ phiếu đột phá biến động ATR hai kỳ


Ngày tạo: 2024-01-17 16:34:23 sửa đổi lần cuối: 2024-01-17 16:34:23
sao chép: 1 Số nhấp chuột: 728
1
tập trung vào
1617
Người theo dõi

Chiến lược xu hướng cổ phiếu đột phá biến động ATR hai kỳ

Chiến lược này thực hiện giao dịch theo dõi xu hướng của cổ phiếu bằng cách tính toán biến động ATR của giá, kết hợp giá trung bình VWAP trong các chu kỳ khác nhau, thiết lập điều kiện nhập và thoát vị trí dài.

Tổng quan về chiến lược

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

Nguyên tắc chiến lược

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

  1. Kênh biến động ATR để tính giá
  2. Xác định giá đã phá vỡ kênh biến động
    1. Một số người khác cũng cho rằng đây là một bước đột phá.
    2. Các nhà phân tích cho rằng, đây là một xu hướng lạc quan.
  3. Tiếp theo là VWAP.
    1. Khi giá phá vỡ biến động trên đường, một tín hiệu dài sẽ được tạo ra nếu cả đường mặt trời và đường vòng VWAP đều nằm trên giá
    2. Khi giá phá vỡ tỷ lệ biến động xuống đường, một tín hiệu trống sẽ được tạo ra nếu cả đường mặt trời và đường vòng VWAP đều nằm dưới giá

Đây là logic cốt lõi của chiến lược. ATR phân tích xu hướng ngắn hạn, giá VWAP phân tích xu hướng dài hạn, kết hợp với sự nhất quán của xu hướng, tạo ra tín hiệu giao dịch.

Lợi thế chiến lược

  • Sử dụng kết hợp ATR và VWAP để đánh giá xu hướng, đáng tin cậy hơn
  • Các tham số chu kỳ ATR có thể được cấu hình, điều chỉnh độ nhạy của chiến lược
  • Nhập VWAP theo chu kỳ khác nhau để đánh giá sự nhất quán của xu hướng đường dài ngắn
  • Tính linh hoạt trong việc chuyển đổi giữa đường dài và đường ngắn
  • Sử dụng để theo dõi xu hướng đường dài trong cổ phiếu

Rủi ro và tối ưu hóa chiến lược

  • Là một chiến lược theo dõi xu hướng, nó tạo ra nhiều giao dịch hơn trong giai đoạn điều chỉnh chấn động, mang lại rủi ro trượt
  • Cài đặt tham số ATR và VWAP có thể ảnh hưởng đến hiệu suất của chiến lược và cần thử nghiệm thận trọng đối với các giống khác nhau
  • Có thể xem xét thêm các cơ chế ngăn chặn để kiểm soát tổn thất đơn lẻ
  • Có thể kết hợp các chỉ số như đường đồng bằng để lọc tín hiệu nhập cảnh, giảm giao dịch không cần thiết

Tóm tắt

Chiến lược này theo dõi xu hướng cổ phiếu thông qua tỷ lệ biến động ATR và VWAP, theo dõi xu hướng cổ phiếu. Có nhiều không gian tối ưu hóa chiến lược, có thể điều chỉnh tham số hoặc thêm tín hiệu tối ưu hóa các chỉ số kỹ thuật khác. Nhìn chung, logic chiến lược rõ ràng và dễ hiểu, hoạt động ổn định, phù hợp để theo dõi xu hướng đường dài.

Mã nguồn chiến lược
/*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)