Chiến lược chênh lệch giá giữa các thị trường dựa trên đường trung bình động chính quy thích ứng


Ngày tạo: 2023-11-16 16:20:11 sửa đổi lần cuối: 2023-11-16 16:20:11
sao chép: 0 Số nhấp chuột: 642
1
tập trung vào
1617
Người theo dõi

Chiến lược chênh lệch giá giữa các thị trường dựa trên đường trung bình động chính quy thích ứng

Tổng quan

Chiến lược này thực hiện giao dịch tháo gỡ giữa các thị trường khác nhau bằng cách tính toán đường trung bình di chuyển chính xác thích ứng. Chiến lược này có các tính năng như tháo gỡ giữa các thị trường, điều chỉnh tham số động và kiểm soát rủi ro.

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

Chiến lược này đầu tiên xác định một hàm scaleMinimax để chuẩn hóa chuỗi thời gian đến phạm vi được chỉ định. Sau đó, xác định một hàm rema trung bình di chuyển thích nghi để tính toán đường tín hiệu được làm mịn.

  1. Định nghĩa một cửa sổ trượt với độ dài mặc định là 5 ngày.
  2. Giá trị ký hiệu hàng ngày là trung bình trọng số của giá trị ký hiệu ngày trước với giá đóng cửa ngày hôm đó. Trung bình trọng số được sử dụng một cơ chế trọng số tự thích ứng, càng gần giá trị hiện tại, trọng lượng càng lớn.
  3. Thêm tham số λ làm tham số chính thức để chuyển đổi sig trở nên mượt mà hơn.

Sau khi nhận được đường tín hiệu, chiến lược sẽ quyết định số dư bằng cách đánh giá đường tín hiệu và giá của các giao dịch. Cụ thể:

  1. Khi sig trên giá, làm nhiều hơn nữa.
  2. Khi ký tên đeo trên giá, hãy để trống.

Ngoài ra, chiến lược này đã thêm yếu tố mịn và hiển thị đường tín hiệu show_line làm tham số có thể điều chỉnh, tăng tính linh hoạt của chiến lược.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau đây so với chiến lược trung bình di chuyển truyền thống:

  1. Một cơ chế tăng cân thích ứng có thể đáp ứng nhanh hơn với sự thay đổi giá cả.
  2. Thêm các số chính xác hóa để làm cho đường tín hiệu mịn hơn, tránh tín hiệu sai do biến động mạnh mẽ của giá.
  3. Thị trường thương mại: Thị trường thương mại là nơi mà các nhà đầu tư có thể kiếm tiền từ sự khác biệt về giá cả giữa các thị trường.
  4. Thiết kế tham số điều chỉnh linh hoạt, có thể được tối ưu hóa theo tình hình thị trường.

Rủi ro và giải pháp

Chiến lược này cũng có một số rủi ro:

  1. Có nhiều khả năng xảy ra tín hiệu sai khi giao nhau hai bên. Giải pháp là điều chỉnh các tham số mượt một cách thích hợp để tránh rung sóng.

  2. Định giá giữa các thị trường phải đảm bảo rằng hai thị trường có liên quan đến giá cả và có xu hướng nhất quán. Giải pháp là chọn một thị trường có liên quan cao để định giá.

  3. Để tối ưu hóa tham số cần phải tích lũy đủ dữ liệu lịch sử để kiểm tra lại. Giải pháp là điều chỉnh tham số một cách cẩn thận trong giao dịch thực tế.

Hướng tối ưu hóa

Chiến lược này cũng có thể được tối ưu hóa bằng cách:

  1. Trong lựa chọn tham số, bạn có thể đưa vào các thuật toán học máy để tự động tối ưu hóa các tham số.

  2. Trong việc tạo tín hiệu, có thể giới thiệu nhiều chỉ số hơn để kết hợp, xây dựng tín hiệu giao dịch ổn định hơn.

  3. Trong kiểm soát rủi ro, bạn có thể thiết lập đường dừng để kiểm soát tổn thất đơn lẻ.

  4. Trong mảng mạo hiểm xuyên thị trường, có thể mở rộng sang các loại giao dịch có liên quan cao hơn.

Tóm tắt

Chiến lược này thực hiện giao dịch mạo hiểm giữa các thị trường bằng cách tính toán trung bình di chuyển tự động. So với các chiến lược trung bình di chuyển truyền thống, nó có các lợi thế như tự thích ứng tham số, xử lý trơn tru, mạo hiểm giữa các thị trường. Tiếp theo, tối ưu hóa chiến lược thông qua học máy, kết hợp tín hiệu, quản lý rủi ro.

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

//@version=3
strategy("Crossover82%", overlay=true)

//
// Functions
//
scaleMinimax(X, p, min, max) => 
    hi = highest(X, p), lo = lowest(X, p)
    (max - min) * (X - lo)/(hi - lo) + min

rema(ts, p) => // regularized ma
    rm = 0.0, lambda = .5, a = 2 / (p + 1)
    rm := (nz(rm[1]) + a * (ts - nz(rm[1])) + lambda * (2 * nz(rm[1]) - nz(rm[2]))) / (lambda + 1)
    rm
    
//
// Inputs
//
X = input(close, title="Data source")
smooth = input(2, title="REMA smooth factor")
show_line = input(true, title="Show signal line")

//
// Main
//
p = 5
sig = rema(scaleMinimax(pow(X*p,-X) - 0.1, 100, lowest(X, 100), highest(X, 100)), smooth)

plot(show_line ? sig : na, linewidth=1)
plot(cross(sig, X) ? ohlc4 : na, style=circles, linewidth=8, color=blue, transp=50)

longCondition = crossover(sig, X)
if (longCondition)
    strategy.entry("LE", strategy.long)

shortCondition = crossunder(sig, X)
if (shortCondition)
    strategy.entry("SE", strategy.short)