Pipeline 幫助使用者於每個交易日整理數據,並計算各種交易所需的指標。在編寫交易策略時,會在 initialize
函式中使用 attach_pipeline
函數將 Pipeline 導入策略當中,協助我們產出交易所需的指標。
於此例中,我們首先 ingest 台積電與旺宏股價。
import tejapi
import pandas as pd
import numpy as np
import os
os.environ['TEJAPI_BASE'] = 'https://api.tej.com.tw'
os.environ['TEJAPI_KEY'] = 'your key'
os.environ['ticker'] = '2330 2337'
os.environ['mdate'] = '20170101 20230701'
from zipline.pipeline import Pipeline
from zipline.pipeline.data import TWEquityPricing
!zipline ingest -b tquant
Merging daily equity files: Currently used TEJ API key call quota 971/9223372036854775807 (0.0%) Currently used TEJ API key data quota 55470214/9223372036854775807 (0.0%)
[2024-08-06 09:25:26.772739] INFO: zipline.data.bundles.core: Ingesting tquant. [2024-08-06 09:25:32.110433] INFO: zipline.data.bundles.core: Ingest tquant successfully.
接著宣告一個 make_pipeline
,並設定 Pipeline 的 columns 參數。
在這邊,我們設定 columns
為 TWEquityPricing
中的最新收盤價格。TWEquityPricing
為價量資料的資料集
def make_pipeline():
return Pipeline(columns={'close':TWEquityPricing.close.latest})
my_pipe = make_pipeline()
接著我們使用 run_pipeline
,run_pipeline
僅用於研究,並不用於編寫交易策略。
觀察 Pipeline 輸出資料,可以發現 Pipeline 會提供每間公司每日的收盤價。由於我們這邊沒有設定 screen
與 mask
,所以總共就是我們前面 ingest 的兩家公司(2330 與 2327)。
from zipline.TQresearch.tej_pipeline import run_pipeline
result = run_pipeline(my_pipe, '2018-01-03', '2022-12-30')
result.head()
close | ||
---|---|---|
2018-01-03 00:00:00+00:00 | Equity(0 [2330]) | 232.50 |
Equity(1 [2337]) | 43.60 | |
2018-01-04 00:00:00+00:00 | Equity(0 [2330]) | 237.00 |
Equity(1 [2337]) | 44.35 | |
2018-01-05 00:00:00+00:00 | Equity(0 [2330]) | 239.50 |