Chiến lược giao dịch định lượng theo dõi xu hướng động lượng đa thời gian và quản lý rủi ro

SMA MA SRI TP SL BE
Ngày tạo: 2025-04-17 14:01:16 sửa đổi lần cuối: 2025-04-17 14:01:16
sao chép: 1 Số nhấp chuột: 350
2
tập trung vào
319
Người theo dõi

Chiến lược giao dịch định lượng theo dõi xu hướng động lượng đa thời gian và quản lý rủi ro Chiến lược giao dịch định lượng theo dõi xu hướng động lượng đa thời gian và quản lý rủi ro

Tổng quan

Đây là một chiến lược giao dịch định lượng dựa trên một tập hợp các chỉ số kỹ thuật trên nhiều thang thời gian, thông qua phân tích tổng hợp các đường trung bình di chuyển, các chỉ số tương đối mạnh ngẫu nhiên (SRI) và biến động giá, để thực hiện việc nhập vào thị trường chính xác và kiểm soát rủi ro. Chiến lược này được thiết kế để nắm bắt xu hướng thị trường, đồng thời quản lý rủi ro giao dịch hiệu quả, phù hợp cho các nhà giao dịch định lượng theo đuổi thu nhập ổn định.

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

Trung tâm của chiến lược bao gồm 5 chỉ số kỹ thuật quan trọng:

  1. Chỉ số trung bình di chuyển:
  • Trung bình di chuyển đơn giản (SMA) 5, 10, 50 và 100 ngày
  • Xác định hướng xu hướng thị trường thông qua vị trí tương đối của đường trung bình di chuyển trên nhiều thang thời gian
  • Mối quan hệ tương đối của giá với đường trung bình di chuyển xác định tín hiệu nhập
  1. Các chỉ số SRI:
  • Tính SRI bằng 1 phút
  • SRI thấp hơn 70 là tín hiệu làm nhiều
  • SRI cao hơn 30 là tín hiệu làm trống
  1. Hình thức dây chuyền:
  • Phân tích mối quan hệ giữa giá mở và giá đóng của đường K trước đó
  • Đánh giá động lực giá hiện tại và tâm trạng thị trường
  1. Cơ chế quản lý rủi ro:
  • Thiết lập điểm dừng (TP) và điểm dừng (SL)
  • Chiến lược Break-Even (BE)
  • Động thái điều chỉnh vị trí dừng lỗ

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

  1. Xác nhận tín hiệu đa chiều
  • Sử dụng moving average, SRI và động lực giá
  • Giảm đáng kể khả năng của tín hiệu sai
  • Tăng độ tin cậy tín hiệu giao dịch
  1. Kiểm soát rủi ro linh hoạt
  • Đặt trước điểm dừng và điểm dừng
  • Cơ chế bảo lãnh vốn lỗ hổng động
  • Kiểm soát hiệu quả tổn thất tối đa của một giao dịch
  1. Phân tích theo nhiều thời gian
  • Kết hợp các trung bình động theo chu kỳ khác nhau
  • Ghi lại toàn bộ xu hướng thị trường
  • Tăng khả năng thích ứng chiến lược
  1. Thể điều chỉnh tham số
  • Cài đặt điểm dừng
  • Thích ứng với các môi trường thị trường và các loại giao dịch khác nhau

Rủi ro chiến lược

  1. Rủi ro độ nhạy của tham số
  • Trung bình di chuyển và tham số SRI có ảnh hưởng đáng kể đến hiệu suất chiến lược
  • Cần có đầy đủ phản hồi và tối ưu hóa tham số
  1. Rủi ro biến động mạnh của thị trường
  • Chiến lược có thể thất bại trong điều kiện thị trường cực đoan
  • Đề xuất giới hạn rút tối đa
  1. Rủi ro giao dịch quá mức
  • Giao dịch thường xuyên có thể làm tăng chi phí giao dịch
  • Cần điều chỉnh với chi phí giao dịch thực tế
  1. Rủi ro bị tụt hậu về chỉ số
  • Đường trung bình di chuyển có một chút chậm trễ
  • Có thể bỏ lỡ tín hiệu giai đoạn đầu của xu hướng

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

  1. Giới thiệu thuật toán học máy
  • Các tham số tối ưu hóa sử dụng thuật toán học giám sát
  • Động thái điều chỉnh điểm dừng lỗ
  • Tăng khả năng thích ứng của chiến lược
  1. Thêm điều kiện lọc bổ sung
  • Tiến hành chỉ số giao dịch
  • Tham gia chỉ số cường độ xu hướng
  • Tăng độ chính xác của tín hiệu
  1. Tối ưu hóa khả năng thích ứng đa giống
  • Phát triển cơ chế thích ứng thông số chung
  • Giảm sự can thiệp của con người
  • Cải thiện tính phổ biến của chiến lược

