@vibek/cli 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -18
- package/config.example.toml +46 -13
- package/index.js +684 -652
- package/package.json +1 -1
- package/vibek-package.json +1 -1
package/README.md
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
# Vibek
|
|
1
|
+
# Vibek
|
|
2
2
|
|
|
3
|
-
Vibek
|
|
3
|
+
Vibek 是一个个人自用的 CTP 量化交易项目,提供后台行情与交易服务、策略管理、离线回测,
|
|
4
4
|
以及浏览器中的 AI 策略工作台。npm 包安装后注册全局命令 `vibek`。
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
## 项目状态
|
|
7
|
+
|
|
8
|
+
**本项目正在开发和测试中,尚未作为稳定产品发布。** 功能、命令、配置和数据格式可能继续调整,
|
|
9
|
+
不承诺向后兼容性、持续可用性或交易数据的完整与正确。该 npm 包主要用于个人环境中的开发、研究和验证,
|
|
10
|
+
不建议直接用于他人的生产或实盘交易环境。
|
|
11
|
+
|
|
12
|
+
Vibek 可能连接真实期货账户,但不构成投资建议,也不对交易损失负责。使用者应自行评估并承担风险;
|
|
13
|
+
首次使用应先在 CTP 测试环境、Paper 模式和离线回测中完成充分验证;Live 策略必须显式加载并启动。
|
|
8
14
|
|
|
9
15
|
## 运行环境
|
|
10
16
|
|
|
@@ -44,32 +50,29 @@ vibek --default-config > ~/.config/vibek/config.toml
|
|
|
44
50
|
${EDITOR:-vi} ~/.config/vibek/config.toml
|
|
45
51
|
```
|
|
46
52
|
|
|
47
|
-
|
|
53
|
+
账号名由 `broker_id-user` 自动生成,不需要手工重复填写。下面是一份单账号最小起步配置:
|
|
48
54
|
|
|
49
55
|
```toml
|
|
50
|
-
|
|
51
|
-
active_account = "9999-account"
|
|
52
|
-
|
|
53
|
-
[accounts."9999-account".identity]
|
|
56
|
+
[[accounts]]
|
|
54
57
|
broker_id = "9999"
|
|
55
58
|
user = "account"
|
|
56
59
|
|
|
57
|
-
[accounts.
|
|
60
|
+
[accounts.ctp]
|
|
58
61
|
market_front = "tcp://行情前置地址:端口"
|
|
59
62
|
trader_front = "tcp://交易前置地址:端口"
|
|
60
63
|
app_id = "你的-app-id"
|
|
61
64
|
production_mode = true
|
|
62
65
|
|
|
63
|
-
[accounts.
|
|
64
|
-
live_enabled = false
|
|
66
|
+
[accounts.trading]
|
|
65
67
|
max_order_volume = 1
|
|
66
68
|
max_position = 2
|
|
67
69
|
max_active_orders = 2
|
|
68
70
|
allow_short = true
|
|
69
71
|
```
|
|
70
72
|
|
|
71
|
-
`production_mode` 选择 CTP API
|
|
72
|
-
`
|
|
73
|
+
`production_mode` 选择 CTP API 的生产/评测模式;它不决定策略使用 Paper 还是 Live。
|
|
74
|
+
只有一个 `[[accounts]]` 时会自动选中;配置多个账号时才需要在文件顶部填写
|
|
75
|
+
`active_account = "<broker_id>-<user>"`。
|
|
73
76
|
|
|
74
77
|
### 2. 校验配置
|
|
75
78
|
|
|
@@ -170,7 +173,7 @@ vibek strategy unload <策略实例ID>
|
|
|
170
173
|
vibek backtest ./my-strategy.ts --help
|
|
171
174
|
```
|
|
172
175
|
|
|
173
|
-
Live 模式必须显式使用 `--mode live
|
|
176
|
+
Live 模式必须显式使用 `--mode live`、显式启动,并通过委托限制和持仓核对。
|
|
174
177
|
不要用尚未在 Paper 和回测中验证的策略直接连接实盘。
|
|
175
178
|
|
|
176
179
|
## 配置和数据位置
|
|
@@ -186,16 +189,22 @@ Live 模式必须显式使用 `--mode live`,并同时通过账号配置中的
|
|
|
186
189
|
|
|
187
190
|
## 升级与回退
|
|
188
191
|
|
|
189
|
-
|
|
192
|
+
`vibek update` 将官方 npm 应用更新到 `latest` 指向的稳定版本。它不会更新 gateway,也不会停止或
|
|
193
|
+
重启正在运行的 daemon;请在维护时段显式完成后续步骤:
|
|
190
194
|
|
|
191
195
|
```bash
|
|
192
|
-
|
|
196
|
+
vibek update
|
|
193
197
|
vibek --version
|
|
194
198
|
vibek gateway
|
|
195
199
|
vibek daemon restart
|
|
196
200
|
```
|
|
197
201
|
|
|
198
|
-
|
|
202
|
+
实盘机器需要固定或回退版本时,不要使用 `vibek update`,而是安装明确版本,再用
|
|
203
|
+
`vibek gateway <version>` 激活对应 gateway,最后重启 daemon:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
bun install -g @vibek/cli@0.1.0
|
|
207
|
+
```
|
|
199
208
|
|
|
200
209
|
## 排查问题
|
|
201
210
|
|
package/config.example.toml
CHANGED
|
@@ -1,58 +1,91 @@
|
|
|
1
|
-
# Vibek
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
|
|
1
|
+
# Vibek 配置模板
|
|
2
|
+
# 默认路径: Linux/macOS ~/.config/vibek/config.toml; Windows %APPDATA%\vibek\config.toml
|
|
3
|
+
# 带 # 的字段当前未启用;保留注释即使用程序默认值。
|
|
4
|
+
# 修改后运行 vibek config 校验;daemon 相关修改需重启后生效。
|
|
5
|
+
# 交易密码和 CTP 授权码不要写入本文件;vibek daemon start/restart 会在终端询问。
|
|
5
6
|
|
|
7
|
+
# 当前账号: 单账号自动选中;多账号时取消下一行注释,值为 broker_id-user。
|
|
6
8
|
# active_account = "9999-account"
|
|
7
9
|
|
|
10
|
+
# 本机数据根目录,保存 gateway、账号数据库、日志、策略状态和 AI 设置。
|
|
8
11
|
[storage]
|
|
9
12
|
# data_root = "~/.vibek"
|
|
10
13
|
|
|
14
|
+
# 本机服务端口。两个端口必须不同,服务仅监听本机。
|
|
11
15
|
[server]
|
|
16
|
+
# daemon 控制 API 和行情 WebSocket 端口。
|
|
12
17
|
# daemon_port = 3111
|
|
18
|
+
# Web 工作台端口。
|
|
13
19
|
# webui_port = 3211
|
|
14
20
|
|
|
21
|
+
# 网络代理。目前只用于 Telegram 通知,不影响 CTP 行情和交易连接。
|
|
15
22
|
[network]
|
|
16
23
|
# telegram_proxy = "http://127.0.0.1:7890"
|
|
17
24
|
|
|
18
|
-
#
|
|
25
|
+
# 账号身份与 CTP 连接。使用 daemon 时必须取消以下必填行的注释并填写。
|
|
26
|
+
# broker_id 和 user 组合为账号名 broker_id-user;添加账号时复制整组账号及其子表。
|
|
27
|
+
# [[accounts]]
|
|
28
|
+
# 期货公司提供的 CTP BrokerID,不是期货公司中文名称。
|
|
19
29
|
# broker_id = "9999"
|
|
30
|
+
# CTP 用户号/投资者代码,通常是期货资金账号。
|
|
20
31
|
# user = "account"
|
|
21
32
|
|
|
22
|
-
# [accounts.
|
|
33
|
+
# [accounts.ctp]
|
|
34
|
+
# 期货公司提供的行情和交易前置,格式必须是 tcp://主机:端口。
|
|
23
35
|
# market_front = "tcp://host:port"
|
|
24
36
|
# trader_front = "tcp://host:port"
|
|
37
|
+
# 可选线路,格式为 描述@IP;供 vibek front test/use 测速和切换,端口沿用上方地址。
|
|
25
38
|
# front_candidates = ["主线@1.2.3.4", "备用@1.2.3.5"]
|
|
39
|
+
# 期货公司为该 CTP 客户端分配的 AppID,不能自行编造。
|
|
26
40
|
# app_id = "client-id"
|
|
41
|
+
# 可选,默认 true;按期货公司资料选择 CTP 生产/评测模式,不决定策略使用 Paper 还是 Live。
|
|
27
42
|
# production_mode = true
|
|
28
43
|
|
|
29
|
-
#
|
|
30
|
-
#
|
|
44
|
+
# 可选日志级别: trace | debug | info | warn | error。
|
|
45
|
+
# 未设置时,CTP 生产模式默认 info,评测模式默认 debug。
|
|
46
|
+
# [accounts.logging]
|
|
47
|
+
# level = "info"
|
|
31
48
|
|
|
32
|
-
#
|
|
49
|
+
# 可选行情存储与固定录制合约。
|
|
50
|
+
# [accounts.market]
|
|
51
|
+
# 留空使用账号默认数据库: <data-root>/accounts/<account>/vibek_bars.db。
|
|
33
52
|
# db_path = ""
|
|
53
|
+
# 合约格式必须是 CODE.EXCHANGE;这里的合约会由 daemon 持续订阅并记录 1 分钟 K 线。
|
|
34
54
|
# record_instruments = ["NI2609.SHFE", "IF2609.CFFEX"]
|
|
55
|
+
# 丢弃时间戳比本机时间超前超过该毫秒数的行情。
|
|
35
56
|
# max_future_tick_ms = 5000
|
|
36
57
|
|
|
37
|
-
#
|
|
38
|
-
#
|
|
58
|
+
# Live 策略硬风控。mode=live 且显式启动后,委托仍必须通过以下限制。
|
|
59
|
+
# [accounts.trading]
|
|
60
|
+
# 单笔委托最大手数。
|
|
39
61
|
# max_order_volume = 10
|
|
62
|
+
# 单个策略、单个方向的预计持仓上限,包含未成交开仓委托。
|
|
40
63
|
# max_position = 20
|
|
64
|
+
# 单个策略允许同时存在的活动委托数。
|
|
41
65
|
# max_active_orders = 5
|
|
66
|
+
# 是否允许开空仓;false 时仍允许平已有空仓。
|
|
42
67
|
# allow_short = true
|
|
43
68
|
|
|
44
|
-
#
|
|
69
|
+
# 北京时间交易窗口调度。启用后,daemon 按窗口自动连接、启停策略、撤单和断开。
|
|
70
|
+
# [accounts.schedule]
|
|
45
71
|
# enabled = true
|
|
72
|
+
# 日盘和夜盘窗口的启动/停止锚点,格式为 HH:MM。
|
|
46
73
|
# day_start = "08:45"
|
|
47
74
|
# day_stop = "15:15"
|
|
48
75
|
# night_start = "20:45"
|
|
49
76
|
# night_stop = "02:35"
|
|
77
|
+
# 单个窗口最多启动尝试次数,以及首次重试等待毫秒数(后续指数退避)。
|
|
50
78
|
# max_start_attempts = 4
|
|
51
79
|
# retry_base_ms = 30000
|
|
80
|
+
# 调度器检查窗口状态的间隔毫秒数。
|
|
52
81
|
# tick_ms = 30000
|
|
53
82
|
|
|
54
|
-
#
|
|
83
|
+
# 可选通知。密钥会以明文保存在本文件中,不要提交到 Git 或放入共享目录。
|
|
84
|
+
# [accounts.notifications]
|
|
85
|
+
# 接收信号、调度和故障通知的 Bark key。
|
|
55
86
|
# bark_key = ""
|
|
87
|
+
# 仅额外接收交易信号的 Bark key 列表。
|
|
56
88
|
# bark_signal_keys = []
|
|
89
|
+
# Telegram 通知需同时填写 bot token 和 chat ID。
|
|
57
90
|
# telegram_bot_token = ""
|
|
58
91
|
# telegram_chat_id = ""
|