> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tqx.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 策略程式碼

> 了解 Qube 策略執行生命週期及不同市場的程式碼規則。

Qube 會透過回測引擎執行策略程式碼。程式碼應專注於交易邏輯；期間、資金、頻率和其他模擬設定則由畫板或對話工具控制。

## 執行生命週期

策略應採用以下生命週期：

```python theme={null}
def initialize(context):
    # 設定帳戶、標的、參數和空快取。
    init_market_data(context)


def init_market_data(context):
    # 一次載入所需歷史資料，並準備可重用資料。
    pass


def handle_data(context, data):
    # 讀取已準備資料、產生訊號並提交訂單。
    pass
```

實際匯入和下單函數會按市場而不同。使用 Qube 的市場專用生成流程建立程式碼。

## 所有市場都適用的規則

* 在 `init_market_data` 載入完整歷史資料，不要每根 K 線重複請求。
* 讀取自訂 `context` 欄位前先初始化。
* 讓 `handle_data` 專注於訊號檢查和下單。
* 不要使用未來資料或未來收益欄位產生訊號。
* 不要在策略源碼中呼叫 `set_backtest_params` 或 `run_backtest` 等對話工具。
* 明確檢查資料缺失並返回，不要吞掉錯誤。

## 市場差異

| 市場 | 資料與執行重點                          |
| -- | -------------------------------- |
| 港股 | 使用港股資料 API、`.HK` 代碼、港股日曆和有效每手股數。 |
| 美股 | 使用美股資料 API、`.NB` 代碼和美股日曆。        |

<Info>
  分鐘策略的回測頻率是 `1M`。歷史資料 API 可能使用 `1m` 等不同寫法；請不要混淆任務頻率和資料查詢週期。
</Info>

## 將模擬設定留在源碼之外

畫板或對話工具會控制初始資金、日期、頻率、佣金倍數、滑價和基準。策略源碼應讀取執行環境並實作交易規則，不要把一次性的回測要求寫死。
