老虎量化API文档
""" 策略思路
使用 talib 计算个股的均线
如果10日均线大于20日均线则全仓买入
如果10日均线小于20日均线的0.98则空仓
基准与交易标的相同,超额收益完全来源于择时
"""

import talib as ta

# 策略初始化方法, 只在开始执行回测时运行一次
def initialize(context):
    print('初始化策略')
    # 使用 jd 作为策略基准
    set_benchmark(symbol('SPY'))
    # 定义要交易的标的
    context.asset = symbol('jd')
 
# 在每个交易日开始前运行方法
def before_trading_start(context, data):
    # 获取过去20天的收盘价
    history = data.history(assets=context.asset,
                            fields='close',
                            bar_count=20,
                            frequency='1d')
    log.info(history.tail())
    # 使用 talib 计算短期和长期移动均线
    short_ma = ta.MA(history.values,timeperiod=10)[-1]
    long_ma = ta.MA(history.values,timeperiod=20)[-1]
    # 将计算好的数据放入context 中, 方便handle_data 使用
    context.short_ma = short_ma
    context.long_ma = long_ma

# 每个 bar 结束时运行一次
def handle_data(context, data):
    short_ma = context.short_ma
    long_ma = context.long_ma
    print(short_ma, long_ma)
    total_value = context.portfolio.portfolio_value
    # 如果10日均线大于20日均线, 满仓买入
    if short_ma > long_ma:
        log.info('多头趋势,全仓买入')
        order_target_value(context.asset, total_value)
    
    # 如果10日均线小于20日均线的0.98, 不持仓
    elif short_ma < 0.98 * long_ma:
        log.info('空头趋势,不持仓')
        order_target_value(context.asset, 0)