Chiến lược giao dịch định lượng dừng lỗ theo sau đột phá của hai phiên giao dịch London và New York

ORB EMA SL TP RRR 交易会话 追踪止损 价格突破 风险管理
Ngày tạo: 2025-04-27 11:32:24 sửa đổi lần cuối: 2025-04-27 11:32:24
sao chép: 2 Số nhấp chuột: 334
2
tập trung vào
319
Người theo dõi

Chiến lược giao dịch định lượng dừng lỗ theo sau đột phá của hai phiên giao dịch London và New York Chiến lược giao dịch định lượng dừng lỗ theo sau đột phá của hai phiên giao dịch London và New York

Tổng quan

Chiến lược giao dịch định lượng theo dõi phá vỡ lỗ hổng trong khoảng thời gian mở cửa là một hệ thống giao dịch phá vỡ dựa trên khoảng thời gian giá 15 phút trước khi mở cửa trong giờ giao dịch London và New York. Chiến lược này bằng cách nắm bắt động lực giá trong thời gian mở cửa của hai trung tâm tài chính chính, vào giao dịch theo hướng tương ứng khi giá phá vỡ 15 phút đầu tiên.

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

Cơ chế hoạt động của chiến lược xoay quanh hai khoảng thời gian quan trọng: thị trường mở cửa ở Luân Đôn (thời gian New York 3: 00-3: 15) và thị trường mở cửa ở New York (thời gian New York 9: 30-9: 45).

  1. Các mức giá cao và thấp trong 15 phút đầu tiên được ghi lại ở London và New York, tạo thành “phạm vi giá”
  2. Khi một phạm vi giá được tạo ra, chiến lược kiểm tra xem kích thước phạm vi có đáp ứng yêu cầu tối thiểu hay không (bằng mặc định 2 điểm)
  3. Nếu giá phá vỡ các mức cao trong phạm vi từ phía dưới và đáp ứng điều kiện lọc EMA (nếu được kích hoạt), hãy mở thêm
  4. Nếu giá phá vỡ vùng thấp từ phía trên xuống và đáp ứng điều kiện lọc EMA (nếu được kích hoạt), hãy mở vị trí làm trống
  5. Cài đặt dừng lỗ ở một vị trí cao bên ngoài ranh giới phân vùng giá theo hướng ngược lại với đợt phá vỡ
  6. Stop-loss target là RRR ([bằng mặc định 2.0)) nhân độ cao của khoảng
  7. Đồng thời thiết lập tracking stop loss, mặc định là 8 đơn vị biến động nhỏ nhất, điều chỉnh khi giá di chuyển theo hướng thuận lợi

Lý luận quan trọng của chiến lược là nắm bắt đợt phá vỡ định hướng giá trong giai đoạn đầu của giao dịch, thường là dấu hiệu cho thấy có thể xảy ra các hành vi theo xu hướng tiếp theo. Bằng cách sử dụng các cơ chế chặn lỗ theo dõi, chiến lược có thể cho phép giao dịch có lợi nhuận tiếp tục hoạt động trong khi bảo vệ lợi nhuận đã đạt được.

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

