拿macd的模板改成KD之后没有收益率?

新手专区
标签: #<Tag:0x00007fcf7013d5c0>

(yi424130460) #1

新人求教。拿macd模板改成了KD模板后,虽然没有报错,但是没有得到收益率,不知道是哪里出错了。
求大神解答……

克隆策略

技术分析指标策略: 基于KD指标

1. 策略参数

In [ ]:
import talib
instruments = ['000651.SZA'] #以格力电器为例
start_date = '2010-09-16'# 起始时间    
end_date = '2017-11-08' # 结束时间

2. 策略主体

In [ ]:
def initialize(context):
   
    context.set_commission(PerDollar(0.0015)) # 手续费设置

    
def handle_data(context, data):
    
 
    if context.trading_day_index < 100: # 在100个交易日以后才开始真正运行 
        return
    
    sid = context.symbol(instruments[0])
    
def is_kdj_cross(k_data):
    
    k, d =ta_stoch_slowk_5_3_0_3_0_0,ta_stoch_slowd_5_3_0_3_0_0
    
 
    # 计算现在portfolio中股票的仓位
    cur_position = context.portfolio.positions[sid].amount
    
    # 策略逻辑
    # 买入逻辑 K上穿D
    if  k[-1] > d[-1] and k[-2] < d[-2]:
        # 买入股票
        if cur_position == 0 and data.can_trade(sid):
            context.order_target_percent(sid, 1)
        

    # 卖出逻辑  K下穿D
    if k[-1] < d[-1] and k[-2] > d[-2]:
        # 清仓
        if cur_position > 0 and data.can_trade(sid):
            context.order_target_value(sid, 0)

3. 回测接口

In [3]:
m=M.trade.v3( 
    instruments=instruments,
    start_date=start_date,
    end_date=end_date,
    initialize=initialize,
    handle_data=handle_data,
    order_price_field_buy='open',
    order_price_field_sell='open',
    capital_base=float("1.0e6"),
    benchmark='000300.INDX',
)
[2018-03-06 15:19:12.145849] INFO: bigquant: backtest.v7 开始运行..
[2018-03-06 15:19:12.154529] INFO: bigquant: 命中缓存
  • 收益率0.0%
  • 年化收益率0.0%
  • 基准收益率38.95%
  • 阿尔法-0.04
  • 贝塔0.0
  • 夏普比率n/a
  • 胜率--
  • 盈亏比--
  • 收益波动率0.0%
  • 信息比率-0.21
  • 最大回撤0.0%
[2018-03-06 15:19:16.385695] INFO: bigquant: backtest.v7 运行完成[4.239856s].


(大胡子) #2
 k, d =ta_stoch_slowk_5_3_0_3_0_0,ta_stoch_slowd_5_3_0_3_0_0

这里有问题啊,技术指标值需要手动计算,你可以借助talib.


(iQuant) #3
k, d =ta_stoch_slowk_5_3_0_3_0_0,ta_stoch_slowd_5_3_0_3_0_0

这句代码有问题,因子库里面的因子只能使用在AI策略里面,见:您的第一个AI量化策略
你分享的这个策略是传统的择时策略,需要使用talib模块在策略代码里手动计算相关的技术指标。

参考:量化开发借助talib使用技术分析指标来炒股