您的位置:

Easyquant全面详解

一、简介

Easyquant是一个用Python编写的股票量化交易框架,可以帮助开发者快速地实现量化策略。

Easyquant具有以下特点:

  1. 简单易用,代码量少,不需要太多编程基础。
  2. 支持多账户,可以满足不同交易者的需求。
  3. 支持实时模拟和回测模式,方便开发者检验策略。

# 安装easyquant
pip install easyquant

# 导入easyquant
from easyquant import StrategyTemplate, DefaultLogHandler, settings

class MyStrategy(StrategyTemplate):
    name = 'mystrategy'

    def strategy(self, event):
        # 编写交易策略的代码
        pass

    def log_handler(self):
        # 自定义日志的输出方式
        return DefaultLogHandler(self.name, log_type=settings.LOGGER_HANDLER)

if __name__ == '__main__':
    mystrategy = MyStrategy()
    mystrategy.run()

二、数据获取

获取股票数据是开发量化交易策略的重要任务。Easyquant提供了多种数据源供开发者使用:

  1. Tushare
  2. Sina财经
  3. 聚宽量化
  4. 通联数据
  5. 新浪股票数据接口

下面以Tushare为例,演示如何获取股票数据:


# 安装tushare
pip install tushare

# 导入tushare
import tushare as ts

# 获取沪深股票列表
stock_list = ts.get_stock_basics()

# 获取指定股票的历史k线数据
k_data = ts.get_k_data('000001', start='2021-01-01')

三、交易策略

Easyquant提供了一个模板StrategyTemplate,开发者只需要继承这个模板,实现其中的strategy方法即可编写自己的交易策略。

下面是一个例子:


from easyquant import StrategyTemplate, DefaultLogHandler

class MyStrategy(StrategyTemplate):
    name = 'mystrategy'

    def strategy(self, event):
        # 获取当前股票的k线数据
        k_data = self.get_kline_data(event.stock_code)

        # 判断是否买入
        if k_data['ma5'] > k_data['ma60']:
            self.buy(stock_code=event.stock_code, price=event.last_price)

        # 判断是否卖出
        if k_data['ma5'] < k_data['ma60']:
            self.sell(stock_code=event.stock_code, price=event.last_price)

    def log_handler(self):
        return DefaultLogHandler(self.name)

if __name__ == '__main__':
    mystrategy = MyStrategy()
    mystrategy.run()

四、交易模拟

Easyquant提供了实时模拟和回测模式,方便开发者检验自己的交易策略。

下面是一个例子:


# 导入模拟器
from easyquant import SimulationTrader

# 导入策略
from my_strategy import MyStrategy

class MySimulationTrader(SimulationTrader):
    def __init__(self):
        super().__init__()

        # 设置初始资金
        self.set_cash(100000)

        # 导入策略
        self.strategy = MyStrategy()

if __name__ == '__main__':
    # 运行模拟器
    MySimulationTrader().run()

五、交易回测

Easyquant提供了多种回测方法,可以根据需求选择不同的方法进行回测。

下面是一个例子:


# 导入回测器
from easyquant import BacktestTrader

# 导入策略
from my_strategy import MyStrategy

class MyBacktestTrader(BacktestTrader):
    def __init__(self):
        super().__init__()

        # 设置回测起始和结束时间
        self.set_backtest_period('2021-01-01', '2021-06-30')

        # 导入策略
        self.strategy = MyStrategy()

if __name__ == '__main__':
    # 运行回测器
    MyBacktestTrader().run()