主页 > imtoken钱包苹果版怎么用 > 数字货币量化系统策略回测及Catalyst框架使用
数字货币量化系统策略回测及Catalyst框架使用
一、回测
基于历史上已经发生的真实市场数据,从历史的某个时间点开始,严格按照既定的量化策略进行交易,模拟真实金融市场交易的规则。
一般我们会获取一段时间内的盈利能力、最大回撤等数据。
二、回测框架 Catalyst
一个用 Python 编写的加密货币算法交易库虚拟货币交易时间段,易于使用且安全,允许对历史数据的交易策略进行回测。
Catalyst 建立在成熟的 Zipline 项目之上。我们尽最大努力尽量减少对通用 API 的结构更改,以最大限度地兼容现有的交易算法、开发人员知识和教程。
Catalyst 建立在成熟的 Zipline 项目之上。我们已尽一切可能最大限度地减少对通用 API 的结构更改虚拟货币交易时间段,以最大限度地兼容现有的交易算法、开发人员知识和教程。
Catalyst 是基于著名的 Zipline 框架开发的,所以如果找不到某些属性,可以直接查看 Zipline 文档。
官方文档:
安装
使用 Anaconda 创建虚拟环境并安装必要的软件包
将python3.6-environment.yml文件下载到本地:
下载python3.6-environment.yml
Linux 或 MacOS Python 3.6:
conda env create -f python3.6-environment.yml
source activate catalyst
Windows安装方法请参考官方文档:
PyCharm 配置
文件 -> 设置 -> 项目解释器
虚拟环境创建完成后,选择虚拟环境作为pycharm运行路径:
Catalyst 框架使用简单
使用回测时,首先加载交易所数据:
catalyst ingest-exchange -x binance -i btc_usdt -f daily
催化剂启动.py
# -*- coding:utf-8 -*-
"""
@author: Corwien
@file: catalyst_start.py
@time: 19/12/17 01:18
"""
# ================ 注意 =====================
# 在回测之前,需要运行下面的命令加载数据:
# see doc: https://enigma.co/catalyst/beginner-tutorial.html
# 加载币安交易所数据
# > catalyst ingest-exchange -x binance -i btc_usdt -f minute
# > catalyst ingest-exchange -x binance -i btc_usdt -f daily
# ================ 注意 =====================
import pandas as pd
import matplotlib.pyplot as plt
from catalyst import run_algorithm
from catalyst.api import order, record, symbol
def initialize(context):
"""
初始化
:param context:
:return:
"""
context.asset = symbol('btc_usdt')
def handle_data(context, data):
"""
循环运行策略
:param context:
:param data:
:return:
"""
# 每个交易周期买入 1 个比特币
order(context.asset, 1)
# 记录每个交易周期的比特币价格
record(btc=data.current(context.asset, 'price'))
def analyze(context, perf):
"""
策略分析
:param context:
:param perf:
:return:
"""
# print(perf.portfolio_value)
# 每日资产
ax1 = plt.subplot(211)
perf.portfolio_value.plot(ax=ax1)
ax1.set_ylabel('portfolio value')
# 比特币价格
ax2 = plt.subplot(212, sharex=ax1)
perf.btc.plot(ax=ax2)
ax2.set_ylabel('bitcoin price')
plt.show()
if __name__ == '__main__':
run_algorithm(
captal_base=1000,
data_frequency='daily',
initialize=initialize,
handle_data=handle_data,
analyze=analyze,
exchange_name='binance',
quote_currency='usdt',
start=pd.to_datetime('2019-01-01', utc=True),
end=pd.to_datetime('2019-12-01', utc=True)
)
相关文章:
开源量化交易平台zipline初探
做的人总能成功,走的人总能到达