blog-3123958139
# -*- coding: utf-8 -*-
\'\'\'加载模块\'\'\'
import sqlalchemy
import pandas
\'\'\'连接数据库\'\'\'
engine = sqlalchemy.create_engine(\'mssql+pyodbc://sa:123456@XiTongDSN\')
connection = engine.connect()
\'\'\'股票代码列表\'\'\'
codelist = pandas.read_sql(\'codelist\', engine)
\'\'\'给每个股票算涨幅\'\'\'
rise = []
for i in range(0, len(codelist) - 1):
    data = pandas.read_sql(codelist[\'code\'][i], engine)
    \'\'\'这个 a b 的 0 赋值不能省,由于有些股票会停牌,期间无数据会调用上个股票的 a 值,报错\'\'\'
    a = 0
    b = 0
    for j in range(0, len(data) - 1):
        \'\'\'由于数据库内的数据日期是由大到小排的,懒的调了,就这样也行\'\'\'
        if data[\'date\'][j] == \'2016-03-31\':
            a = data[\'close\'][j]
        if data[\'date\'][j] == \'2016-03-01\':
            b = data[\'close\'][j]
            if not (a == 0 or b == 0):
                c = (a - b) / b
                break
            else:
                c = 0
                break
    rise.append((codelist[\'code\'][i], c, \'2016-03-31\', \'2016-03-01\'))
\'\'\' list 转 dataframe \'\'\'
rise = pandas.DataFrame(rise)
\'\'\'修改列名\'\'\'
rise.columns = [\'code\', \'rise\', \'date_to\', \'date_from\']
\'\'\'按涨幅排序\'\'\'
rise = rise.sort_values(by = \'rise\', ascending = False)
\'\'\'写库\'\'\'
rise.to_sql(\'rise\', engine, if_exists = \'replace\', index = False)
print(\'ok\')

360截图20160527205806932

跟通达信股软的涨跌幅排名(相同条件,如不复权,日期一致等)比较了一下,有些出入,我换了普通计算器手工算了一下,还是跟通达信的有出入,真是不知道通达信的公式是什么

分类:

技术点:

相关文章:

  • 2021-08-18
  • 2021-07-17
  • 2021-11-09
  • 2022-02-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-07
  • 2022-12-23
  • 2022-12-23
  • 2022-01-06
  • 2021-07-18
  • 2022-12-23
  • 2021-05-06
相关资源
相似解决方案