求助,菜鸟求帮看看代码,解决编译错误

kimfucking 2019-07-11 02:43:30
import math
import numpy as np
import pandas as pd
import talib
# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):
context.number=10 # 选取股票数量为10
context.period = 20 # 评价股票表现的窗口期为20个交易日
context.marketval = context.portfolio.market_value # 获取投资组合当前的市场价值(未实现/平仓的价值)
context.stocks = sector('300信息') # 获取板块股票列表
#context.benchmark="000915.XSHG" # 将基准设置为沪深300信息技术指数
# context.benchmark="000935.XSHG" # 将基准设置为中证信息技术指数
update_universe(context.stocks) # 更新股票池
scheduler.run_monthly(get_head,monthday=1) # 每月月初寻找板块“龙头股”
scheduler.run_monthly(position,monthday=1) # 每月月初调整仓位
scheduler.run_daily(stoploss) # 每日进行限价止损操作
pass
def get_head(context,bar_dict): # 寻找板块“龙头股”
prices = history_bars(context.period+1,'1d','close') # 获取历史日度收盘价
volumes = history_bars(context.period+1,'1d','volume') # 获取历史日度成交量
b_prices = history_bars(6, '1d', 'close')[context.benchmark].values # 获取基准过去6个交易日日度收盘价
score = {} # 设置用于打分的变量
for stock in prices.columns: # 不同股票之间的循环
p = prices[stock] # 成交价向量
v = volumes[stock] # 交易量向量
temp = 0 # 临时变量
for i in list(range(1,context.period)): # 不同交易日之间的循环
if p[i] > p[i-1]: # 如果收盘价上升
if v[i] > v[i-1]:
temp = temp + 2 # 放量上涨加2分
else:
temp = temp + 1 # 缩量上涨加1分
else: # 如果收盘价未上升
if v[i] < v[i-1]:
temp = temp - 1 # 缩量下跌减1分
else:
temp = temp - 2 # 放量下跌减2分
score[stock] = temp # 每只股票计算一个得分
s = pd.Series(score,name = 'scores') # 生成股票得分序列
s.sort(ascending=False) # 将每只股票得分降序排序
context.to_buy = s.index[0:context.number] # 将这些股票放入“将要买进”(to_buy)名单
if b_prices[0]/b_prices[4] <= 0.92: # 大盘之前一周内下跌8%则空仓
context.to_buy = []
pass
def position(context,bar_dict): # 调整仓位
stocks = set(context.to_buy) # 获取得分靠前的股票名单
holdings = set(get_holdings(context)) # 获取当前持有股票名单
to_buy = stocks - holdings # 得分靠前且当前未持有,则放入“将要买进”(to_buy)名单
to_sell = holdings - stocks # 当前已持有但得分未靠前,则放入“将要卖出”(to )名单
for stock in to_sell: # 在“将要卖出”(to_sell)不同股票之间循环
if bar_dict[stock].is_trading: # 如果股票可以交易,则卖出股票
order_target_percent(stock , 0)
to_buy = get_trading_stocks(to_buy, context, bar_dict) # 获取“将要买进”(to )可交易股票名单
cash = context.portfolio.cash # 获取剩余资金数量
average_value = 0 # 初始默认股票分配资金为零
if len(to_buy) > 0:
average_value = 0.99 * cash / len(to_buy)
#在“将要买进”(to_buy)的股票之间平均分配资金
for stock in to_buy: #在to_buy不同股票之间循环
if bar_dict[stock].is_trading:
upprice=history(2,'1d','close')[stock][0]*1.095 # 计算涨停价格
lowprice=history(2,'1d','close')[stock][0]*0.905 # 计算跌停价格
today=history(2,'1d','close')[stock][1] # 获取当前交易日收盘价
if (today <upprice) and (today>lowprice): # 过滤涨停板和跌停板股票
order_value(stock ,average_value)
context.marketval = context.portfolio.market_value # 更新投资组合当前的市场价值(未实现/平仓的价值)
pass
def get_trading_stocks(to_buy, context, bar_dict): # 获取可交易股票名单
trading_stocks = [] # 初始默认股票为不可交易
for stock in to_buy:
if (bar_dict[stock].is_trading) and (not is_suspended(stock, 1)) and (not is_st_stock(stock,1)): # 排除停牌股票和ST股票
trading_stocks.append(stock) # 更新股票交易状态
return trading_stocks
pass
def get_holdings(context): # 获取股票仓位
positions = context.portfolio.positions

holdings = [] # 初始默认股票仓位均为零
for position in positions:
if positions[position].quantity > 0:
holdings.append(position) # 更新股票仓位
return holdings
pass
def stoploss(context,bar_dict): # 限价止损策略
if context.portfolio.market_value < context.marketval * 0.95: # 投资组合一个月内累计下跌5%则平仓
for stock in context.portfolio.positions:
if bar_dict[stock].is_trading:
order_target_value(stock,0)
...全文
136 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
kimfucking 2019-07-15
  • 打赏
  • 举报
回复
回测运行错误:
File strategy.py, line 15 in init

AttributeError: module 'mgquant_mod_stock.utils.scheduler' has no attribute 'run_monthly' (温馨提示:第15行,module 'mgquant_mod_stock.utils.scheduler' 没有属性 'run_monthly',建议检查引用对象的类型和内容。)
kimfucking 2019-07-11
  • 打赏
  • 举报
回复
回测运行错误:
File strategy.py, line 15 in init

AttributeError: module 'mgquant_mod_stock.utils.scheduler' has no attribute 'run_monthly' (温馨提示:第15行,module 'mgquant_mod_stock.utils.scheduler' 没有属性 'run_monthly',建议检查引用对象的类型和内容。)
一笑程序猴 2019-07-11
  • 打赏
  • 举报
回复
具体报什么错,贴出来看一下。
还有为什么每个方法的最后都要加个pass?pass只适用于不做任何事的情况下用的即比如写个方法里面没有任何逻辑内容,这时可以写个pass代替。

37,742

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