主页 > imtoken钱包苹果版怎么用 > 数字货币量化系统策略回测及Catalyst框架使用

数字货币量化系统策略回测及Catalyst框架使用

imtoken钱包苹果版怎么用 2023-02-20 05:43:02

一、回测

基于历史上已经发生的真实市场数据,从历史的某个时间点开始,严格按照既定的量化策略进行交易,模拟真实金融市场交易的规则。

一般我们会获取一段时间内的盈利能力、最大回撤等数据。

二、回测框架 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 配置

文件 -> 设置 -> 项目解释器

file

file

虚拟环境创建完成后,选择虚拟环境作为pycharm运行路径:

file

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初探

做的人总能成功,走的人总能到达