Chiến lược theo dõi xu hướng dựa trên VWAP


Ngày tạo: 2024-02-29 15:26:56 sửa đổi lần cuối: 2024-02-29 15:26:56
sao chép: 0 Số nhấp chuột: 944
1
tập trung vào
1617
Người theo dõi

Chiến lược theo dõi xu hướng dựa trên VWAP

Tổng quan

Chiến lược này dựa trên VWAP và EMA làm chỉ số để xác định hướng của xu hướng, VWAP đại diện cho giá điển hình và EMA200 đại diện cho xu hướng đường dài trung bình. Làm nhiều khi giá cao hơn VWAP và EMA200 và làm giảm khi giá thấp hơn VWAP và EMA200, thuộc chiến lược theo xu hướng điển hình.

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

Lý luận cốt lõi của chiến lược là sử dụng VWAP và EMA để xác định xu hướng giá.

  • VWAP đại diện cho giá điển hình, có thể phản ánh chi phí trung bình của người tham gia thị trường. Giá cao hơn VWAP đại diện cho quyền lực của người mua tăng lên, làm nhiều hơn; giá thấp hơn VWAP đại diện cho quyền lực của người bán tăng lên, nên làm trống.
  • EMA200 đại diện cho xu hướng đường dài trung bình của giá. Giá trên EMA200 đại diện cho đường dài trung bình là bullish, nên làm nhiều hơn; Giá dưới EMA200 đại diện cho đường dài trung bình là bearish, nên làm tròn.

Do đó, chiến lược này đầu tiên đánh giá xem giá có cao hơn cả VWAP và EMA200 không, và nếu có, hãy làm nhiều hơn; Nếu giá đồng thời thấp hơn cả VWAP và EMA200, hãy làm trống. Như bạn có thể thấy, chiến lược này chủ yếu dựa vào quyết định mua và bán của VWAP và EMA.

Ngoài ra, chiến lược cũng đặt điểm dừng lỗ. Cài đặt dừng là 3.5% giá nhập sau khi thực hiện quá nhiều, dừng là 1.4%; Cài đặt dừng là 2.5% giá nhập sau khi mở rộng, dừng là 0.9%. Điều này có thể tránh thiệt hại quá lớn.

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

Lợi thế lớn nhất của chiến lược này là sử dụng VWAP và EMA để đánh giá xu hướng rất đáng tin cậy.

  • VWAP có thể phản ánh chính xác chi phí trung bình của người tham gia thị trường và là một chỉ số rất tốt để đánh giá xu hướng;
  • EMA 200 có thể phản ánh rõ ràng xu hướng đường dài và trung bình, đánh giá chính xác và đáng tin cậy về xu hướng lớn.

Do đó, kết hợp sử dụng VWAP và EMA để đánh giá xu hướng có độ tin cậy rất cao. Khi cả hai đánh giá xu hướng phù hợp, tỷ lệ thành công của hoạt động rất cao.

Ngoài ra, thiết lập điểm dừng lỗ ngăn chặn có thể giúp tránh tổn thất đơn lẻ quá lớn.

Rủi ro chiến lược

Rủi ro chính của chiến lược này là VWAP và EMA có thể phát ra tín hiệu sai.

  • Khi thị trường biến động mạnh, giá có thể rời khỏi VWAP trong một thời gian ngắn và phát ra tín hiệu sai.
  • Khi xu hướng mới chỉ mới bắt đầu, EMA có thể bị tụt lại sau sự thay đổi giá, khiến chiến lược bỏ lỡ thời điểm đầu vào tốt nhất.

Ngoài ra, các thiết lập dừng lỗ có thể không phù hợp và rủi ro thua lỗ đơn lẻ quá lớn vẫn còn tồn tại.

Để giải quyết các vấn đề trên, chúng ta có thể tối ưu hóa các thiết lập tham số của VWAP và EMA để chúng có thể phân biệt rõ hơn sự khởi đầu của một xu hướng mới. Ngoài ra, chúng ta có thể thiết lập các điểm dừng thích ứng để cho điểm dừng điều chỉnh theo biến động giá.

Hướng tối ưu hóa chiến lược

