Chiến lược tùy chọn tổng hợp trong ngày dựa trên VWMA phiên: hệ thống giao dịch thích ứng cho các tín hiệu dài và ngắn

VWMA ATM IST
Ngày tạo: 2025-02-24 10:07:39 sửa đổi lần cuối: 2025-02-27 16:46:17
sao chép: 0 Số nhấp chuột: 354
2
tập trung vào
319
Người theo dõi

Chiến lược tùy chọn tổng hợp trong ngày dựa trên VWMA phiên: hệ thống giao dịch thích ứng cho các tín hiệu dài và ngắn Chiến lược tùy chọn tổng hợp trong ngày dựa trên VWMA phiên: hệ thống giao dịch thích ứng cho các tín hiệu dài và ngắn

Tổng quan

Đây là một chiến lược giao dịch trong ngày dựa trên VWMA, thực hiện hoạt động hai chiều đa luồng thông qua danh mục đầu tư hợp chất. Cốt lõi của chiến lược là chỉ số VWMA được tính lại mỗi ngày giao dịch, tạo ra tín hiệu giao dịch dựa trên vị trí tương đối của giá với VWMA và tự động thanh toán trước khi đóng cửa. Chiến lược có cơ chế kiểm soát rủi ro tốt, bao gồm quản lý vị trí và giới hạn tần suất giao dịch.

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

Logic cốt lõi của chiến lược này dựa trên những điểm sau:

  1. Sử dụng VWMA được đặt lại hàng ngày như một chỉ số xu hướng động
  2. Xây dựng danh mục đầu cơ khi giá vượt qua VWMA (mua quyền chọn đầu cơ + bán quyền chọn giảm giá)
  3. Xây dựng danh mục giảm giá khi giá giảm xuống dưới VWMA ((mua quyền chọn giảm giá + bán quyền chọn giảm giá))
  4. Các nhà đầu tư bắt buộc phải giữ tất cả các vị trí của họ tại 15:29 UTC.
  5. Đưa ra biến hasExited để kiểm soát tần suất đặt hàng, tránh giao dịch quá mức
  6. Hỗ trợ tăng vỏ bọc theo hình kim tự tháp trong đợt đột phá đồng chiều

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

  1. Động lực thích ứng mạnh mẽ - VWMA đặt lại hàng ngày để đảm bảo chỉ số luôn phản ánh tình trạng thị trường hiện tại
  2. Sự cân bằng giữa rủi ro và lợi nhuận - Giới hạn rủi ro và duy trì tiềm năng lợi nhuận thông qua danh mục đầu tư tổng hợp
  3. Kỷ luật giao dịch nghiêm ngặt - có cơ chế nhập cảnh, gia tăng và giảm bớt rõ ràng
  4. position sizing linh hoạt - hỗ trợ quản lý tỷ lệ phần trăm
  5. Logic hoạt động rõ ràng - các điều kiện tạo tín hiệu đơn giản và trực quan

Rủi ro chiến lược

  1. Rủi ro thị trường chấn động - VWMA đột phá có thể tạo ra tín hiệu sai thường xuyên trong thị trường ngang
  2. Rủi ro lỗ hổng - biến động lớn qua đêm có thể dẫn đến tổn thất lớn hơn
  3. Rủi ro trong danh mục đầu tư quyền chọn - Có sự sai lệch trung tính của Delta đối với quyền chọn tổng hợp
  4. Thực hiện điểm trượt - giao dịch tần số cao có thể đối mặt với điểm trượt lớn
  5. Hiệu quả tài chính - Việc bắt buộc thanh toán hàng ngày sẽ làm tăng chi phí giao dịch

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

  1. Tiết xuất bộ lọc tỷ lệ dao động để điều chỉnh các tham số chính sách trong môi trường có tỷ lệ dao động cao
  2. Tăng chỉ số xác nhận xu hướng, giảm thiệt hại do phá vỡ giả
  3. Tối ưu hóa cấu trúc danh mục đầu tư, chẳng hạn như xem xét việc đưa ra chiến lược chênh lệch giá theo chiều dọc
  4. Thực hiện chu kỳ VWMA thích ứng, điều chỉnh theo tình trạng thị trường động
  5. Thêm nhiều chỉ số kiểm soát rủi ro, chẳng hạn như giới hạn rút tối đa

Tóm tắt

