【Ktrader 数字货币开源量化系统 v2.1】
开源初衷: 这是之前团队在做外包的同时完善的内部产品。 上上策,一款开源数字货币量化交易系统。经过两年实战完善,系统已经包含策略模块,实盘模块,后台系统,网站端,安卓客户端模块。 之前设计的初衷只是个人交易辅助,外包的盈余资金又多做了一些开发,不过最终由于各种原因运营不了了之。之后此基础上接了几个量化软件的外包。 用过一些开源量化软件,有平台的,有策略版本的。各有各的好处,不过最大的问题就是不成体系,要不是数据问题,语言通信问题,整合问题,二开问题, 始终绕不过单机玩玩无法形成一套完善成品。 而上上策将解决这个问题,上上策开源后命名为“KTrader”。 Ktrader 将包括Python,Java,PHP, nodejs , H5 , react,安卓,linux,mongodb,mysql 等技术。 一套体系全部用一个docker 镜像打包集成。 KTrader核心集成了数字货币交易,改改前端,策略改变以下,买卖接口一换可以做任何期货交易对品种的回测实盘。
系统截图
系统架构图
【1.准备篇】
操作系统: Linux 5.10.0-13 debian 11 64位 独立IP: 本教程所使用系统为本地搭建IP为 192.168.101.177 docker: Docker version 20.10.17, build 100c701
推荐 debian 安装docker 命令:
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
【2.运维篇】
1 导入镜像
下载镜像
ktrader2.1.tar.gz 下载地址
链接:https://pan.baidu.com/s/1mxQ_seHE5caIk_1DgxLbmQ?pwd=3x2r
导入命令
gunzip -c ktrader2.1.tar.gz | docker import - ktrader2.1_debian_img
2 创建容器
1 debian 推荐
docker run -itd --privileged=true -v /var/yp/trader:/var/yp/trader --name ktrader2.1 -p 19001:22 -p 19002:19002 -p 19003:19003 -p 19004:19004 -p 19005:19005 -p 19006:19006 -p 19007:19007 -p 19008:19008 -p 19009:19009 -p 12315:12315 -p 12316:12316 -p 12317:12317 -p 12318:12318 -p 12319:12319 ktrader2.1_debian_img /sbin/init
2 centos --volume dbus connect problem
docker run -itd --privileged=true -v /var/yp/trader:/var/yp/trader --volume /sys/fs/cgroup:/sys/fs/cgroup:ro --name ktrader2.1 -p 19001:22 -p 19002:19002 -p 19003:19003 -p 19004:19004 -p 19005:19005 -p 19006:19006 -p 19007:19007 -p 19008:19008 -p 19009:19009 -p 12315:12315 -p 12316:12316 -p 12317:12317 -p 12318:12318 -p 12319:12319 ktrader2.1_debian_img /sbin/init
3 恢复数据
数据下载地址
链接:https://pan.baidu.com/s/1jibyoaeAVHJxexhB_0qG5A?pwd=hcii
trader.tar.gz 主要是mysql, mongodb单独数据 sftp 上传至 /var/yp/trader
4 替换ip
目前服务器测试ip 192.168.101.177 /var/yp/source需要全部替换成 您的ip
参考替换命令
sed -i "s/192.168.101.177/你的ip/g" `grep 192.168.101.177 -rl /var/yp/source`
服务(app调用)
启动ws
/var/yp/source/tchecker/checker/start.sh stat
关闭ws
/var/yp/source/tchecker/checker/start.sh stop
数据(爬虫)数据来源gateio
开启
nohup python3 /var/yp/source/bigdata/src/LiveWebSocketGtNew.py eth > /dev/null &
nohup python3 /var/yp/source/bigdata/src/LiveWebSocketGtNew.py eos > /dev/null &
nohup python3 /var/yp/source/bigdata/src/LiveWebSocketGtNew.py btc > /dev/null &
关闭
ps aux|grep LiveWeb|awk '{print $2}'|xargs kill -9
【3.配置篇】
端口映射
19001 sshd
19002 mysqld
19003 运营网站
19004 trader web client
19005 tchecker
19006 tchecker_admin
19007 tchecker_admin service
19008 bestplan client service
web socket pair bind port
12315 => ETH-USDT
12316 => EOS-USDT
12317 => BTC-USDT
磁盘绑定
/var/yp/trader > /var/yp/trader 主要用于存放 mysql, mongodb数据便于导出维护
【4.说明篇】
系统导航
后台
http://192.168.101.177:19006/login/login adminarcz 123456
产品前台
web 客户端
http://192.168.101.177:19004/home
API_SERVICE_ADDRESS
API_SERVICE_KEY
AABBCCKTRADER2022
ssh
host: 192.168.101.177 port: 19001 user: root password: 123456
mysql
root: 123456
mongodb
端口27017 无auth
数据目录
/var/yp/trader 第一次导入需要先恢复数据 trader.tar.gz 解压里面包含mysql, mongodb 目录上传到这个目录 给所属权限分别是mysql, mongodb
源码目录
/var/yp/source
【5.回测篇】
启动回测
python | 脚本 | 网格单元金额 | 品种 | 开始日期 | now > 当前时间 | 10表示步进 为10分钟
python3 /var/yp/source/bigdata/src/Paint.py 100 BTC-USDT '2022-06-16 21:00:00' now 10
策略说明
交易策略
KTrader 默认实现了一类似于RSI的能级因子code,code在 10W ~ 50W之间波动,当超买或者超卖code会有显著差异
下单策略
核心是马丁,网格金额随着振幅加大逐渐增大,模拟盘网格信号级别最大为8,实盘最大加仓为 3倍单元金额
平仓策略
模拟盘无,实盘反向做单为2倍 单元金额,当盈利并且持仓超过指定金额,在下次减仓交易信号出现时平仓,记录交易日志
增大级别简略说明:
1 |
2 ||
3 ||||
4 |||||
5 ||||||||
6 |||||||||||||
7 ||||||||||||||||||||
8 |||||||||||||||||||||||||||||||||
信号越大,操作越靠谱
trade records
index type currency price timedate code complete suc profit pprice ptimedate pt
0 buy 100.0 1102.00 2022-06-22 09:59:59 522710 0 1 4.626 1152.98 2022-06-24 09:49:57 0.04422
1 buy 112.5 1088.29 2022-06-22 11:49:59 439010 0 1 6.687 1152.98 2022-06-24 09:49:57 0.05611
2 sell 100.0 1102.40 2022-06-22 13:09:59 211507 0 2 -4.588 1152.98 2022-06-24 09:49:57 0.04387
3 buy 100.0 1098.22 2022-06-22 13:49:59 475927 0 1 4.986 1152.98 2022-06-24 09:49:57 0.04749
4 buy 112.5 1079.56 2022-06-22 14:19:59 480587 0 1 7.651 1152.98 2022-06-24 09:49:57 0.06368
5 buy 131.25 1067.49 2022-06-22 15:09:59 387045 0 1 10.511 1152.98 2022-06-24 09:49:57 0.07415
6 sell 100.0 1079.95 2022-06-22 16:29:57 244013 0 2 -6.762 1152.98 2022-06-24 09:49:57 0.06334
7 buy 100.0 1075.44 2022-06-22 16:39:59 364584 0 1 7.210 1152.98 2022-06-24 09:49:57 0.06725
8 sell 100.0 1091.70 2022-06-22 17:59:59 243382 0 2 -5.613 1152.98 2022-06-24 09:49:57 0.05315
9 buy 100.0 1088.66 2022-06-22 18:39:59 399788 0 1 5.908 1152.98 2022-06-24 09:49:57 0.05579
10 buy 112.5 1079.67 2022-06-22 21:19:59 472122 0 1 7.639 1152.98 2022-06-24 09:49:57 0.06358
11 buy 131.25 1062.90 2022-06-23 00:09:59 522663 0 1 11.123 1152.98 2022-06-24 09:49:57 0.07813
12 buy 165.625 1052.70 2022-06-23 04:49:59 320092 0 1 15.777 1152.98 2022-06-24 09:49:57 0.08697
13 sell 100.0 1060.33 2022-06-23 06:09:57 236630 0 2 -8.738 1152.98 2022-06-24 09:49:57 0.08036
14 buy 100.0 1055.21 2022-06-23 06:19:59 400762 0 1 9.265 1152.98 2022-06-24 09:49:57 0.08480
15 sell 100.0 1060.66 2022-06-23 06:39:57 256350 0 2 -8.704 1152.98 2022-06-24 09:49:57 0.08007
16 buy 100.0 1058.17 2022-06-23 07:19:55 443500 0 1 8.960 1152.98 2022-06-24 09:49:57 0.08223
17 buy 112.5 1050.20 2022-06-23 07:49:58 542672 0 1 11.010 1152.98 2022-06-24 09:49:57 0.08914
18 sell 100.0 1071.10 2022-06-23 08:39:56 230074 0 2 -7.644 1152.98 2022-06-24 09:49:57 0.07102
19 sell 112.5 1077.83 2022-06-23 08:49:59 221830 0 2 -7.844 1152.98 2022-06-24 09:49:57 0.06518
20 buy 100.0 1084.89 2022-06-23 09:59:59 350935 0 1 6.276 1152.98 2022-06-24 09:49:57 0.05906
21 buy 112.5 1078.45 2022-06-23 11:39:59 492275 0 1 7.775 1152.98 2022-06-24 09:49:57 0.06464
22 sell 100.0 1103.13 2022-06-23 15:09:59 220953 0 2 -4.519 1152.98 2022-06-24 09:49:57 0.04324
23 buy 100.0 1097.58 2022-06-23 15:29:59 512371 0 1 5.047 1152.98 2022-06-24 09:49:57 0.04805
24 sell 100.0 1111.91 2022-06-23 18:39:59 228357 0 2 -3.694 1152.98 2022-06-24 09:49:57 0.03562
25 buy 100.0 1107.68 2022-06-23 19:09:59 548010 0 1 4.090 1152.98 2022-06-24 09:49:57 0.03929
26 sell 100.0 1109.63 2022-06-23 19:29:58 238971 0 2 -3.907 1152.98 2022-06-24 09:49:57 0.03760
27 buy 100.0 1107.55 2022-06-23 19:39:59 414124 0 1 4.102 1152.98 2022-06-24 09:49:57 0.03940
28 buy 112.5 1096.04 2022-06-23 23:29:57 356328 0 1 5.844 1152.98 2022-06-24 09:49:57 0.04939
29 buy 131.25 1088.60 2022-06-23 23:39:59 373948 0 1 7.762 1152.98 2022-06-24 09:49:57 0.05584
30 sell 100.0 1090.51 2022-06-24 01:29:59 253742 0 2 -5.729 1152.98 2022-06-24 09:49:57 0.05418
31 sell 112.5 1100.71 2022-06-24 02:49:59 226562 0 2 -5.342 1152.98 2022-06-24 09:49:57 0.04533
32 buy 100.0 1132.13 2022-06-24 04:39:57 474019 0 1 1.842 1152.98 2022-06-24 09:49:57 0.01808
33 sell 100.0 1137.91 2022-06-24 04:49:59 239046 0 2 -1.324 1152.98 2022-06-24 09:49:57 0.01307
34 buy 100.0 1134.19 2022-06-24 05:09:59 536171 0 1 1.657 1152.98 2022-06-24 09:49:57 0.01630
35 buy 112.5 1126.59 2022-06-24 05:49:52 440462 0 1 2.635 1152.98 2022-06-24 09:49:57 0.02289
最大占用 1221.88
最小占用 0.00
转化率 6.87
总体盈利 83.97
总单数 36 , 多单 23, 空单 13
当前价格 1152.98
方向 做多:数量1.13,金额1221.88,成本价1078.83
code 382837 buy, expect for sell opt: no , code: 382837
买入信号:
opt: buy , code: 483977
.................................................................................................................................................................
................................................................................∧................................................................................
.............................................................................###.................................................................................
#........................................................................#######.................................................................................
#...........................................................................####.................................................................................
............................................................................####.................................................................................
.............................................................................###.∨...............................................................................
#.........................................................................######..∨..............................................................................
...............................................................................#.................................................................................
#............................................................................###.................................................................................
##........................................................######################...∨###.∧#.......................................................................
##......................................................................########.................................................................................
###.....................................................................########.......∨.........................................................................
#.........................................................................######..........∨......................................................................
########...........................................................#############...........∨#.∧#.................................................................
##...............................................................###############.............∨..........∧..................∧.∧#................................∧#
########..................................######################################................∨......∧.∨..................∨..∨####.............................
######....................................................######################.................∨###.∧.............∧.∧.∧##......................................
######...............................................###########################.....................∨....∨..........∨.∨............∨............................
#####...........................................################################...........................∨###....∧.................∨#....∧######............∧..
########................................########################################...............................∨.∧#....................∨.∧#.......∨##...∧###.∧...
###......................................................................#######................................∨....................................∨##....∨....
..........................................................................######........................................................∨.......................
卖出信号
opt: sell , code: 243382
.................................................................................................................................................................
.............................................................................###.................................................................................
.............................................................................###.................................................................................
.............................................................................###..................................∧..............................................
###..............................................................###############.....................∧.............∨.............................................
###.............................................................################....................∧.......∧#............................∧......................
############..........................................##########################......................∨.......∨..∧..∨##...........∧...∧..∧............∧..........
###########.............................########################################.......................∨..∧#....∧......∨.........∧...∧.∨.........∧#.∧#...........
######...............................................###########################...............................∨.........∧......∧..∨#...∨......∧#..∨.....∧...∧...
###...................................................##########################........................∨#..............∨...∧###...........∨#..........∨#.∨#..∨##
##......................................................................########..........................................∨#.................∨#.............∨....
...............................................................................#.................................................................................
#.............................................................................##..................∧#.............................................................
...............................................................................#.................................................................................
............................................................................####...............∧##...............................................................
............................................................................####.............∧#..................................................................
..............................................................................##.................................................................................
#...........................................................................####...........∧.....................................................................
.............................................................................###.........∧..∨....................................................................
.............................................................................###........∧.∨......................................................................
#...........................................................................####..∧.∧.∧#.........................................................................
#......................................................................#########.∧.∨.∨...........................................................................
................................................................................#................................................................................
自定义策略
关键函数:
def getPoint(self, timeStart, timeEnd):
#核心只需要实现返回字典
# timeStart 步进开始时间
# timeEnd 步进结束时间
#数据处理逻辑...
return {"trade_opt": "buy|sell|no","trade_msg": "交易信息"}
【6.实盘篇】
说明
本项目包含,运营,后台WEB,API服务,客户端等模块,如果仅需关注实盘交易,请参考核心交易bigdata部分,核心全为python编写,windows下也安装方便。
核心交易程序仓库: https://gitee.com/ar-frame/bigdata (纯python)
核心框架安装参考:windows系统图文安装ktrader教程
配置
系统集成了binance , okex , gateio 配置及密钥修改:conf.ini
; 开启实盘 no | yes
SHIPAN_ENABLE = yes
; 交易所 binance | okex | gateio 建议使用binance
TRADE_TYPE = binance
[gateio]
...
[okex]
...
[binance]
...
实盘启动
python | 脚本 | 网格单元金额 | 品种
python3 /var/yp/source/bigdata/src/Shipan.py 10 BTC-USDT
策略和回测的地方保持一致即可
【7.运营篇】
客户端打包
trader center H5 端
启动
npm start
编译
npm run build
trader client 安卓端 TraderClientAndroid
android-studio Build>generate signed apk release版本
签名文件 tradestrategy.jks
key pass / key store pass: 123456 key alias : test
代理管理
./create_registercode.sh 生成代理激活码
【8.杂篇】
基于此文档的视频操作教程
1.KTrader简介
2.如何回测
3.自定义策略
4.如何实盘
5.代理激活码生成
6.web版打包
7.安卓版打包
8.源码下载
dokcer 常用命令
container
docker export c | gzip > ./c.tar.gz
gunzip -c *.tar.gz | docker import - name
image
docker save
gunzip -c *.tar.gz | docker load
【更新日志】
2022/08/05 store mongodb 支持
; DB_TYPE mongodb | mysql
SHIPAN_DB_TYPE = mongodb
[trade]
# & 触发平仓盈利条件
SHIPAN_CON_PROFIT_USDT = 0.5
[mongo_store]
DB_HOST = 127.0.0.1
DB = store
DB_PASS =
DB_USER =
windows 环境只需要mongodb即可
2022/08/01 交易参数配置
conf.ini配置:
[trade]
# 反向减仓unit倍数
SHIPAN_FXJC_INDEX = 2
# 最大交易unit倍数
SHIPAN_TRADE_MAX_UNIT_INDEX = 3
# 触发正向盈利平仓仓位
SHIPAN_PC_ZX_USDTAMOUNT_LINE = 30
# 触发反向盈利平仓仓位
SHIPAN_PC_FX_USDTAMOUNT_LINE = 200
# 每次加仓价格波动率
SHIPAN_CON_GRID_INC_LEVEL_POINT = 0.00618
# 每次减仓价格波动率
SHIPAN_CON_GRID_DEC_LEVEL_POINT = 0.00818
2022/07/29 交易日志
- 增加文件平仓日志 csv 格式
- 更新数据来源 LiveWebSocketGtNew.py
- 清除冗余代码
2022/07/21 增加币安交易
- 增加 binace margin trade
安装扩展: pip install binance-connector
conf.ini配置:
; 交易所 binance | okex | gateio
TRADE_TYPE = binance
[binance]
apiKey = **************
secretKey = *******
httpProxies = ************
【MIT】
- Copyright © 2022 dpbtrader, v: kozdpb
- ktrader学习交流q群:
259956472
申明:本项目仅为交流学习作用,切勿用作第三方商业使用,鉴于网络,参数,品种的各种不确定性,没有100%赚钱的量化软件,使用此软件造成的损失与我方无关,交易有风险,投资需谨慎。