Chiến lược này có thể được tối ưu hóa từ các khía cạnh sau:

  • Tối ưu hóa các tham số VWAP để tìm ra các nhóm tham số VWAP có xu hướng phán đoán ổn định hơn.
  • Tối ưu hóa chu kỳ EMA để tìm các tham số EMA chính xác hơn để xác định xu hướng.
  • Thêm các chỉ số khác để xác định xu hướng, chẳng hạn như Brin Belt, KDJ và kết hợp với VWAP và EMA, để cải thiện độ chính xác của phán đoán.
  • Cài đặt Stop Loss thích ứng. Theo một số quy tắc để mức Stop Loss được điều chỉnh theo biến động giá, tránh Stop Loss quá cứng.
  • Kết hợp với quản lý vị trí. Điều chỉnh kích thước vị trí dựa trên các chỉ số như rút lui, số lần thua lỗ, kiểm soát chiến lược rủi ro tổng thể.

Tóm tắt

Chiến lược này nói chung là một chiến lược theo dõi xu hướng rất đáng tin cậy. Nó sử dụng VWAP và EMA để xác định hướng xu hướng, ý tưởng rõ ràng và đơn giản, khi cả hai phát ra tín hiệu đồng nhất, xác suất thành công của việc tham gia rất cao. Bằng cách thiết lập dừng chân hợp lý, rủi ro có thể được kiểm soát.

Mã nguồn chiến lược
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//26m Binance BTCUSDTPERP
//@version=4
strategy("VWAP Trend Follower", initial_capital=100, overlay=true, commission_type=strategy.commission.percent, commission_value=0.04, default_qty_type = strategy.percent_of_equity, default_qty_value = 90, currency = currency.USD )

/// INITIALISE STRATEGY ///
price=close[1]
vprice=vwap(price)
trend=ema(price, 200)

/// RISK MANAGEMENT ///
long_tp_inp = input(3.5, title='Long Take Profit %',step=0.1)/100
long_sl_inp = input(1.4, title='Long Stop Loss %',step=0.1)/100
short_tp_inp = input(2.5, title='Short Take Profit %',step=0.1)/100
short_sl_inp = input(0.9, title='Short Stop Loss %',step=0.1)/100
long_take_level = strategy.position_avg_price * (1 + long_tp_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)
short_take_level = strategy.position_avg_price * (1 - short_tp_inp)
short_stop_level = strategy.position_avg_price * (1 + short_sl_inp)
//long_trailing = input(5, title='Trailing Stop Long',step=0.1) / 100
//short_trailing = input(5, title='Trailing Stop short',step=0.1) / 100

/// STRATEGY CONDITIONS ///
aLong= price > trend and price > vprice
entry_long = aLong and aLong[2] and aLong[1]
aShort= price < trend and price < vprice 
entry_short = aShort and aShort[2] and aShort[1]
//exit_long = 
//exit_short =
//entry_price_long=valuewhen(entry_long,close,0)
//entry_price_short=valuewhen(entry_short,close,0)

/// PLOTTING ///
plot(vprice,                color=#5875E1, linewidth=2)
plot(trend,                 color=#D965E1, linewidth=1)
plotshape(series=aLong,     color=#71E181,style=shape.labelup)
plotshape(series=aShort,    color=#E18BA5,style=shape.labeldown)
//plot(long_take_level,     color=#00E676, linewidth=2)
//plot(long_stop_level,     color=#FF5252, linewidth=1)
//plot(short_take_level,    color=#4CAF50, linewidth=2)
//plot(short_stop_level,    color=#FF5252, linewidth=1)

/// PERIOD ///
testStartYear   = input(2019, "Backtest Start Year")
testStartMonth  = input(1, "Backtest Start Month")
testStartDay    = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear    = input(2020, "Backtest Stop Year")
testStopMonth   = input(12, "Backtest Stop Month")
testStopDay     = input(31, "Backtest Stop Day")
testPeriodStop  = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => true

//// STRATEGY EXECUTION ////

if testPeriod()
    if strategy.position_size == 0 or strategy.position_size > 0
        strategy.entry(id="Long", long=true, when=entry_long, comment="Long")
        strategy.exit("Take Profit/ Stop Loss","Long", limit=long_take_level, stop=long_stop_level,comment="Exit Long")//,trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
//        strategy.close(id="Long", when=exit_long, comment = "Exit Long")

    if strategy.position_size == 0 or strategy.position_size < 0
        strategy.entry(id="Short", long=false, when=entry_short, comment = "Short")
        strategy.exit("Take Profit/ Stop Loss","Short", limit=short_take_level , stop=short_stop_level,comment = "Exit Short")//, trail_points=entry_price_short * short_trailing / syminfo.mintick, trail_offset=entry_price_short * short_trailing / syminfo.mintick)
//        strategy.close(id="Short", when=exit_short, comment = "Exit Short")