# kirby_next **Repository Path**: pengchuanchao/kirby_next ## Basic Information - **Project Name**: kirby_next - **Description**: 基于vnpy的期货交易应用 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 3 - **Created**: 2023-02-23 - **Last Updated**: 2024-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # kirby_next 多账户期货交易程序 ## 特点 - 基于vn.py项目但各模块解耦 - 使用web进行交互 - 各策略运行在独立进程 - 动态策略加载 - 各模块以rpc通信 ## 安装 ```shell > git clone https://gitee.com/pengchuanchao/kirby_next.git > cd kirby_next > python setup.py install ``` ## 初始化 项目启动后,会初始化相应的配置文件,文件产生后可以做对应配置,如数据库配置、tushare账户配置等等 - ~/.vntrader/vt_setting.json vn.py配置 - ~/.vntrader/config.json ctp账户配置 ## 引擎 ### 1.交易引擎 启动命令 `kirby trade-server` 交易引擎需要独立启动,启动后可以通过web控制 - start: 启动一个配置文件中的ctp gateway - stop: 停止vnpy MainEngine - restart: 重启之前启动/停止过的ctp gateway (主要是交易所定期踢人, 每日重启ctp) ### 2.策略引擎 启动命令 `kirby strategy-server` #### 2.1 策略引擎功能 策略引擎需要独立启动,启动后可以通过web控制,每个策略运行在独立的进程中,统一由`StrategyEngine`管理, 进程间以socket通信来保障性能,引擎包含以下功能: - new: 新建策略 - start: 启动策略 - pause: 暂停策略 - resume: 恢复策略 - stop: 停止策略 - delete: 删除策略 #### 2.2 策略编写 策略模板位于`kirby_strategy`包的**template.py**文件中,继承`StrategyTemplate`基类后, 将策略文件放到`~/.vntrader/strategy/`目录下即可,注意文件名为策略名称,继承`StrategyTemplate` 的类必须以**Strategy**结尾,否则无法动态加载到该策略。 以下为一个策略加载的示例 在`~/.vntrader/strategy/`目录下新建文件`macd.py`,写入以下代码 ```python3 # ~/.vntrader/strategy/macd.py from kirby_strategy.template import StrategyTemplate from kirby_strategy import engine class MyStrategy(StrategyTemplate): """实现策略""" pass ``` 在策略引擎启动后,该策略已经自动加载到策略引擎中了,当然,如果策略引擎已经启动也无妨, 并不需要去重启策略引擎,在引擎中运行新策略时,新建的策略会自动挂载到引擎中 以下为测试示例: ```python3 from kirby_strategy import Worker from vnpy.trader.constant import Interval worker = Worker() print(worker.delete('macd.pp2305')) print(worker.new('macd', 'pcc', 'pp2305.DCE', Interval.MINUTE15.name, params={'volume': 5})) print(worker.query('macd.pp2305')) print(worker.start('macd.pp2305')) print(worker.query('macd.pp2305')) ``` 可以看到,上述示例策略`macd.py`是可以加载到引擎中的 ### 3.录制引擎 启动命令 `kirby kirby-server` #### 3.1 行情录制 录制引擎会自动保存已经添加的品种,中断后再次启动则无需添加, 通常录制一个品种的行情从web前端添加,如果要使用脚本添加, 可参考以下示例: ```python3 from market.master import Worker worker = Worker() # 添加15分钟bar录制 worker.new('pp2305.DCE', 15) print(worker.info()) # 删除 worker.delete('pp2305.DCE) ``` #### 3.2 行情下载 使用web api接口可以从Tushare下载一分钟或日度行情数据, 如果要使用脚本下载,可参考以下代码: ```python3 from market.master import Worker worker = Worker() # 下载日度 worker.download('pp2305.DCE', '2023-01-01', '2023-02-28', 'daily') # 下载分钟 worker.download('pp2305.DCE', '2023-01-01', '2023-02-28', 'minute') ``` #### 3.3 Bar转换 使用web api接口可以将1min分钟bar转换为其它长度,如5min/15min等, 如果要使用脚本转换,可参考以下代码: ```python3 from market.master import Worker worker = Worker() worker.tick2bar('pp2305.DCE', '2023-01-01', '2023-02-28', 15) ``` ## web后端 启动命令 `kirby web --host 0.0.0.0 --port 5000 --worker 2` 简单使用命令`kirby web`则后端api会启动在`http://0.0.0.0:5000/` 文档位于`http://0.0.0.0:5000/docs`,使用浏览器访问即可 可以使用反向代理软件代理后端,如`nginx`或`tomcat`等 ## web前端 开发中