以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  新人求助,,,,python代码!  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=184741)

--  作者:tan901002
--  发布时间:2021/3/16 22:59:40
--  新人求助,,,,python代码!
close1 = history_bars_date(index_num,begin_date,end_date,\'1d\',\'close\')  # 把股票代码传到这个函数中得到区间每天的收盘价
num1 = ( round(close1[-1],2) - round(close1[0],2) )/round(close1[0],2) * 100  #    大盘的涨跌幅
index_num = round(num1,2)

name_num = get_blocks(\'上海A股\',0) #求个股股票代码
for i in name_num: #遍历自选股中的每个股的股票代码
    
    close = history_bars_date(i,begin_date,begin_date,\'1d\',\'close\')  #把股票代码传到这个函数中得到区间每天的收盘价
    close1 = history_bars_date(i,end_date,end_date,\'1d\',\'close\')
    num = ((round(close1[0],2) - round(close[0],2))/ round(close[0],2)) * 100#
    if num > index_num:
        print(i)
    else:
        pass


我用自选股做测试能得到结果,但是用上海A股测试就报错了~

> 开始编译 <jzt_MyPython5> ......

> 编译错误 : IndexError
>     line : 14
> 错误信息 : index -1 is out of bounds for axis 0 with size 0



是哪里出了问题呢?感谢老大帮忙~~~~


--  作者:tan901002
--  发布时间:2021/3/16 23:00:18
--  
begin_date = \'20210729\' #计算的时间周期
end_date = \'20210826\'
name_num = get_blocks(\'自选股\',1)
index_num = \'sh000001\'

#求指数涨跌幅 

#计算指数区间的涨跌幅函数
close1 = history_bars_date(index_num,begin_date,end_date,\'1d\',\'close\')  # 把股票代码传到这个函数中得到区间每天的收盘价
num1 = ( round(close1[-1],2) - round(close1[0],2) )/round(close1[0],2) * 100  #    大盘的涨跌幅
index_num = round(num1,2)

name_num = get_blocks(\'上海A股\',0) #求个股股票代码
for i in name_num: #遍历自选股中的每个股的股票代码
    
    close = history_bars_date(i,begin_date,begin_date,\'1d\',\'close\')  #把股票代码传到这个函数中得到区间每天的收盘价
    close1 = history_bars_date(i,end_date,end_date,\'1d\',\'close\')
    num = ((round(close1[0],2) - round(close[0],2))/ round(close[0],2)) * 100#
    if num > index_num:
        print(i)
    else:
        pass

--  作者:tan901002
--  发布时间:2021/3/16 23:05:38
--  
我补一下全部代码,求解决~~~谢谢~
错误信息 : index -1 is out of bounds for axis 0 with size 0
我主要是想问一下,怎么解决这个报错呢?

--  作者:tan901002
--  发布时间:2021/3/16 23:15:41
--  
# 该Python代码用于模块定义,供其他Python代码或VBA调用。

from PythonApi import *

begin_date = \'20210729\' #计算的时间周期
end_date = \'20210826\'
index_num = \'sh000001\'
name_num = get_blocks(\'自选股\',1)
#求指数涨跌幅 
index_close = history_bars_date(index_num,begin_date,end_date,\'1d\',\'close\')  # 把股票代码传到这个函数中得到区间每天的收盘价
num1 = (round(index_close[-1],2) - round(index_close[0],2))/ round(index_close[0],2) * 100 #    大盘的涨跌幅
index_num1 = round(num1,2)
for i in name_num: #遍历自选股中的每个股的股票代码
    close_star = history_bars_date(i,begin_date,begin_date,\'1d\',\'close\')  #把股票代码传到这个函数中得到区间每天的收盘价
    close_end = history_bars_date(i,end_date,end_date,\'1d\',\'close\')
    num = ((round(close_end[0],2) - round(close_star[0],2))/ round(close_star[0],2)) * 100#
    if num > index_num:
        print(i)
    else:
        pass

    





    
    > 开始编译 <jzt_MyPython5> ......

> 编译错误 : IndexError
>     line : 11
> 错误信息 : index -1 is out of bounds for axis 0 with size 0



我改了错误的地方,还是报错~~~~~~

--  作者:tan901002
--  发布时间:2021/3/16 23:37:13
--  
# 该Python代码用于模块定义,供其他Python代码或VBA调用。

from PythonApi import *

begin_date = \'20210129\' #计算的时间周期
end_date = \'20210226\'
index_num = \'sh000001\'
name_num = get_blocks(\'上海A股\',0)
#求指数涨跌幅 
index_close = history_bars_date(index_num,begin_date,end_date,\'1d\',\'close\')  # 把股票代码传到这个函数中得到区间每天的收盘价
num1 = (round(index_close[-1],2) - round(index_close[0],2))/ round(index_close[0],2) * 100 #    大盘的涨跌幅
index_num1 = round(num1,2)
for i in name_num: #遍历自选股中的每个股的股票代码
    close_star = history_bars_date(i,begin_date,begin_date,\'1d\',\'close\')  #把股票代码传到这个函数中得到区间每天的收盘价
    close_end = history_bars_date(i,end_date,end_date,\'1d\',\'close\')
    num = (round(close_end[0],2) - round(close_star[0],2))/ round(close_star[0],2) * 100#
if num > index_num1:
    print(i)
else:
    pass






我试了,还是报错~~~~


>     line : 16
> 错误信息 : index 0 is out of bounds for axis 0 with size 0



求大神帮助!!!!

--  作者:yukizzc
--  发布时间:2021/3/17 11:03:41
--  

from PythonApi import *


begin_date = \'20210129\' #计算的时间周期
end_date = \'20210226\'
index_num = \'sh000001\'
name_num = get_blocks(\'上海A股\',0)
#求指数涨跌幅
index_close = history_bars_date(index_num,begin_date,end_date,\'1d\',\'close\')  # 把股票代码传到这个函数中得到区间每天的收盘价
num1 = (round(index_close[-1],2) - round(index_close[0],2))/ round(index_close[0],2) * 100 #    大盘的涨跌幅
index_num1 = round(num1,2)
for i in name_num: #遍历自选股中的每个股的股票代码
    close_star = history_bars_date(i,begin_date,begin_date,\'1d\',\'close\')  #把股票代码传到这个函数中得到区间每天的收盘价
    close_end = history_bars_date(i,end_date,end_date,\'1d\',\'close\')
    print(close_star)
    num = (round(close_end[0],2) - round(close_star[0],2))/ round(close_star[0],2) * 100#
if num > index_num1:
    print(i)
else:
    pass

 

 

 

你自己在出错代码前面加print输出看数据不就清楚了吗,数据是[]你本地没有数据要补充下

建议用户一定要有一定调试能力,这种报错就是数组越界等


--  作者:tan901002
--  发布时间:2021/3/17 17:10:49
--  
好的,谢谢谢谢~我也是新手,请多包涵~~~