用 PHP 打造加密货币自动交易系统:从入门到实盘

·

轻量、可扩展、人人可上手的 Bowhead 框架实战指南。

这篇教程将手把手带你用 PHP + LaravelBowhead 开源框架 搭建一个可实盘/可回测的加密货币自动交易系统。即便你只有基础 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 trader

2.2 Redis & MySQL 最小配置

.env 里把默认数据库名、用户名、密码改成 Homestead 的即可:

DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

初始化演示数据:

mysql -u homestead -psecret < app/Script/DBdump.sql

3. 申请并保管 API KEY

第一步一定用 DEMO KEY! 先把五点交易所的钥匙配置进 .env

交易所主用途DEMO KEY 位置速率限制
WhaleclubBTC 本位 CFD官网顶部「API」60 req/min
1Broker跟单/社交平仓右上角齿轮→API120 req/min
GDAX (Coinbase Pro)现货/法币出入金右上角 API10 req/sec
Bitfinex行情 + 杠杆Account→API90 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_JPYEUR_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=true

5. 设计第一条可盈利策略

我们以一个「三指标趋同」示范,核心只有 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 + 双均线例

纸上谈兵不如一图胜千言。用 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. 单元测试与回测:一招防止爆仓

关键词:策略回测、PHPUnit、加密货币回测、模拟交易


8. FAQ – 5 分钟解疑惑

Q1:不会 Laravel 也能用吗?
A:Bowhead 为命令行优先,跟着示例改即可,无需路由、视图,但安装 Laravel 扩展组件后你能轻松做 Web 仪表盘。

Q2:运行一段时间后出现 429 报错?
A:那是速率限制。把请求改成异步队列,或用 swoole/roadrunner 长驻内存即可解决。

Q3:如何让策略实时跑在云服务器?
A:用 supervisordpm2 把脚本注册为系统服务,并增加健康检查:若盘口 30 秒收不到数据立即告警。

Q4:模拟盘盈利,实盘亏得更快?
A:滑点、资金费率、深度不足都会导致失真。解决:减少杠杆、先在 Bitfinex 现货测试真实订单量,再转 CFD。

Q5:能扩展到更多币种或 DeFi 吗?
A:当然有。复制 BitfinexWebsocketCommand.php → 替换成 ETHUSDUNISWAP_USDC_ETH 等新接口即可。


9. 风险提示与未来展望

👉 想获取后续“跨交易所价差工具”更新邮件提醒,点此订阅。

关键词:加密货币交易风险、自动交易风险、策略热更新


祝你在加密世界用代码跑赢市场,但永远别让代码毁掉生活。