繁簡切換您正在訪問的是FX168財經網,本網站所提供的內容及信息均遵守中華人民共和國香港特別行政區當地法律法規。

FX168财经网>人物频道>帖子

请教如何在回测时快速每分钟获取当前所有股票的价格

作者/adadsfd 2019-10-03 22:00 0 来源: FX168财经网人物频道

尝试每分钟用get_bars函数获取所有股票的当前价格,但是回测执行若干次之后就没反应了。

close_data = get_bars(g.stocks, fields=['date','open','high','low','close','volume'], unit='1m',  count=3,include_now=False)   print(close_data['000001.XSHE']['close'][-1]) 
就是上面这行代码。数据获取没几次就没反应了。
有什么方法能优化一下吗? 其实我的需求很简单,每分钟看一次所有股票的价格,然后再做进一步的决策。 



下面是我的代码:


# 导入函数库 
from jqdata import * 

# 初始化函数,设定基准等等 
def initialize(context): 
   # 设定沪深300作为基准 
   set_benchmark('000300.XSHG') 
   # 开启动态复权模式(真实价格) 
   set_option('use_real_price', True) 
   # 输出内容到日志 log.info() 
   log.info('初始函数开始运行且全局只运行一次') 
   # 过滤掉order系列API产生的比error级别低的log 
   # log.set_level('order', 'error') 

   ### 股票相关设定 ### 
   # 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱 
   set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock') 

   ## 运行函数(reference_security为运行时间的参考标的;传入的标的只做种类区分,因此传入'000300.XSHG'或'510300.XSHG'是一样的) 
     # 开盘前运行 
   run_daily(before_market_open, time='before_open', reference_security='000300.XSHG') 
     # 开盘时运行 
   run_daily(market_open, time='every_bar') 
     # 收盘后运行 
   #run_daily(after_market_close, time='after_close', reference_security='000300.XSHG') 

## 开盘前运行函数 
def before_market_open(context): 
   # 输出运行时间 
   log.info('函数运行时间(before_market_open):' str(context.current_dt.time())) 
   g.stocks = list(get_all_securities(types=['stock'], date=str(context.current_dt.date())).index) 
   g.last_close = [] 
   #print(g.stocks) 
   for stock in g.stocks: 
       close_data =  attribute_history(stock, 1, '1d', ['close']) 
       g.last_close.append( float(close_data['close'][0])) 


## 开盘时运行函数 
def market_open(context): 
   log.info('函数运行时间(market_open):' str(context.current_dt.time())) 
    
   security = g.stocks; 
     
   close_data = get_bars(g.stocks, fields=['date','open','high','low','close','volume'], unit='1m',  count=3,include_now=F
   print(close_data['000001.XSHE']['close'][-1])  #即使把这行注释掉,也只是多执行几次,并没有明显改善。


## 收盘后运行函数 

def after_market_close(context): 
   log.info(str('函数运行时间(after_market_close):' str(context.current_dt.time()))) 
   #得到当天所有成交记录 
   trades = get_trades() 
   for _trade in trades.values(): 
       log.info('成交记录:' str(_trade)) 
   log.info('一天结束') 
   log.info('##############################################################') 
 

分享到:
举报财经168客户端下载

全部回复

0/140

投稿 您想发表你的观点和看法?

更多人气分析师

  • 张亦巧

    人气2144文章4145粉丝45

    暂无个人简介信息

  • 梁孟梵

    人气2152文章3177粉丝39

    qq:2294906466 了解群指导添加微信mfmacd

  • 指导老师

    人气1856文章4423粉丝52

    暂无个人简介信息

  • 李冉晴

    人气2296文章3821粉丝34

    李冉晴,专业现贷实盘分析师。

  • 刘钥钥1

    人气2016文章3119粉丝34

    专业从事现货黄金、现货白银模似实盘操作分析指导

  • 张迎妤

    人气1896文章3305粉丝34

    个人专注于行情技术分析,消息面解读剖析,给予您第一时间方向...

  • 金泰铬J

    人气2320文章3925粉丝51

    投资问答解咨询金泰铬V/信tgtg67即可获取每日的实时资讯、行情...

  • 金算盘

    人气2696文章7761粉丝125

    高级分析师,混过名校,厮杀于股市和期货、证券市场多年,专注...

  • 金帝财神

    人气4728文章8329粉丝118

    本文由资深分析师金帝财神微信:934295330,指导黄金,白银,...