
Chiến lược này là một hệ thống giao dịch định lượng kết hợp giá trung bình trọng lượng Ponzi (GWAP) và phân tích động lực. Nó dự đoán xu hướng giá bằng cách xử lý trọng lượng Ponzi đối với dữ liệu giá lịch sử và kết hợp với chỉ số động lực ngắn hạn.
Chiến lược này dựa trên hai lý thuyết tâm lý cốt lõi: hiệu ứng động lượng và định giá trọng lượng của Puma. Về mặt động lượng, chiến lược sử dụng tính chất của xu hướng giá tiếp tục trong thị trường tài chính; về mặt trọng lượng, trọng lượng giảm giá theo chỉ số đối với giá lịch sử thông qua nhân tố Puma (range 0.5-1.5). Về thực hiện cụ thể, chiến lược bằng cách tính toán GWAP làm giá chuẩn, mở nhiều vị trí khi giá nằm trên GWAP và có xu hướng tăng lên trong ba chu kỳ liên tiếp, ngược lại, mở vị trí trống.
Chiến lược này thực hiện theo dõi thông minh các xu hướng thị trường bằng cách kết hợp trọng lượng và động lực của Puma. Ưu điểm cốt lõi của nó là có thể điều chỉnh phân bổ trọng lượng theo tình hình thị trường động, đồng thời duy trì hiệu quả tính toán cao. Mặc dù có một số rủi ro thị trường và các vấn đề nhạy cảm về tham số, chiến lược có triển vọng ứng dụng tốt bằng cách tối ưu hóa và hoàn thiện liên tục.
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-16 08:00:00
period: 6h
basePeriod: 6h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("BTC Future Gamma-Weighted Momentum Model (BGMM)", shorttitle="BGMM", overlay=true,
default_qty_type=strategy.cash, default_qty_value=50000,
slippage=1, commission_value=0.01)
// Inputs
length = input.int(60, "Length for GWAP Calculation")
gamma_factor = input.float(0.75, "Gamma Weight Factor", minval=0.5, maxval=1.5, step=0.01)
// Helper Functions
var float cumulative_weighted_price = na
var float cumulative_weight = na
price = (high + low + close) / 3 // Typical price as a baseline
gamma_weights = array.new_float(length, 0.0)
price_series = array.new_float(length, na)
// Populate Arrays for Calculation
if bar_index >= length
for i = 0 to length - 1
weighted_gamma = math.pow(gamma_factor, i)
array.set(gamma_weights, i, weighted_gamma)
array.set(price_series, i, close[i])
// Compute GWAP
weighted_sum = 0.0
weight_total = 0.0
for i = 0 to length - 1
w = array.get(gamma_weights, i)
p = array.get(price_series, i)
weighted_sum := weighted_sum + p * w
weight_total := weight_total + w
GWAP = weight_total != 0 ? weighted_sum / weight_total : na
plot(GWAP, color=color.red, title="Gamma Weighted Average Price")
// Conditions for Trade Signals
long_condition = close > GWAP and close[1] > close[2] and close[2] > close[3]
short_condition = close < GWAP and close[1] < close[2] and close[2] < close[3]
// Strategy Logic
if long_condition
strategy.entry("Long", strategy.long)
if short_condition
strategy.entry("Short", strategy.short)