Sau khi phân tích kỹ lưỡng, chiến lược này có những lợi thế sau:

  1. Cơ hội giao dịch hai giai đoạnBằng cách tập trung vào các phiên mở cửa tại London và New York cùng một lúc, chiến lược này có thể nắm bắt được sự biến động của hai phiên giao dịch chính, tăng cơ hội giao dịch.
  2. Theo dõi hệ thống dừng lỗSo với các lệnh dừng cố định, các lệnh dừng theo dõi có thể giúp các giao dịch có lợi nhuận tiếp tục phát triển và nâng cao mức lợi nhuận trung bình trong khi bảo vệ lợi nhuận.
  3. Kiểm soát rủi ro hoàn hảoChiến lược sử dụng thiết lập dừng lỗ động dựa trên biến động ((kích thước khoảng) để quản lý rủi ro phù hợp hơn với tình trạng thị trường.
  4. Khả năng tùy chỉnhNgười dùng có thể điều chỉnh tỷ lệ lợi nhuận rủi ro, kích thước khoảng tối thiểu, theo dõi điểm dừng lỗ và sử dụng bộ lọc EMA để phù hợp với các loại giao dịch khác nhau và sở thích rủi ro cá nhân.
  5. Bộ lọc chỉ số kỹ thuậtCác điều kiện lọc EMA 5 phút có thể được chọn giúp tránh giao dịch ngược và cải thiện chất lượng giao dịch.
  6. Giới hạn mỗi giao dịch trong một khoảng thời gianCác biểu tượng giao dịch được xây dựng trong chiến lược đảm bảo chỉ thực hiện một giao dịch mỗi lần, tránh chi phí và rủi ro của giao dịch thường xuyên.

Rủi ro chiến lược

Mặc dù chiến lược này được thiết kế hợp lý, nhưng vẫn có những rủi ro tiềm ẩn:

  1. Rủi ro đột phá giả: Giá có thể giảm trở lại ngay lập tức sau khi phá vỡ ranh giới trong khoảng thời gian ngắn, dẫn đến việc dừng lỗ. Để đối phó với rủi ro này, bạn có thể xem xét thêm cơ chế xác nhận, chẳng hạn như yêu cầu giá duy trì một thời gian nhất định sau khi phá vỡ hoặc đạt đến một mức độ nhất định trước khi mở vị trí.
  2. Quản lý tài chínhChiến lược: Trader mặc định sử dụng số lượng hợp đồng cố định, có thể không phù hợp với tất cả các quy mô tiền.
  3. Rủi ro tối ưu hóa tham sốCác tham số được tối ưu hóa quá mức có thể dẫn đến sự phù hợp với đường cong, không hoạt động tốt trong môi trường thị trường trong tương lai. Cần chú ý đến kiểm tra tính ổn định của tham số.
  4. Sự phụ thuộc vào môi trường thị trườngChiến lược này có thể thường xuyên gây ra lỗ dừng trong thị trường bất ổn và không có xu hướng rõ ràng.
  5. Vấn đề về khu vực thời gianLưu ý: Sử dụng vùng thời gian New York trong mã, hãy đảm bảo rằng bạn sử dụng nó phù hợp với cài đặt vùng thời gian của nền tảng giao dịch, nếu không có thể dẫn đến tín hiệu giao dịch bị sai.
  6. Tác động của lễ hộiCác ngày giao dịch đặc biệt và các ngày lễ có thể ảnh hưởng đến hiệu suất của chiến lược, chiến lược không bao gồm logic lọc ngày lễ.

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

Dựa trên phân tích chiến lược, các hướng tối ưu hóa có thể là:

  1. Tăng cơ chế xác nhậnBạn có thể xem xét thêm các điều kiện xác nhận bổ sung sau khi giá phá vỡ, chẳng hạn như phá vỡ khối lượng giao dịch, giá liên tục giữ nhiều đường K trong hướng phá vỡ, v.v., để giảm thiệt hại do phá vỡ giả.
  2. Quản lý tài chính động: Định lượng vị trí tùy theo biến động của thị trường và quy mô tài khoản để tối ưu hóa tỷ lệ rủi ro / lợi nhuận.
  3. Trình lọc môi trường thị trườngGhi chú: giới thiệu chỉ số biến động hoặc chỉ số cường độ xu hướng, tạm dừng giao dịch trong môi trường thị trường không phù hợp với chiến lược phá vỡ.
  4. Xác nhận nhiều chu kỳHướng đi của xu hướng kết hợp với chu kỳ thời gian dài hơn, chỉ giao dịch theo hướng phù hợp với xu hướng lớn.
  5. Tối ưu hóa thời gian ra sânLưu ý: Có thể xem xét việc sử dụng giá quay trở lại để tham gia vào các điểm hỗ trợ / kháng cự quan trọng, thay vì tham gia trực tiếp vào điểm đột phá để có được giá cả tốt hơn.
  6. Thêm bộ lọc thời gianPhân tích lịch sử hoạt động của các ngày giao dịch và khoảng thời gian khác nhau, tránh các thời điểm hoạt động kém.
  7. Phân tích liên quan đa giốngCân nhắc sự liên quan giữa các loại giao dịch khác nhau, tránh giữ nhiều vị trí liên quan cao cùng một lúc.

Tóm tắt

Chiến lược giao dịch định lượng theo dõi phá vỡ lỗ hổng giữa hai giai đoạn mở cửa là một hệ thống giao dịch đột phá được thiết kế cho thời gian mở cửa của hai trung tâm tài chính lớn ở London và New York. Bằng cách nắm bắt động thái và hướng của giá trong thời gian mở cửa, kết hợp với cơ chế theo dõi lỗ hổng, chiến lược này có thể tối đa hóa tiềm năng lợi nhuận trong khi kiểm soát rủi ro. Mặc dù có rủi ro như phá vỡ giả và phụ thuộc vào môi trường thị trường, nhưng sự ổn định và khả năng lợi nhuận của chiến lược có thể được nâng cao hơn nữa bằng cách đặt các tham số hợp lý và các điều kiện lọc bổ sung.

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

//@version=6
strategy("ORB-LD-NY-Trail Strategy", overlay=true,
     default_qty_type=strategy.fixed, default_qty_value=1,
     calc_on_order_fills=true, calc_on_every_tick=true)

// =========================
// USER INPUTS
// =========================
riskReward      = input.float(2.0, "Risk-Reward Ratio", minval=1.0)
minBoxSize      = input.float(2.0, "Minimum Box Size (points)")
trailStopTicks  = input.int(8, "Trailing Stop (ticks)", minval=1)
useEmaFilter    = input.bool(false, "Use 5-min EMA Filter?")

tickSize        = syminfo.mintick         // auto-detect min tick for symbol
trailStopOffset = trailStopTicks * tickSize
emaSource       = request.security(syminfo.tickerid, "5", ta.ema(close, 200))  // 5-min chart EMA

// =========================
// SESSION TIMES
// =========================
londonStart = timestamp("America/New_York", year, month, dayofmonth, 3, 0)
londonEnd   = timestamp("America/New_York", year, month, dayofmonth, 3, 15)
nyStart     = timestamp("America/New_York", year, month, dayofmonth, 9, 30)
nyEnd       = timestamp("America/New_York", year, month, dayofmonth, 9, 45)

inLondon = time >= londonStart and time <= londonEnd
inNY     = time >= nyStart and time <= nyEnd

// =========================
// ONE TRADE PER SESSION FLAGS
// =========================
var bool londonTraded = false
var bool nyTraded     = false

// =========================
// LONDON BOX
// =========================
var float londonHigh    = na
var float londonLow     = na
var float londonBoxHigh = na
var float londonBoxLow  = na

if inLondon
    if na(londonHigh)
        londonBoxHigh := na
        londonBoxLow  := na
        londonTraded  := false
    londonHigh := na(londonHigh) ? high : math.max(londonHigh, high)
    londonLow  := na(londonLow)  ? low  : math.min(londonLow,  low)

if not inLondon and na(londonBoxHigh) and not na(londonHigh) and not na(londonLow)
    londonBoxHigh := londonHigh
    londonBoxLow  := londonLow
    londonHigh    := na
    londonLow     := na

if time > londonEnd and not na(londonBoxHigh) and not londonTraded
    boxRange = londonBoxHigh - londonBoxLow
    if boxRange >= minBoxSize
        // Standard SL/TP logic
        longSL  = londonBoxHigh - boxRange
        longTP  = londonBoxHigh + boxRange * riskReward
        shortSL = londonBoxLow  + boxRange
        shortTP = londonBoxLow  - boxRange * riskReward

        // === LONDON LONG ===
        condLong1 = close[1] <= londonBoxHigh
        condLong2 = close > londonBoxHigh
        condLong3 = (not useEmaFilter) or (close > emaSource)

        if condLong1 and condLong2 and condLong3
            strategy.entry("London Long", strategy.long)
            strategy.exit("Exit London Long", from_entry="London Long",
                          stop=longSL, limit=longTP,
                          trail_points=trailStopOffset)
            londonTraded := true

        // === LONDON SHORT ===
        condShort1 = close[1] >= londonBoxLow
        condShort2 = close < londonBoxLow
        condShort3 = (not useEmaFilter) or (close < emaSource)

        if not londonTraded and condShort1 and condShort2 and condShort3
            strategy.entry("London Short", strategy.short)
            strategy.exit("Exit London Short", from_entry="London Short",
                          stop=shortSL, limit=shortTP,
                          trail_points=trailStopOffset)
            londonTraded := true

// =========================
// NY BOX
// =========================
var float nyHigh    = na
var float nyLow     = na
var float nyBoxHigh = na
var float nyBoxLow  = na

if inNY
    if na(nyHigh)
        nyBoxHigh := na
        nyBoxLow  := na
        nyTraded  := false
    nyHigh := na(nyHigh) ? high : math.max(nyHigh, high)
    nyLow  := na(nyLow)  ? low  : math.min(nyLow,  low)

if not inNY and na(nyBoxHigh) and not na(nyHigh) and not na(nyLow)
    nyBoxHigh := nyHigh
    nyBoxLow  := nyLow
    nyHigh    := na
    nyLow     := na

if time > nyEnd and not na(nyBoxHigh) and not nyTraded
    boxRange = nyBoxHigh - nyBoxLow
    if boxRange >= minBoxSize
        longSL  = nyBoxHigh - boxRange
        longTP  = nyBoxHigh + boxRange * riskReward
        shortSL = nyBoxLow  + boxRange
        shortTP = nyBoxLow  - boxRange * riskReward

        // === NY LONG ===
        condNYLong1 = close[1] <= nyBoxHigh
        condNYLong2 = close > nyBoxHigh
        condNYLong3 = (not useEmaFilter) or (close > emaSource)

        if condNYLong1 and condNYLong2 and condNYLong3
            strategy.entry("NY Long", strategy.long)
            strategy.exit("Exit NY Long", from_entry="NY Long",
                          stop=longSL, limit=longTP,
                          trail_points=trailStopOffset)
            nyTraded := true

        // === NY SHORT ===
        condNYShort1 = close[1] >= nyBoxLow
        condNYShort2 = close < nyBoxLow
        condNYShort3 = (not useEmaFilter) or (close < emaSource)

        if not nyTraded and condNYShort1 and condNYShort2 and condNYShort3
            strategy.entry("NY Short", strategy.short)
            strategy.exit("Exit NY Short", from_entry="NY Short",
                          stop=shortSL, limit=shortTP,
                          trail_points=trailStopOffset)
            nyTraded := true

// Visual session background
bgcolor(inLondon ? color.new(color.fuchsia, 85) : na)
bgcolor(inNY     ? color.new(color.green,   85) : na)