老虎量化API文档

策略的构成

需要实现策略对象的两个方法:initialize 和 handle_data.

initialize 主要用于设置初始化回测的一些设置,如滑点、基准等。

handle_data 用于实现策略的逻辑。

以下是一个简单的策略示例:

import pandas as pd 
# 策略初始化方法, 只在开始执行回测时运行一次
def initialize(context):
    # 使用 标普500 ETF 作为策略基准
    set_benchmark(symbol('spy'))

def handle_data(context, data):
    # 获取历史五日收盘价
    history = data.history(symbol('amzn'), 'close', 5,'1d')
    # 计算五日均线
    ma5 = history.mean()
    # 判断收盘价大于五日均线,买入
    if history.iloc[-1]>ma5:
        order_target_value(symbol('amzn'), 1000000)
    else:
        order_target_value(symbol('amzn'),0)

回测的主要逻辑

  1. 需要在 handle_data 方法中实现回测的交易逻辑
  2. 在回测区间的每个交易日或每分钟, 都会执行一次 handle_data 方法。
  3. 在 handle_data 方法中, 可以通过 data 对象的方法获取行情数据。
  4. 基于上面的数据形成下单逻辑, 并调用订单相关 API 进行下单。
  5. 在回测结束后, 我们会根据历史的下单记录计算回测的收益曲线,以及风险收益指标

initialize 策略初始化方法

def initialize(context):
    pass

初始化方法只在策略开始运行时执行一次。用于设置滑点、比较基准等内容。

参数

返回

  • None

handle_data 策略运行方法

def handle_data(context, data):
    pass

在日级回测(每日运行一次)中, 每个交易日运行一次。

参数

  • context: Context 对象, 与 initialize 中使用的 context 对象相同
  • data: data 对象, 包含了获取数据所需要的方法。具体的方法请参考获取数据部分

返回

  • None

before_trading_start 交易开始前运行函数

def before_trading_start(context, data):
    pass

在每个交易日的 handle_data 开始执行前运行。

参数

  • context: Context 对象, 与 initialize 中使用的 context 对象相同
  • data: data 对象, 包含了获取回测数据所需要的方法。具体的方法请参考获取数据部分

返回

  • None