9 个版本
0.1.8 | 2023年10月4日 |
---|---|
0.1.7 | 2023年9月13日 |
0.1.5 | 2023年8月28日 |
#4 in #历史
每月下载量 24
305KB
7.5K SLoC
chapaty v0.1.0
Chapaty 是开源软件,用于在不同的市场上回测交易策略。您在 chapaty-ai 上的交易结果由该库计算。要使用此库,您需要提供自己的数据,并遵循以下历史数据的约定。
数据提供者和市场
目前支持以下数据提供者和市场。某些市场的历史市场数据可以追溯到2006年。
数据提供者 | 市场 | 数据 |
---|---|---|
CME | FX期货:6A、6B、6BTC、6C、6E、6J、6N 商品:CL、NG、GC、ZC、ZS、ZW |
不同时间框架的OHLC |
Binance | btcusdt ETHUSDT |
不同时间框架的OHLCV,Tick数据,聚合交易数据 |
盈亏报告
当回测您的机器人时,Chapaty 将生成以下形式的盈亏报告。
# | 日历周 | 日期 | 策略 | 市场 | 交易方向 | 入场 | 止盈 | 止损 | 预期赢点 | 预期损失点 | 预期赢美元 | 预期损失美元 | 曲线 | 入场时间戳 | 目标时间戳 | 止损时间戳 | 退出价格 | 状态 | 点盈 | 美元盈 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2 | 2022-01-10 | PPP | EurUsd | 多 | 1.1549 | 1.162 | 0.1537 | 142.0 | -20024.0 | 887.45 | -125150.0 | 0.0071 | 2022-01-10 14:00:00 | 超时 | 超时 | 1.1575 | 胜者 | 52.0 | 325.0 |
1 | 2 | 2022-01-11 | PPP | EurUsd | 多 | 1.15735 | 1.1585 | 0.15315 | 23.0 | -20084.0 | 143.75 | -125525.0 | 0.0011 | 2022-01-11 11:00:00 | 2022-01-11 11:00:00 | 超时 | 1.1585 | 胜者 | 23.0 | 143.75 |
性能报告
除了盈亏报告外,Chapaty 还会生成以下形式的性能报告。
年份 | 策略 | 市场 | 净利润 | 平均每笔交易赢利 | 最大绝对回撤 | 最大相对回撤 | 盈利百分比 | 平均赢利/平均损失比率 | 平均赢利 | 平均损失 | 盈利因子 |
---|---|---|---|---|---|---|---|---|---|---|---|
2022 | Ppp | EurUsd | 13475.0 | 83.18 | 5581.25 | -0.41 | 0.77 | 0.46 | 308.46 | -677.91 | 1.54 |
交易分解报告
年份 | 策略 | 总赢利 | 总损失 | 净赢利 | 超时赢利 | 净损失 | 超时损失 | 总胜者交易次数 | 总败者交易次数 | 总交易次数 | 胜者交易次数 | 败者交易次数 | 超时胜者交易次数 | 超时败者交易次数 | 超时交易次数 | 未入场次数 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2022 | Ppp | 38557.5 | -25082.5 | 32876.25 | 5681.25 | 0.0 | -25082.5 | 125 | 37 | 162 | 107 | 0 | 18 | 37 | 55 | 89 |
在Excel中打开数据
报告是简单的 .csv
文件,其中
- 列用逗号
,
分隔 - 浮点数使用小数点
.
如果您想用Excel打开一个报告,但没有得到格式良好的文件,请尝试以下步骤
- 在简单的文本编辑器中打开
.csv
文件 - 将所有
,
替换为;
- 将所有
.
替换为,
- 保存文件
- 再次在Excel中打开文件
目录布局
所有数据都存储在Google Cloud Storage存储桶中。有两个存储桶。我们用一个存储桶来存储历史市场数据。我们有一个第二个存储桶来缓存计算结果以减少评估历史市场数据上机器人所需的时间。
历史市场数据
我们使用以下目录布局。这是为了说明目的,因为Google Cloud Storage没有文件夹或子文件夹。数据存储在 .csv
中,在 "bucket"/{provider}/{aggTrades | ohlc-{ts} | ...}
目录中。文件遵循严格的命名约定。
.
├── {provider} # binance / cme / ...
├── aggTrades/
│ ├── {market}-aggTrades-{year}[-{month?}-{day?}].csv
│ ├── btcusdt-aggTrades-2023-01.csv
│ ├── ...
├── ohlc/ # For ts in { 1w | 1d | 12h | 8h | 6h | 4h | 3h | 2h | 1h | 30m | 15m | 5m | 1m | 30s | 15s | 1s }
│ ├── {market}-{ts}-{year}[-{month?}-{day?}].csv
│ ├── btcusdt-1m-2023-01.csv
│ ├── ...
├── ohlcv/ # For ts in { 1w | 1d | 12h | 8h | 6h | 4h | 3h | 2h | 1h | 30m | 15m | 5m | 1m | 30s | 15s | 1s }
│ ├── {market}-{ts}-{year}[-{month?}-{day?}].csv
│ ├── btcusdt-1m-2023-01.csv
│ ├── ...
├── tick/
├── {market}-tick-{year}[-{month?}-{day?}].csv
├── btcusdt-tick-2023-01.csv
├── ...
缓存数据
缓存数据存储在单独的存储桶中,遵循此目录布局。
.
├── {strategy} # ppp / magneto / postNews / ...
├── {market} # 6e / btcusdt / ...
├── {year} # 2023 / 2022 / ...
├── {time_interval} # none / TimeFrame::to_string()
├── {time_frame} # { 1w | 1d | 12h | 8h | 6h | 4h | 3h | 2h | 1h | 30m | 15m | 5m }
├── aggTrades.csv # Output of processed `.csv` files
├── ohlc-{ts}.csv # Output of processed `.csv` files
├── ohlcv-{ts}.csv # Output of processed `.csv` files
├── tick.csv # Output of processed `.csv` files
├── tpo-{ts}.csv # Output of processed `.csv` files
├── vol-tick.csv # Contains volume profile, which is computed by tick data
├── vol-aggTrades.csv # Contains volume profile, which is computed by aggTrades data
├── ...
测试数据
我们维护一个额外的存储桶用于测试数据。目录布局与上述相同,有一个特殊的目录 ohter
。
.
├── {...directory layout}
│
├── other # Special only directory
├── test_file1.csv # Test files for unit tests
├── test_file2.csv # ...
├── ...
├── gcp/ # Contains test files for the `gcp` module
├── market_profile/ # Contains test files for the `market_profile` module
├── ppp/ # Contains test files for the `ppp` module
└── ... # etc.
从GCP下载
要从Google Cloud Platform下载多个文件,请按照以下步骤操作。
- 打开gsutil命令行工具
- 粘贴命令,例如
gsutil cp -r gs://bucket/folder .
- 运行
$ zip - folder.zip folder/
以压缩您的文件 - 在gsutil命令行工具菜单中点击右上角带有三个点的按钮
- 选择下载
- 将您想下载的文件名
folder.zip
添加到文件路径
重命名文件
使用 rename
命令
- 转换为小写:
rename -'y/A-/a-/' *.csv
- 将
_
替换为-
:rename 's/_/-/g' *.csv
- 将
6btc-1m-01-01-2021-31-12-2021.csv
替换为6btc-1m-2021-31-12-2021.csv
,然后使用rename 's/^(\w+-\w+-)(\d{2}-\d{2}-)(\d{4}-\d{2}-\d{2}-\d{4})\.csv$/$1$3.csv/' *.csv
将(.{12})
中的 12 替换为 10(如果您想保留前十个字母)
依赖项
~35–50MB
~1M SLoC