choice深股通十大活跃成交股报表

使用python对接choice接口,将深股通十大活跃成交股报表数据导入数据库

使用choice命令生成

# 2020-07-06 15:14:31
# 该表根据汇总表,分别展示交易日期区间内的每日深股通十大活跃成交股(通过深股通买卖成交金额最大) 参数: 交易日期 统计周期 字段: 交易日期 排名 代码 名称 收盘价格(元) 涨跌幅(%) 买入金额(万元) 卖出金额(万元) 深股通成交金额(万元) 股票成交金额(万元) 深股通成交占比(%) 总市值(亿元) 累计上榜次数 币种 证监会行业(2012) 东财行业
data=c.ctr("ActiveStockTOP10SZInfo","TRADEDATE,DEC_RANK,MSECUCODE,SECURITYSHORTNAME,NEW,CHG,BMONEY,SMONEY,TVAL,ZTVAL,BILI,ZSZ,CNT,CURRENCY,STR_PUBLISHNAMEZJH,STR_PUBLISHNAMEDC3","TradeDate=2018-12-31,period=1")

完整代码

#choice 深股通十大股东报表
from EmQuantAPI import *
from datetime import *
from datetime import timedelta, datetime
import traceback
import pymysql
import json
import time
import tushare as ts
import pandas as pd
import numpy as np

def mainCallback(quantdata):
    """
    mainCallback 是主回调函数,可捕捉如下错误
    在start函数第三个参数位传入,该函数只有一个为c.EmQuantData类型的参数quantdata
    :param quantdata:c.EmQuantData
    :return:
    """
    print("mainCallback", str(quantdata))
    # 登录掉线或者 登陆数达到上线(即登录被踢下线) 这时所有的服务都会停止
    if str(quantdata.ErrorCode) == "10001011" or str(quantdata.ErrorCode) == "10001009":
        print("Your account is disconnect. You can force login automatically here if you need.")
    # 行情登录验证失败(每次连接行情服务器时需要登录验证)或者行情流量验证失败时,会取消所有订阅,用户需根据具体情况处理
    elif str(quantdata.ErrorCode) == "10001021" or str(quantdata.ErrorCode) == "10001022":
        print("Your all csq subscribe have stopped.")
    # 行情服务器断线自动重连连续6次失败(1分钟左右)不过重连尝试还会继续进行直到成功为止,遇到这种情况需要确认两边的网络状况
    elif str(quantdata.ErrorCode) == "10002009":
        print("Your all csq subscribe have stopped.")
    else:
        pass


def startCallback(message):
    print("[EmQuantAPI Python]", message)
    return 1


def csqCallback(quantdata):
    """
    csqCallback 是EM_CSQ订阅时提供的回调函数模板。该函数只有一个为c.EmQuantData类型的参数quantdata
    :param quantdata:c.EmQuantData
    :return:
    """
    print("csqCallback,", str(quantdata))


def cstCallBack(quantdata):
    for i in range(0, len(quantdata.Codes)):
        length = len(quantdata.Dates)
        for it in quantdata.Data.keys():
            print(it)
            for k in range(0, length):
                for j in range(0, len(quantdata.Indicators)):
                    print(quantdata.Data[it][j * length + k], " ", end="")
                print()


loginResult = c.start("ForceLogin=1", '', mainCallback)
if (loginResult.ErrorCode != 0):
    print("login in fail")
    exit()


pro = ts.pro_api()


db = pymysql.connect(host='192.168.0.147', port=3306, user='root', password='123', db='test')
cursor = db.cursor()


data = c.ctr("ActiveStockTOP10SHInfo","TRADEDATE,DEC_RANK,MSECUCODE,SECURITYSHORTNAME,NEW,CHG,BMONEY,SMONEY,TVAL,ZTVAL,BILI,ZSZ,CNT,CURRENCY,STR_PUBLISHNAMEZJH,STR_PUBLISHNAMEDC3",
             "TradeDate=2020-6-15,period=2")
data_dic = data.Data
for k, v in data_dic.items():
    print(v)
    try:
        sql = 'insert into ActiveStockTOP10SH (tradedate,dec_rank,msecucode,securityshortname,new,chg,bmoney,smoney,tval,ztval,bili,zsz,cnt,currency,str_publishnamzjh,str_publishnamedc3) ' \
              'values ("{}","{}","{}","{}","{}","{}","{}","{}","{}","{}","{}","{}","{}","{}","{}","{}")'.format(v[0], v[1], v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9],v[10],v[11],v[12],v[13],v[14],v[14])
        cursor.execute(sql)
        db.commit()
        print('上传完成')
    except:
        db.rollback()
        print('上传失败')
    print('深股通十大活跃成交股报表上传完成---------------------------')
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

友情链接更多精彩内容