Chuyển đến nội dung chính
ATK Pine Script®

Các mẫu MTF

Ngữ cảnh multi-timeframe và vị trí đặt request.security — tại sao bộ lọc MTF thuộc về build_signal_frame, không phải build_trade_frame.

Ngữ cảnh MTF thuộc về giai đoạn tín hiệu#

Nếu một strategy sử dụng xu hướng, chế độ, hoặc bộ lọc xác nhận từ timeframe cao hơn, bộ lọc đó là một phần của logic strategy. Do đó nó thuộc về build_signal_frame(...) cạnh các điều kiện entry cục bộ, không phải bên trong build_trade_frame(...).

Quy tắc MTF: các lệnh gọi request.security là tính toán strategy. Di chuyển chúng vào build_trade_frame sẽ chia logic quyết định của strategy qua hai giai đoạn, làm cho việc suy luận, kiểm thử và bảo trì khó hơn.

Tại sao giai đoạn tín hiệu sở hữu MTF#

  • Bộ lọc timeframe cao hơn quyết định liệu entry có kích hoạt hay không — đó là logic tín hiệu, không phải logic ánh xạ.
  • build_trade_frame là một lượt chuẩn hóa mỏng; nó không được gọi request.security hoặc chạy tính toán TA.
  • Giữ ngữ cảnh MTF cùng chỗ với entry giúp toàn bộ strategy có thể đọc được ở một nơi.

Tóm tắt anti-pattern#

# Wrong: HTF confirmation is delayed into mapping.
def build_trade_frame(signal_df, params=None, styles=None):
    # DO NOT call request.security here
    # DO NOT filter rows based on HTF data here
    return build_mapped_trade_frame(signal_df)

# Right: request.security is part of signal logic and belongs with entries.
def build_signal_frame(df, params=None):
    frame = df.copy().reset_index(drop=True)
    htf_data = request.security(symbol, "1D", "close")
    frame["htf_trend"] = htf_data["close"] > htf_data["close"].shift(1)
    # use frame["htf_trend"] as a filter for entries
    return frame