Đây là một chiến lược giao dịch trong ngày có cấu trúc, logic nghiêm ngặt. Nó nắm bắt xu hướng ngắn hạn thông qua chỉ số VWMA, giao dịch kết hợp với danh mục quyền chọn tổng hợp, có cơ chế kiểm soát rủi ro tốt.

Mã nguồn chiến lược
/*backtest
start: 2025-02-16 00:00:00
end: 2025-02-23 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("Session VWMA Synthetic Options Strategy", overlay=true, initial_capital=100000, 
     default_qty_type=strategy.percent_of_equity, default_qty_value=10, pyramiding=10, calc_on_every_tick=true)

//──────────────────────────────
// Session VWMA Inputs
//──────────────────────────────
vwmaLen   = input.int(55, title="VWMA Length", inline="VWMA", group="Session VWMA")
vwmaColor = input.color(color.orange, title="VWMA Color", inline="VWMA", group="Session VWMA", tooltip="VWMA resets at the start of each session (at the opening of the day).")

//──────────────────────────────
// Session VWMA Calculation Function
//──────────────────────────────
day_vwma(_start, s, l) =>
    bs_nd = ta.barssince(_start)
    v_len = math.max(1, bs_nd < l ? bs_nd : l)
    ta.vwma(s, v_len)

//──────────────────────────────
// Determine Session Start
//──────────────────────────────
// newSession becomes true on the first bar of a new day.
newSession = ta.change(time("D")) != 0

//──────────────────────────────
// Compute Session VWMA
//──────────────────────────────
vwmaValue = day_vwma(newSession, close, vwmaLen)
plot(vwmaValue, color=vwmaColor, title="Session VWMA")

//──────────────────────────────
// Define Signal Conditions (only on transition)
//──────────────────────────────
bullCond = low > vwmaValue      // Bullish: candle low above VWMA
bearCond = high < vwmaValue     // Bearish: candle high below VWMA

// Trigger signal only on the bar where the condition first becomes true
bullSignal = bullCond and not bullCond[1]
bearSignal = bearCond and not bearCond[1]

//──────────────────────────────
// **Exit Condition at 15:29 IST**
//──────────────────────────────
sessionEnd = hour == 15 and minute == 29

// Exit all positions at 15:29 IST
if sessionEnd
    strategy.close_all(comment="Closing all positions at session end")

//──────────────────────────────
// **Trade Control Logic**
//──────────────────────────────
var bool hasExited = true  // Track if an exit has occurred since last entry

// Reset exit flag when a position is exited
if strategy.position_size == 0
    hasExited := true

//──────────────────────────────
// **Position Management: Entry & Exit**
//──────────────────────────────
if newSession
    hasExited := true  // Allow first trade of the day

// On a bullish signal: 
//   • If currently short, close the short position and then enter long
//   • Otherwise, add to any existing long position **only if an exit happened before**
if bullSignal and (hasExited or newSession)
    if strategy.position_size < 0
        strategy.close("Short", comment="Exit Short on Bull Signal")
        strategy.entry("Long", strategy.long, comment="Enter Long: Buy Call & Sell Put at ATM")
    else
        strategy.entry("Long", strategy.long, comment="Add Long: Buy Call & Sell Put at ATM")
    hasExited := false  // Reset exit flag

// On a bearish signal: 
//   • If currently long, close the long position and then enter short
//   • Otherwise, add to any existing short position **only if an exit happened before**
if bearSignal and (hasExited or newSession)
    if strategy.position_size > 0
        strategy.close("Long", comment="Exit Long on Bear Signal")
        strategy.entry("Short", strategy.short, comment="Enter Short: Buy Put & Sell Call at ATM")
    else
        strategy.entry("Short", strategy.short, comment="Add Short: Buy Put & Sell Call at ATM")
    hasExited := false  // Reset exit flag

//──────────────────────────────
// **Updated Alert Conditions**
//──────────────────────────────
// Alerts for valid trade entries
alertcondition(bullSignal and (hasExited or newSession), 
     title="Long Entry Alert", 
     message="Bullish signal: BUY CALL & SELL PUT at ATM. Entry allowed.")

alertcondition(bearSignal and (hasExited or newSession), 
     title="Short Entry Alert", 
     message="Bearish signal: BUY PUT & SELL CALL at ATM. Entry allowed.")