准备工作
准备了一些初步思路, 大致分为 Engine 引擎
, Strategy 策略
, Exchange 交易所
, DataSource 数据源
4 大部分.
DataSource 数据源
用于提供数据, 数据应该是另一个服务抓取到数据库, 或者是通过 websocket 推送的.Exchange 交易所
打通不同交易所 API, 并且提供相同数据接口和数据返回结构.Strategy 策略
根据不同的思路, 可以实现一定的程序化交易流程, 把流程整理成可持续的代码.Engine 引擎
用于从数据源
抓取数据, 调用策略
给出买卖指令, 发送到交易所
执行买卖指令.
回测数据流
设置参数
1 | const Exchange = require('./exchange/FakeExchange'); // 模拟交易所 |
数据流
引擎根据设置的 bar mode 选择拉取的数据, 并且以事件的形式发送到 Strategy 的 onTick 或者 onBar 方法.
在 Strategy 中, 经过计算, 得出是五种操作 pass, openLong, openShort, closeLong, closeShort 的哪一种, 然后将抛出对应事件.
事件在 Engine 中监听, 抓到事件后, 向 Exchange 下达对应的指令.
当 Exchange 完成指令后, Engine 拿到执行结果, 触发 Strategy 的 onOrder, onTrade, 以及 onOpenLong, onOpenShort, onCloseLong, onCloseShort 方法, 在 Strategy 中执行 position, capital 以及 orders 的操作.
至此基本完成整个策略引擎的数据流程.