Python 股票程式交易新手指南:從資料抓取到自動下單全流程解析

想用 Python 開發股票策略、實現自動化交易?不管你是剛接觸程式交易的新手,還是已經熟悉 Python 的工程背景投資人,「股票程式交易」絕對是最值得學習的應用方向之一。這篇文章將帶你從資料來源、策略邏輯、回測系統到下單實作,一步步了解用 Python 做股票交易的完整流程。

為什麼選擇 Python 來做股票程式交易?

Python 結合了語法簡潔、套件齊全與金融社群活躍等優勢,特別適合股票交易領域,原因如下:

  • 套件完整:處理時序資料的 pandas、策略回測用的 backtrader、下單串接的 API,如 IB_insync、ccxt
  • 可擴展性高:能整合機器學習、AI 模型、Web API 與雲端服務
  • 支援多市場:美股、港股、加密貨幣,甚至台股(搭配券商 API)

股票資料從哪裡來?如何用 Python 抓取

1. Yahoo Finance(適合初學者)

套件:yfinance

  • 支援台股、美股、ETF 等多種商品
  • 可取得日線、週線、財報、股利等基本資訊
  • 免費且不需註冊帳號
import yfinance as yf
df = yf.download("AAPL", start="2022-01-01", end="2023-01-01")
print(df.head())

2. Alpha Vantage / Polygon.io(API 為主)

  • 支援即時報價、技術指標、財報資料
  • 多數需申請 API Key,免費版有使用次數限制

3. 台股資料來源(難度較高)

  • Goodinfo、TEJ、台灣券商 API(如元大、永豐)
  • 多需爬蟲或自建資料庫,有使用門檻

股票策略邏輯怎麼寫?簡單範例一次看

Python 程式交易常見的股票策略包含:

  • 均線交叉(MA Cross)
  • RSI 超買超賣
  • 價格突破追漲
  • 布林通道上下軌反轉

範例:簡易的 5MA/20MA 交叉策略(邏輯範例)

df['ma5'] = df['Close'].rolling(5).mean()
df['ma20'] = df['Close'].rolling(20).mean()
df['signal'] = (df['ma5'] > df['ma20']).astype(int)

你也可以用 ta 套件快速計算技術指標:

import ta
df['rsi'] = ta.momentum.RSIIndicator(df['Close']).rsi()

如何進行回測?用 backtrader 模擬績效

backtrader 是 Python 中最受歡迎的回測框架,支援:

  • 多商品、多策略測試
  • 繪製資金曲線、報酬率、最大回落
  • 擴充模組多(如連接 IB API)

簡單架構:

import backtrader as bt

class TestStrategy(bt.Strategy):
    def next(self):
        if self.data.close[0] > self.data.close[-1]:
            self.buy()

cerebro = bt.Cerebro()
data = bt.feeds.PandasData(dataname=df)
cerebro.adddata(data)
cerebro.addstrategy(TestStrategy)
cerebro.run()
cerebro.plot()

Python 股票實盤下單怎麼做?

1. 使用 ib_insync 串接 IB 證券

  • 適用於美股、港股、ETF、期貨
  • 安裝:pip install ib_insync
  • 支援下單、查詢、訂閱報價等完整功能

2. 使用 futu-api 串接富途證券

  • 適用港股、美股,介面友善
  • 支援下單、訂閱實時資料

3. 台灣券商 API(難度高)

  • 元大、永豐、國泰等券商提供 API,但支援度低
  • 常需要 Win32 COM 或 DLL 介接,不適合新手

架設自動化交易機器人:Python 自動下單架構參考

模組工具/技術
策略撰寫pandas + ta / 自製邏輯
回測backtrader / bt
資料來源yfinance / Alpha Vantage
下單執行ib_insync / futu-api / CCXT
自動排程schedule / APScheduler / cron
日誌記錄logging 模組

相關文章:程式交易 Python API 串接全攻略

參考資料

程式交易研究院院長
程式交易研究院院長