DEV Community

James Mok
James Mok

Posted on

零成本搭建AI交易机器人:GitHub Actions + Alpaca实战指南

零成本搭建AI交易机器人:GitHub Actions + Alpaca实战指南

用300行Python代码,打造你的24小时自动交易员

问题引入:散户投资者的三大痛点

作为一个有编程基础的散户投资者,你是否经历过这些场景?

场景一:深夜盯盘的疲惫
美股开盘时,你正准备睡觉。看到持仓股票突然大跌,犹豫要不要止损——等你纠结完,已经跌去5%。

场景二:纪律执行的困难
你制定了一套定投策略:每月1日买入500美元VOO。结果一到执行日就犹豫:"这个月涨得有点高,要不要等回调?"——然后完美错过入场时机。

场景三:信息过载的焦虑
关注了30个财经博主,加了8个投资群,每天被各种"内幕消息"轰炸。反而越来越不敢下手,越研究越迷茫。

如果你点头了,那么自动化交易可能是你的解药。


方案概述:为什么选GitHub Actions + Alpaca?

在2025年的今天,散户做自动化交易有三大免费神器:

组件 作用 成本
Alpaca 零佣金券商,提供API接口 $0
GitHub Actions 云端定时任务调度 $0 (每月2000分钟)
Python 策略逻辑编写 $0

这套组合的核心优势:

  1. 零成本:从数据获取到交易执行,全程免费
  2. 零运维:GitHub Actions托管,你只管写代码
  3. 零情绪:代码不会恐慌,也不会贪婪
  4. 低风险起步:支持Paper Trading(模拟盘),用假钱练手

详细步骤:手把手搭建你的第一个交易机器人

第一步:注册Alpaca账号(5分钟)

访问 alpaca.markets 注册账号。

关键操作:

  • 注册后先启用 Paper Trading(模拟交易)模式
  • 进入 Dashboard → API Keys,生成你的API Key和Secret Key

💡 建议:先用Paper Trading跑1-3个月,确认策略有效后再切实盘。


第二步:创建GitHub仓库(3分钟)

  1. 登录GitHub,创建新仓库,命名为 my-trading-bot
  2. 设置为Private(毕竟涉及你的交易策略)
  3. 克隆到本地

第三步:编写核心交易逻辑(20分钟)

创建 trading_bot.py

#!/usr/bin/env python3
import os
import json
from datetime import datetime
import alpaca_trade_api as tradeapi

# 从环境变量读取API密钥
API_KEY = os.getenv('ALPACA_API_KEY')
API_SECRET = os.getenv('ALPACA_SECRET_KEY')
BASE_URL = 'https://paper-api.alpaca.markets'

# 策略配置
CONFIG = {
    'symbol': 'VOO',
    'invest_amount': 500,
    'day_of_month': 1,
}

def get_api():
    return tradeapi.REST(API_KEY, API_SECRET, BASE_URL, api_version='v2')

def should_trade_today():
    today = datetime.now()
    return today.day == CONFIG['day_of_month']

def execute_trade(api):
    symbol = CONFIG['symbol']
    # 获取最新价格并计算购买数量
    barset = api.get_latest_bar(symbol)
    price = barset.c
    qty = int(CONFIG['invest_amount'] / price)

    if qty < 1:
        print(f"资金不足购买1股 {symbol}")
        return None

    # 提交市价单
    order = api.submit_order(
        symbol=symbol,
        qty=qty,
        side='buy',
        type='market',
        time_in_force='day'
    )

    print(f"✅ 买入 {qty}{symbol} @ ${price:.2f}")
    return {'symbol': symbol, 'qty': qty, 'price': price}

def main():
    print(f"🤖 交易机器人启动 - {datetime.now()}")

    if not should_trade_today():
        print("今天不是交易日,跳过")
        return

    api = get_api()
    account = api.get_account()
    print(f"💰 账户现金: ${account.cash}")

    trade_info = execute_trade(api)
    if trade_info:
        print(f"📊 交易完成!")

if __name__ == '__main__':
    main()
Enter fullscreen mode Exit fullscreen mode

第四步:设置GitHub Actions自动运行

创建 .github/workflows/trading-bot.yml

name: Trading Bot

on:
  schedule:
    - cron: '0 14 1 * *'  # 每月1日 UTC 14:00
  workflow_dispatch:  # 允许手动触发

jobs:
  trade:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-python@v5
      with:
        python-version: '3.11'
    - run: pip install alpaca-trade-api
    - run: python trading_bot.py
      env:
        ALPACA_API_KEY: ${{ secrets.ALPACA_API_KEY }}
        ALPACA_SECRET_KEY: ${{ secrets.ALPACA_SECRET_KEY }}
Enter fullscreen mode Exit fullscreen mode

第五步:配置GitHub Secrets

  1. 进入GitHub仓库 → Settings → Secrets → Actions
  2. 添加:
    • ALPACA_API_KEY:你的Alpaca API Key
    • ALPACA_SECRET_KEY:你的Alpaca Secret Key

第六步:测试运行

  1. 提交代码到GitHub
  2. 进入Actions标签页
  3. 点击 "Run workflow" 手动触发
  4. 查看日志,确认交易成功

看到类似输出?恭喜你,机器人上线成功!

🤖 交易机器人启动 - 2025-02-01 14:00:05
💰 账户现金: $100000.00
✅ 买入 1 股 VOO @ $532.45
📊 交易完成!
Enter fullscreen mode Exit fullscreen mode

风险提示:自动化交易不是印钞机

⚠️ 技术风险

  • API故障、网络延迟、代码Bug
  • 缓解:设置单日最大交易金额,添加重复订单检测

⚠️ 市场风险

  • 策略失效、黑天鹅事件、流动性风险
  • 缓解:只投资指数基金(VOO/VTI),不要All-in

⚠️ 心理风险

自动化最大的敌人是:手痒干预

铁律: 要么完全相信系统,要么不要自动化。


进阶玩法

1. 添加技术指标过滤

只在价格高于20日均线时买入

2. 集成邮件通知

每次交易后发送报告到邮箱

3. 多标的策略

PORTFOLIO = {
    'VOO': 0.5,   # 50% 标普500
    'VXUS': 0.3,  # 30% 国际股票
    'BND': 0.2,   # 20% 债券
}
Enter fullscreen mode Exit fullscreen mode

结语:自动化是纪律的延伸

搭建这个交易机器人,最大的收获不是"躺着赚钱"——那是不现实的期待。

真正的价值在于:

  1. 建立纪律:代码无情地执行你的策略,不受恐惧和贪婪干扰
  2. 节省时间:把盯盘的时间用来学习、工作、陪伴家人
  3. 积累经验:通过实践理解自动化系统的设计与风险

记住,最好的交易策略往往是最简单的策略

现在,fork这个仓库,修改配置,启动你的第一个自动化交易项目吧。


本文仅供技术学习参考,不构成任何投资建议。自动化交易存在风险,请谨慎操作。

Top comments (0)