交易开拓者在哪里回测_请问这个策略有偷价或者未来函数行为吗?回测效果很好-开拓者知识 -程序化交易(CXH99.COM)...

咨询内容: import pandas as pd

import numpy as np

def init(context):

context.s1 = '000001.XSHG'

context.max_num_stocks = 40

context.days = 0

context.period_days = 1

context.relative_strength_6m = {}

def period_passed(context):

return context.days % context.period_days == 0

def before_trading(context):

context.days += 1

if not period_passed(context):

return

dofilter(context)

update_universe(context.fundamental_df.columns.values)

def dofilter(context):

fundamental_df = get_fundamentals(

query(fundamentals.eod_derivative_indicator.market_cap)

.order_by(fundamentals.eod_derivative_indicator.market_cap.asc())

.limit(context.max_num_stocks)

)

#Update context

context.stocks = [stock for stock in fundamental_df]

context.fundamental_df = fundamental_df

def rebalance(context, bar_dict):

for stock in context.portfolio.positions:

if stock not in context.fundamental_df:

order_target_percent(stock, 0)

context.stocks = [stock for stock in context.stocks

if stock in bar_dict and bar_dict[stock].is_trading and context.relative_strength_6m[stock]

if len(context.stocks) == 0:

return

weight = 1.0/len(context.stocks)

for stock in context.stocks:

order_target_percent(stock, weight)

def handle_bar(context, bar_dict):

his = history(10, '1d', 'close')['000001.XSHG']

if period_passed(context):

if his[9]/his[8]< 0.97:

if len(context.portfolio.positions)>0:

for stock in context.portfolio.positions.keys():

order_target_percent(stock, 0)

return

if not period_passed(context):

return

compute_relative_strength(context,bar_dict)

rebalance(context, bar_dict)

def compute_relative_strength(context,bar_dict):

prices = history (150, '1d', 'close')

#过去六个月的价格变化率

pct_change = (prices.ix[149] - prices.ix[19]) / prices.ix[19]

#print(prices.ix[19])

#print(pct_change)

priceofbase = history (150, '1d', 'close')[context.s1]

pct_changeforbase = (priceofbase.ix[149] - priceofbase.ix[19]) / priceofbase.ix[19]

pct_change = pct_change - pct_changeforbase

print(pct_change.index)

print(bar_dict)

if pct_changeforbase != 0:

pct_change = pct_change / abs(pct_changeforbase)

context.relative_strength_6m = pct_change

TB技术人员: 你这个代码都不是TB的,怎么回测的?

TB客服: 本帖最后由 bahuang 于 2016-2-26 08:40 编辑

这里也有人用python

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值