Tài nguyên đang được tải lên... tải...

Chiến lược giao thoa động cơ trung bình được cân nhắc thanh khoản

Tác giả:ChaoZhang, Ngày: 2025-01-17 15:45:55
Tags:LWMAEMAVOLstdevChữ chéo

 Liquidity-Weighted Moving Average Momentum Crossover Strategy

Tổng quan

Chiến lược này là một hệ thống giao dịch dựa trên các đường trung bình động được cân nhắc thanh khoản, đo thanh khoản thị trường thông qua mối quan hệ giữa chuyển động giá và khối lượng giao dịch. Nó xây dựng các đường trung bình động nhanh và chậm để tạo ra tín hiệu mua khi đường nhanh vượt qua đường chậm và bán tín hiệu khi nó vượt qua đường chậm. Chiến lược đặc biệt tập trung vào các sự kiện thanh khoản bất thường, ghi lại mức giá chính trong một mảng cho các cơ hội giao dịch chính xác hơn.

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

Cơ chế cốt lõi dựa trên việc đo lường thanh khoản thị trường thông qua tỷ lệ khối lượng so với biến động giá. 1. Tính toán chỉ số thanh khoản: khối lượng chia cho sự khác biệt tuyệt đối giữa giá đóng và giá mở 2. Đặt ranh giới thanh khoản: Xác định thanh khoản bất thường bằng EMA và độ lệch chuẩn 3. Duy trì mảng giá: Ghi lại giá khi vi phạm ranh giới thanh khoản 4. Xây dựng trung bình động: Tính toán EMA nhanh và chậm dựa trên các sự kiện thanh khoản 5. Tạo tín hiệu giao dịch: Xác định các điểm nhập và ra bằng cách chéo trung bình động

Ưu điểm chiến lược

  1. Nhận thức về thanh khoản: Thu thập chính xác hơn hoạt động thị trường bằng cách kết hợp chuyển động khối lượng và giá
  2. Theo dõi sự kiện: Ghi lại mức giá chính thông qua việc thực hiện mảng, ngăn chặn các cơ hội bị bỏ lỡ
  3. Chuyển đổi năng động: EMA giảm trọng lượng cho phép điều chỉnh thị trường tốt hơn
  4. Kiểm soát rủi ro: Cung cấp tín hiệu vào và ra rõ ràng thông qua các đường chéo
  5. Khả năng tùy chỉnh: Nhiều tham số có thể điều chỉnh cho các điều kiện thị trường khác nhau

Rủi ro chiến lược

  1. Độ nhạy của các tham số: Hiệu quả của chiến lược phụ thuộc rất nhiều vào các cài đặt tham số
  2. Lag: Sự chậm trễ vốn có trong các hệ thống dựa trên trung bình động
  3. Sự phụ thuộc thị trường: Hiệu suất không ổn định trong một số khung thời gian và thị trường
  4. Sự phá vỡ sai: Có thể tạo ra các tín hiệu không chính xác trong thời gian biến động cao
  5. Chi phí giao dịch: Giao dịch thường xuyên có thể gây ra chi phí đáng kể

Hướng dẫn tối ưu hóa

  1. Thực hiện bộ lọc:
  • Thêm các chỉ số xác nhận xu hướng như ADX
  • Sử dụng các chỉ số biến động để lọc các tín hiệu sai
  1. Cải thiện thời gian nhập cảnh:
  • Bao gồm các mức hỗ trợ và kháng cự
  • Xem xét xác nhận khối lượng đột phá
  1. Tối ưu hóa lựa chọn tham số:
  • Thực hiện các thông số thích nghi
  • Điều chỉnh năng động dựa trên điều kiện thị trường
  1. Cải thiện quản lý rủi ro:
  • Thêm các cơ chế dừng lỗ và lấy lợi nhuận
  • Thực hiện hệ thống định kích thước vị trí

Tóm lại

Chiến lược sáng tạo này kết hợp phân tích thanh khoản với các chỉ số kỹ thuật, tối ưu hóa các hệ thống chéo trung bình động truyền thống bằng cách theo dõi sự bất thường về thanh khoản trên thị trường. Mặc dù nó cho thấy kết quả hứa hẹn trong điều kiện thị trường cụ thể, cần tối ưu hóa thêm để cải thiện tính ổn định và khả năng áp dụng. Các nhà giao dịch nên kiểm tra kỹ lưỡng trước khi thực hiện trực tiếp và xem xét kết hợp với các chỉ số khác cho một hệ thống giao dịch mạnh mẽ hơn.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-16 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//Liquidity ignoring price location

//@version=6
strategy("Liquidity Weighted Moving Averages [AlgoAlpha]", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)

// Inputs
outlierThreshold = input.int(10, "Outlier Threshold Length")
fastMovingAverageLength = input.int(50, "Fast MA Length")
slowMovingAverageLength = input.int(100, "Slow MA Length")
start_date = input(timestamp("2018-01-01 00:00"), title="Start Date")
end_date = input(timestamp("2069-12-31 23:59"), title="End Date")

// Define liquidity based on volume and price movement
priceMovementLiquidity = volume / math.abs(close - open)

// Calculate the boundary for liquidity to identify outliers
liquidityBoundary = ta.ema(priceMovementLiquidity, outlierThreshold) + ta.stdev(priceMovementLiquidity, outlierThreshold)

// Initialize an array to store liquidity values when they cross the boundary
var liquidityValues = array.new_float(5)

// Check if the liquidity crosses above the boundary and update the array
if ta.crossover(priceMovementLiquidity, liquidityBoundary)
    array.insert(liquidityValues, 0, close)
    if array.size(liquidityValues) > 5
        array.pop(liquidityValues)

// Calculate the Exponential Moving Averages for the close price at the last liquidity crossover
fastEMA = ta.ema(array.size(liquidityValues) > 0 ? array.get(liquidityValues, 0) : na, fastMovingAverageLength)
slowEMA = ta.ema(array.size(liquidityValues) > 0 ? array.get(liquidityValues, 0) : na, slowMovingAverageLength)

// Trading Logic
in_date_range = true
buy_signal = ta.crossover(fastEMA, slowEMA) and in_date_range
sell_signal = ta.crossunder(fastEMA, slowEMA) and in_date_range

// Strategy Entry and Exit
if (buy_signal)
    strategy.entry("Buy", strategy.long)

if (sell_signal)
    strategy.close("Buy")

// Plotting
fastPlot = plot(fastEMA, color=fastEMA > slowEMA ? color.new(#00ffbb, 50) : color.new(#ff1100, 50), title="Fast EMA")
slowPlot = plot(slowEMA, color=fastEMA > slowEMA ? color.new(#00ffbb, 50) : color.new(#ff1100, 50), title="Slow EMA")

// Create a fill between the fast and slow EMA plots with appropriate color based on crossover
fill(fastPlot, slowPlot, fastEMA > slowEMA ? color.new(#00ffbb, 50) : color.new(#ff1100, 50))


Có liên quan

Thêm nữa