请问这个策略有偷价或者未来函数行为吗?回测效果很好 [开拓者 TB]
- 咨询内容: 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] <-0.5]
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
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容