def initialize(context):
# 定义一个全局变量, 保存要操作的股票
# 000001(股票:平安银行)
g.security : ['000001.XSHE','601818.XSHG']
# 初始化此策略
# 设置我们要操作的股票池, 这里我们只操作一支股票
set_universe([g.security])
### 股票相关设定 ###
# 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱
set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
def before_trading_start(context):
priceDF = get_price(g.security,context.current_dt,context.current_dt,fields=['close'])
print(priceDF)
if priceDF.close[-1]>attribute_history(g.security, 5, unit='1d', fields=['close']).mean().close:
g.buy =True
else:
g.buy =False
# 每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次
def handle_data(context, data):
# 取得当前的现金
cash = context.portfolio.cash
# 如果上一时间点价格高出五天平均价1%, 则全仓买入
if g.buy:
# 用所有 cash 买入股票
order_value(g.security, cash)
# 记录这次买入
log.info("Buying %s" % (g.security))
# 如果上一时间点价格低于五天平均价, 则空仓卖
else:
# 卖出所有股票,使这只股票的最终持有量为0
order_target(g.security, 0)
# 记录这次卖出
log.info("Selling %s" % (g.security))
2017-04-10