请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  量化平台 帖子:3282966 新帖:89

交易只能运行一次

2020来了发表于:8 月 1 日 18:00回复(1)

问题源码: Security(code=600030.XSHG) 在 positions 中不存在, 为了保持兼容, 我们返回空的 Position 对象, amount/price/avg_cost/acc_avg_cost 都是 0

源码:

导入聚宽函数库

import jqdata

初始化此策略

def initialize(context):

#开启动态复权模式(真实价格)
set_option('use_real_price',True)
g.sumprice = 0
#设置我们要操作的股票池,这里我们选择蓝筹股
g.stocks = ['000001.XSHE','600000.XSHG','600019.XSHG','600028.XSHG','600030.XSHG','600036.XSHG','600510.XSHG','601398.XSHG','601857.XSHG','601988.XSHG']

每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次

def handle_data(context,data):

#获取数据
hist = history(1,'1d','close',g.stocks)
#得到每只股票可以花费的金额,这里我们使用总现金股票数数量
for security in g.stocks:
    p = hist[security][0]
    g.sumprice = g.sumprice   p

#循环股票池
for security in g.stocks:
    #得到当前时间
    today = context.current_dt 
    #得到该股票上一时间点价格
    current_price = hist[security][0]
    #如果当前为2月或8月且日期小于10号,并且当前该股票空仓
    if (today.month == 2 or today.month == 8)  and today.day <= 10 and context.portfolio.positions[security].closeable_amount == 0 :
        order_value(security, context.portfolio.available_cash*current_price/g.sumprice)
        #记录这次买入
        log.info("Buying %sw" % (security))
    #如果当前为5月或10月且日期大于15号,并且当前有该股票持仓,则卖出
    elif (today.month == 5 or today.month==10) and today.day >=10 and context.portfolio.positions[security].closeable_amount > 0:
        #全部卖出
        order_target(security,0)
        #记录这次卖出
        log.info("Selling %s" %(security))

全部回复

0/140

量化课程

    移动端课程