轻量、可扩展、人人可上手的 Bowhead 框架实战指南。
这篇教程将手把手带你用 PHP + Laravel 和 Bowhead 开源框架 搭建一个可实盘/可回测的加密货币自动交易系统。即便你只有基础 PHP 语法经验,也能依葫芦画瓢,在本地跑会第一笔模拟订单。
1. 三分钟速览:到底要做什么?
一句话版本:
准备好环境 → 拿到交易所 API → 让代码读取行情 → 按策略下单 → 回测 → 上线监控。
关键词:加密货币交易机器人、PHP Laravel、Bowhead、Whaleclub、GDAX、实时数据流、策略回测。
2. 环境准备与框架安装
2.1 极速开发利器:Homestead Improved
推荐用 Vagrant 的 Homestead Improved 盒子,PHP、MySQL、Redis 开箱即用。
# 克隆 Bowhead
git clone https://github.com/joeldg/bowhead.git
cd bowhead
composer install
cp .env-example .env
# 引入指标库
sudo pecl install trader
echo "extension=trader.so" | sudo tee /etc/php/7.4/mods-available/trader.ini
sudo phpenmod trader2.2 Redis & MySQL 最小配置
.env 里把默认数据库名、用户名、密码改成 Homestead 的即可:
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret初始化演示数据:
mysql -u homestead -psecret < app/Script/DBdump.sql3. 申请并保管 API KEY
第一步一定用 DEMO KEY! 先把五点交易所的钥匙配置进 .env:
| 交易所 | 主用途 | DEMO KEY 位置 | 速率限制 |
|---|---|---|---|
| Whaleclub | BTC 本位 CFD | 官网顶部「API」 | 60 req/min |
| 1Broker | 跟单/社交平仓 | 右上角齿轮→API | 120 req/min |
| GDAX (Coinbase Pro) | 现货/法币出入金 | 右上角 API | 10 req/sec |
| Bitfinex | 行情 + 杠杆 | Account→API | 90 req/min |
| Oanda | 主流外汇行情 | 官网 DEMO TOKEN | 自定义 |
记录下密钥后,一定写成:
WHALE_DEMO_KEY=your_demo_key
BITFINEX_KEY=your_key
...4. 让数据流动起来:Forex + Crypto 双流
4.1 启动 Oanda 外汇流
screen python streaming.py # 保持后台
screen php artisan bowhead:oanda_stream成功会看到 USD_JPY、EUR_USD……等十组行情写入 bowhead_ohlc 表。
4.2 启动 Bitfinex BTC 流
screen php artisan bowhead:websocket_bitfinex👉 想知道实时数据到底有没有来?一键查看教程里的 screen 监控技巧。
4.3 服务器监控:Supervisord
把三组进程永驻后台,自动重启。
[program:wsbitfinex]
command=/usr/bin/php artisan bowhead:websocket_bitfinex
directory=/home/ubuntu/bowhead
autostart=true5. 设计第一条可盈利策略
我们以一个「三指标趋同」示范,核心只有 17 行优雅 PHP 逻辑:
$ind = new \Bowhead\Util\Indicators();
$cci = $ind->cci($pair, $data);
$cmo = $ind->cmo($pair, $data);
$mfi = $ind->mfi($pair, $data);
if ($cci === -1 && $cmo === -1 && $mfi === -1) {
// 超买做空
$signal = 'SELL';
} elseif ($cci === 1 && $cmo === 1 && $mfi === 1) {
// 超买买多
$signal = 'BUY';
}别着急改代码,Bowhead 自带bowhead:example_strategy可用于回测,一条命令php artisan bowhead:example_strategy就能看到 DEMO 下单记录。
关键词:加密货币交易策略、MFI 指标、CCI 指标、CMO 指标
6. 把策略用在真实外汇:ADX + 双均线例
- 逻辑:ADX>50 时确认趋势,SMA(6) 与 SMA(40) 金叉/死叉分别买入或卖出。
- 原理:ADX 走高排除震荡区间,长短均线交叉过滤假信号。
纸上谈兵不如一图胜千言。用 TradingView 观点源就能可视化黄褐色 ADX 线,蓝色 SMA(40) 与绿色 SMA(6) 的精准交叉点。
$adx = $ind->adx($pair, $data);
$_sma6 = trader_sma($close, 6);
$_sma40 = trader_sma($close, 40);
if ($adx == 1 && $down_cross) $buy=1;7. 单元测试与回测:一招防止爆仓
php artisan bowhead:example_usage先跑通安装检测。- 用本地 MySQL 历史 ohlc 表回测 30 天数据,评估收益曲线。
- Sandbox 模式务必打开:DEMO API KEY + 最小仓位。
关键词:策略回测、PHPUnit、加密货币回测、模拟交易
8. FAQ – 5 分钟解疑惑
Q1:不会 Laravel 也能用吗?
A:Bowhead 为命令行优先,跟着示例改即可,无需路由、视图,但安装 Laravel 扩展组件后你能轻松做 Web 仪表盘。
Q2:运行一段时间后出现 429 报错?
A:那是速率限制。把请求改成异步队列,或用 swoole/roadrunner 长驻内存即可解决。
Q3:如何让策略实时跑在云服务器?
A:用 supervisord 或 pm2 把脚本注册为系统服务,并增加健康检查:若盘口 30 秒收不到数据立即告警。
Q4:模拟盘盈利,实盘亏得更快?
A:滑点、资金费率、深度不足都会导致失真。解决:减少杠杆、先在 Bitfinex 现货测试真实订单量,再转 CFD。
Q5:能扩展到更多币种或 DeFi 吗?
A:当然有。复制 BitfinexWebsocketCommand.php → 替换成 ETHUSD 或 UNISWAP_USDC_ETH 等新接口即可。
9. 风险提示与未来展望
- 任何代码都有 Bug,请必先在 DEMO 环境测试全量逻辑。
- 杠杆交易风险巨大,请控制好仓位,理性投入。
- Part 2 预告:整合多家交易所价差、实现高频跨盘对冲、支持动态策略热更新。
关键词:加密货币交易风险、自动交易风险、策略热更新
祝你在加密世界用代码跑赢市场,但永远别让代码毁掉生活。