
Chiến lược giao dịch chéo xu hướng trọng lượng và trọng lượng là một hệ thống giao dịch định lượng dựa trên thị trường, đưa ra quyết định giao dịch bằng cách xác định các điểm chuyển đổi của thị trường từ biến động thấp sang biến động cao. Chiến lược này kết hợp hai chỉ số quan trọng: chỉ số động lượng biến động ((VMI) và trung tâm giá trọng lượng trọng lượng ((VWPC)). VMI đo lường tốc độ biến động, được sử dụng để tham gia vào thị trường khi thị trường chuyển từ giai đoạn yên tĩnh sang giai đoạn hoạt động và rút ra khi biến động đạt đến đỉnh hỗn loạn; và VWPC hoạt động như một bộ lọc xu hướng dựa trên khối lượng giao dịch, xác định định hướng thị trường tổng thể bằng giá điển hình.
Nguyên tắc cốt lõi của chiến lược này là sử dụng chu kỳ thay đổi biến động của thị trường và hướng xu hướng để đưa ra quyết định giao dịch. Cụ thể:
Tính toán VMI:
Trung tâm giá cân nặng công suất (VWPC) tính toán:
Thực hiện logic giao dịch trong hai giai đoạn:
Chiến lược cho phép cấu hình hướng giao dịch (chỉ giao dịch nhiều, chỉ giao dịch ngắn hoặc giao dịch hai chiều) và tối ưu hóa các tham số để phù hợp với môi trường thị trường khác nhau.
Một phân tích sâu hơn về mã của chiến lược này cho thấy những ưu điểm sau:
Lựa chọn thời gian giao dịch dựa trên chu kỳ thị trườngChiến lược này sử dụng chỉ số VMI để xác định các điểm chuyển đổi của thị trường từ biến động thấp sang biến động cao, thường đại diện cho sự khởi đầu của một xu hướng giá mới, giúp tham gia vào xu hướng ban đầu.
Xác nhận xu hướng kết hợp với khối lượng giao dịchVWPC cung cấp một chỉ số xu hướng đại diện hơn so với trung bình di chuyển đơn giản, giảm tín hiệu sai.
Điều kiện nhập cảnh và xuất cảnh rõ ràngChiến lược: có logic nhập cảnh rõ ràng ((các biến động bắt đầu tăng lên)) và logic xuất cảnh ((các biến động đạt đến cực), tránh phán đoán chủ quan.
Khả năng thích nghi cao: Bằng cách tối ưu hóa tham số, chiến lược này có thể thích ứng với các môi trường thị trường khác nhau và các loại giao dịch. Đặc biệt, các ngưỡng yên tĩnh và hỗn loạn của VMI có thể được điều chỉnh theo đặc điểm của thị trường.
Tích hợp quản lý rủi roChiến lược này đã tích hợp quản lý vị trí ((15% tiền sử dụng tài khoản theo mặc định) và hạn chế giao dịch ngược ((pyramiding = 0), giúp kiểm soát rủi ro.
Hỗ trợ hình ảnhChiến lược vẽ đường xu hướng VWPC và tín hiệu nhập / thoát trên biểu đồ, giúp thương nhân hiểu trực quan tình trạng thị trường và logic chiến lược.
Hiệu quả tính toán cao: Bằng cách sử dụng các hàm tích hợp như ta.rma và ta.barssince, hiệu quả tính toán của chiến lược cao hơn, phù hợp với ứng dụng giao dịch thời gian thực.
Mặc dù có nhiều lợi thế, chiến lược này cũng có những rủi ro tiềm ẩn như sau:
Rủi ro đột phá giả biến động: Thị trường có thể có một sự gia tăng biến động ngắn ngủi sau đó quay trở lại một cách nhanh chóng, dẫn đến tín hiệu sai. Giải pháp là điều chỉnh ngưỡng VMI yên tĩnh hoặc tăng điều kiện xác nhận.
Xu hướng bị trì hoãnVWPC có thể bị tụt hậu như một chỉ số xu hướng và có thể không phản ứng kịp thời khi thị trường chuyển đổi đột ngột.
Độ nhạy tham sốChức năng chiến lược nhạy cảm với các thiết lập tham số (đặc biệt là độ dài và ngưỡng VMI), các môi trường thị trường khác nhau có thể yêu cầu các kết hợp tham số khác nhau.
Không chắc chắn về tần suất giao dịchVì chiến lược dựa trên sự biến động, tần suất tín hiệu giao dịch có thể khác nhau rất nhiều ở các giai đoạn thị trường khác nhau, ảnh hưởng đến lợi nhuận tổng thể và kiểm soát rút lui.
Tác động chi phí giao dịch: Mặc dù chiến lược tính đến hoa hồng giao dịch ((0.075%), nhưng trong giao dịch thực tế, điểm trượt và các chi phí giao dịch khác có thể ảnh hưởng đến hiệu suất chiến lược hơn nữa.
Dựa vào dữ liệu khối lượng giao dịchChỉ số VWPC phụ thuộc vào dữ liệu khối lượng giao dịch, trong một số thị trường hoặc thời gian, dữ liệu khối lượng giao dịch có thể không chính xác hoặc không đáng tin cậy, ảnh hưởng đến độ chính xác của chỉ số.
Các hướng tối ưu hóa sau đây có thể được đề xuất thông qua phân tích sâu về mã:
Thêm bộ lọc biến độngCó thể giới thiệu một cơ chế điều chỉnh giá trị giá trị động dựa trên biến động lịch sử, cho phép giá trị giá trị của VMI trong khu vực yên tĩnh và khu vực hỗn loạn có thể tự động điều chỉnh theo mức độ biến động của thị trường tổng thể, cải thiện khả năng thích ứng của chiến lược.
Củng cố cơ chế xác nhận xu hướng: Có thể thêm xác nhận xu hướng nhiều khung thời gian dựa trên VWPC hoặc kết hợp với các chỉ số xu hướng khác (như chỉ số hướng ADX) để tăng độ chính xác của phán đoán xu hướng.
Tối ưu hóa cơ chế ra sânChiến lược hiện tại chỉ hoạt động khi VMI đạt đến vùng hỗn loạn, bạn có thể xem xét thêm mức dừng lỗ và lợi nhuận mục tiêu, hoặc chiến lược dừng lỗ động dựa trên biến động để kiểm soát tốt hơn rủi ro và khóa lợi nhuận.
Tăng lượng lọc giao dịch: Có thể thêm điều kiện xác nhận khối lượng giao dịch, chỉ nhập vào khi khối lượng giao dịch tăng, tránh giao dịch trong môi trường có tính thanh khoản thấp.
Thêm bộ lọc thời gianMột số thị trường có thể có mô hình biến động trong một khoảng thời gian nhất định, có thể thêm các điều kiện lọc thời gian để tránh thời gian giao dịch kém hiệu quả.
Cơ chế thích ứng tham sốMột cơ chế có thể được phát triển để tự động điều chỉnh các tham số dựa trên hiệu suất thị trường gần đây, cho phép chiến lược thích ứng tốt hơn với sự thay đổi của thị trường.
Tối ưu hóa quản lý tài chính: Có thể quản lý vị trí động dựa trên biến động, điều chỉnh quy mô giao dịch trong môi trường biến động khác nhau, cân bằng rủi ro và lợi nhuận.
Chiến lược giao dịch chéo xu hướng trọng lượng và trọng lượng biến động là một hệ thống giao dịch định lượng kết hợp phân tích biến động và theo dõi xu hướng. Nó nhập vào thị trường từ điểm chuyển đổi từ yên tĩnh sang hoạt động bằng chỉ số VMI và thoát ra khi biến động đạt đến đỉnh; đồng thời sử dụng chỉ số VWPC để đảm bảo hướng giao dịch phù hợp với xu hướng tổng thể.
Tuy nhiên, chiến lược này cũng phải đối mặt với những thách thức như phá vỡ giả biến động, trì hoãn phán đoán xu hướng và tính nhạy cảm của tham số. Sự ổn định và thích ứng của chiến lược có thể được nâng cao hơn nữa bằng cách giới thiệu điều chỉnh giá trị ngưỡng động, tăng cường cơ chế xác nhận xu hướng, tối ưu hóa logic ra sân và thực hiện các tham số thích ứng.
Cuối cùng, chiến lược này cung cấp một khung giao dịch dựa trên chu kỳ biến động và biến động của thị trường, phù hợp với các môi trường thị trường khác nhau, nhưng các nhà giao dịch vẫn cần tối ưu hóa tham số và điều chỉnh chiến lược để đạt được hiệu quả tối ưu theo các loại giao dịch và đặc điểm thị trường cụ thể.
/*backtest
start: 2024-07-14 00:00:00
end: 2025-07-12 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":200000}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TiamatCrypto
//@version=5
strategy("Market Entropy Strategy V2.5",
overlay=true,
initial_capital=10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=15, // Slightly more aggressive allocation
commission_type=strategy.commission.percent,
commission_value=0.075,
pyramiding=0) // Allow only one trade in one direction
// --- General Settings ---
trade_direction = input.string("Both", "Trade Direction", options=["Long", "Short", "Both"], group="General Settings")
// --- Inputs for Optimization ---
// VMI Settings
vmi_length = input.int(14, "VMI Length", group="VMI Settings")
atr_period = input.int(10, "ATR Period for VMI", group="VMI Settings")
vmi_calm_zone = input.int(25, "VMI Calm Zone (Entry Level)", group="VMI Settings", step=5)
vmi_chaos_zone = input.int(85, "VMI Chaos Zone (Exit Level)", group="VMI Settings", step=5)
// VWPC Settings
vwpc_length = input.int(50, "VWPC Filter Length", group="VWPC Trend Filter")
setup_lookback = input.int(10, "How far to look for 'Armed' (candles)", group="Entry Logic")
// --- Indicator #1: Volatility Momentum Index (VMI) ---
current_atr = ta.atr(atr_period)
atr_change = current_atr - current_atr[1]
up_accel = atr_change > 0 ? atr_change : 0
down_accel = atr_change < 0 ? -atr_change : 0
avg_up_accel = ta.rma(up_accel, vmi_length)
avg_down_accel = ta.rma(down_accel, vmi_length)
rs_vmi = avg_down_accel == 0 ? 0 : avg_up_accel / avg_down_accel
vmi = avg_down_accel == 0 ? 100 : avg_up_accel == 0 ? 0 : 100 - (100 / (1 + rs_vmi))
// --- Indicator #2: Volume-Weighted Price Center (VWPC) ---
// Function to calculate VWPC
f_vwpc(length) =>
sum_price_volume = 0.0
sum_volume = 0.0
// We use the typical price, which better represents the candle
typical_price = (high + low + close) / 3
for i = 0 to length - 1
sum_price_volume += typical_price[i] * nz(volume[i])
sum_volume += nz(volume[i])
sum_volume == 0 ? typical_price : sum_price_volume / sum_volume
vwpc = f_vwpc(vwpc_length)
// --- Strategy Logic ---
// Trend Definition
is_uptrend = close > vwpc
is_downtrend = close < vwpc
// Phase 1: "Armed" Condition (Setup)
// We check if VMI WAS in the calm zone in the recent past
was_calm_recently = ta.barssince(vmi < vmi_calm_zone) < setup_lookback
// Phase 2: "Fire" Condition (Trigger)
// VMI is currently crossing the Calm Zone upwards
trigger_fire = ta.crossover(vmi, vmi_calm_zone)
// Combination for ENTRY
buy_signal = is_uptrend and was_calm_recently and trigger_fire
sell_signal = is_downtrend and was_calm_recently and trigger_fire
// Condition for EXIT ("Exhaustion")
// The same condition applies for both long and short - peak chaos
exit_signal = ta.crossover(vmi, vmi_chaos_zone)
// --- Executing Orders ---
// Entry Conditions
allow_longs = trade_direction == "Long" or trade_direction == "Both"
allow_shorts = trade_direction == "Short" or trade_direction == "Both"
// Entries
if (buy_signal and allow_longs)
strategy.entry("Buy", strategy.long, comment="Enter LONG (Armed->Fire)")
if (sell_signal and allow_shorts)
strategy.entry("Sell", strategy.short, comment="Enter SHORT (Armed->Fire)")
// Exits
if (strategy.position_size > 0 and exit_signal)
strategy.close("Buy", comment="Exit LONG (Chaos)")
if (strategy.position_size < 0 and exit_signal)
strategy.close("Sell", comment="Exit SHORT (Chaos)")
// --- Plotting on the chart for visual inspection ---
plot(vwpc, "VWPC Center of Gravity", color=color.new(color.yellow, 0), linewidth=2)
plotshape(buy_signal and allow_longs, "LONG Entry", shape.labelup, location.belowbar, color=color.new(color.aqua, 0), text="ENTRY ↑", textcolor=color.white, size=size.small)
plotshape(sell_signal and allow_shorts, "SHORT Entry", shape.labeldown, location.abovebar, color=color.new(color.fuchsia, 0), text="ENTRY ↓", textcolor=color.white, size=size.small)
// Plotting the exit signal for a better overview
exit_marker_y_pos = strategy.position_size > 0 ? high : low
plotshape(series=(exit_signal and strategy.position_size != 0 ? exit_marker_y_pos : na), title="Exit", style=shape.xcross, location=location.absolute, color=color.new(color.orange, 0), size=size.tiny, text="END")