Kevin 发布于2016-02-02
回复 9
浏览 1959
0
策略:
1、大盘60日均线突破200日均线时,买入北陆药业
2、大盘跌破60日均线时,卖出北陆药业
遇到的问题:
表达“如果大盘跌破60日均线,并且目前有头寸”时
elif index< ma60似乎不行的,不知道哪里出错了,请指教
def initialize(context):
# 定义一个全局变量, 保存要操作的股票
# 300016(股票:北陆药业)
g.security = symbol('300016.XSHE')
# 000001(大盘:上证指数)
g.index=symbol('000001.XSHG')
# 初始化此策略
# 设置我们要操作的股票池, 这里我们只操作一支股票
set_universe([g.security])
# 每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次
def handle_data(context, data):
security = g.security
index=g.index
# 得到个股五日、10日均线价格
price5 = data[security].mavg(5)
price10 = data[security].mavg(10)
# 得到大盘60日、200日均线价格
ma60=data[index].mavg(60)
ma200=data[index].mavg(200)
# 得到上一时间点价格
price = data[security].price
index = data[index].index
# 得到当前资金余额
cash = context.portfolio.cash
# 如果当前有余额,并且大盘60日均线穿过200日均线
if cash > price and ma60 > ma200:
# 得到能够购买的股数
number_of_shares = int(cash/price)
# 下入买入单
order(security, +number_of_shares)
# 记录这次买入
log.info("Buying %s" % (security))
# 如果大盘跌破60日均线,并且目前有头寸
elif index< ma60 and context.portfolio.positions[security].amount > 0:
# 全部卖出
order_target(security, 0)
# 记录这次卖出
log.info("Selling %s" % (security))
# 绘制股票价格
record(stock_price=data[security].price)
# 绘制五日均线价格
record(price5=price5)
# 绘制十日均线价格
record(price10=price10)
评论
表达“如果大盘跌破60日均线,并且目前有头寸”
elif index< ma60似乎不行的,不知道哪里出错了
2016-02-02
没太仔细看,不过你说60日穿过200日,那60日前一天要小于200日吧。
2016-02-02
楼主可以考虑直接分享回测了~ 要不就得排版一下代码~~
```
在这里编辑代码
```
2016-02-03
已经重新编排好,请大神指点下拉哈哈哈
2016-02-03
index< ma60
index 不是价格,需要取到index的价格
2016-02-03
定义index是上证指数,所以上证指数跌破60日均线么,index< ma60?
2016-02-03
data[index].price 类似这样才是价格
2016-02-03