Tóm tắt

Đây là một chiến lược giao dịch định lượng dựa trên phân tích theo nhiều thời gian, nhằm nắm bắt xu hướng thị trường và kiểm soát rủi ro giao dịch thông qua các chỉ số kỹ thuật tổng hợp và cơ chế quản lý rủi ro tiên tiến. Điểm mạnh cốt lõi của chiến lược là xác thực đa chiều của tín hiệu và kiểm soát rủi ro linh hoạt.

Mã nguồn chiến lược
/*backtest
start: 2024-04-17 00:00:00
end: 2025-04-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"TRX_USD"}]
*/

//@version=6
strategy("Strategia LONG & SHORT con TP, SL e BE", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)

// === INPUT === //
tp_points = input.int(60000, "Take Profit (punti)")
sl_points = input.int(25000, "Stop Loss (punti)")
breakeven_trigger = tp_points * 0.5

// === MEDIE MOBILI === //
ma5  = ta.sma(close, 5)
ma10 = ta.sma(close, 10)
ma50 = ta.sma(close, 50)
ma100 = ta.sma(close, 100)

// === SRI da timeframe 1 minuto === //
sri_tf = "1"
sri_length = 10
sri_src = close
sri = request.security(syminfo.tickerid, sri_tf, ta.stoch(sri_src, sri_src, sri_src, sri_length))

// === CONDIZIONI LONG === //
long_candle        = open > close[1]
price_above_ma100  = close > ma100
ma50_above_ma100   = ma50 > ma100
ma5_above_ma10     = ma5 > ma10
sri_below_75       = sri < 70

long_condition = long_candle and price_above_ma100 and ma50_above_ma100 and ma5_above_ma10 and sri_below_75

// === CONDIZIONI SHORT === //
short_candle       = open < close[1]
price_below_ma100  = close < ma100
ma50_below_ma100   = ma50 < ma100
ma5_below_ma10     = ma5 < ma10
sri_above_25       = sri > 30

short_condition = short_candle and price_below_ma100 and ma50_below_ma100 and ma5_below_ma10 and sri_above_25

// === ENTRY LONG === //
if (long_condition)
    strategy.entry("Long", strategy.long)

// === ENTRY SHORT === //
if (short_condition)
    strategy.entry("Short", strategy.short)

// === GESTIONE USCITE === //
var float long_entry_price  = na
var float short_entry_price = na

// LONG: TP/SL + break-even
if (strategy.position_size > 0)
    if (na(long_entry_price))
        long_entry_price := strategy.position_avg_price

    tp_price_long = long_entry_price + tp_points * syminfo.mintick
    sl_price_long = long_entry_price - sl_points * syminfo.mintick
    be_trigger_long = long_entry_price + breakeven_trigger * syminfo.mintick
    sl_be = close >= be_trigger_long ? long_entry_price : sl_price_long

    strategy.exit("Exit Long", from_entry="Long", limit=tp_price_long, stop=sl_be)

// SHORT: TP/SL + break-even
if (strategy.position_size < 0)
    if (na(short_entry_price))
        short_entry_price := strategy.position_avg_price

    tp_price_short = short_entry_price - tp_points * syminfo.mintick
    sl_price_short = short_entry_price + sl_points * syminfo.mintick
    be_trigger_short = short_entry_price - breakeven_trigger * syminfo.mintick
    sl_be_short = close <= be_trigger_short ? short_entry_price : sl_price_short

    strategy.exit("Exit Short", from_entry="Short", limit=tp_price_short, stop=sl_be_short)

// Reset quando flat
if (strategy.position_size == 0)
    long_entry_price := na
    short_entry_price := na