Пример #1
0
def query_rt_wbottom():
    print('in query_rt_wbottom')
    myconf = conf.CConf(str_conf_path)
    myconf.ReadConf()

    db = dbmgr.CDBMgr(myconf.db_host, myconf.db_username, myconf.db_pwd, 'kdata')
    db.connect_db()

    today = GetToday()

    list_ret = db.query_today_rt_strategy(today)

    db.disconnect_db()

    if list_ret is None:
        list_ret=('代码','探测时间')

    ################## 分页 ######################
    req_page = request.args.get("page", 1)
    print('query_chipconcent ... req_page=', req_page)
    pager_obj = Pagination(req_page, len(list_ret), request.path, request.args, per_page_count=20)
    print(request.args)
    #根据分页的参数,截取部分数据显示
    args_ret = list_ret[pager_obj.start:pager_obj.end]
    str_html = pager_obj.page_html()
    print(str_html)
    return render_template('query_realtime_wbottom.html', rt_value=args_ret, html=str_html)
    def __init__(self, str_conf_path, log):
        self.log = log
        # 只处理数据,否则更新实时数据到数据库
        self.just_process = False
        #更新一部分最新的k线数据;否则全部更新
        self.b_updata_part = False

        # 测试获取多少只股票
        self.stockCnt = 3651
        # 从第几支股票开始
        self.stockStart = 0
        self.conf = conf.CConf(str_conf_path)
        self.work_path = os.getcwd()
        # 每次取200只,休眠x秒
        #self.waitTime = 65

        try:
            self.db = dbmgr.CDBMgr(self.conf.db_host, self.conf.db_username,
                                   self.conf.db_pwd, 'kdata')
            self.re = redis.Redis(host='127.0.0.1', port=6379, db=0)
        except Exception as e:
            print(e)
            log_h = os.path.basename(__file__) + ":" + __name__ + ":" + str(
                sys._getframe().f_lineno) + ":  "
            self.log.error(log_h + str(e))

        self.init()
Пример #3
0
    def __init__(self, str_conf_path, log):
        self.log = log
        #self.name = self.__class__.__name__
        #获取排行榜中多少条热点概念
        myconf = conf.CConf(str_conf_path)
        myconf.ReadConf()
        #redis key值
        self.key_start_day = 'key_w_start_day'
        self.key_end_day = 'key_w_end_day'
        self.key_stock_basic = 'key_stock_basic'
        self.key_today = 'key_today'
        self.cur_open = 0
        self.cur_close = 0
        self.cur_high = 0
        self.cur_low = 0
        self.db = None
        self.re = None

        try:
            self.db = dbmgr.CDBMgr(myconf.db_host, myconf.db_username, myconf.db_pwd, 'kdata')
            self.re = redis.Redis(host='127.0.0.1', port=6379, db=0)
        except Exception as e:
            print(e)
            log_h = os.path.basename(__file__) + ":" + __name__ + ":" + str(sys._getframe().f_lineno) + ":  "
            self.log.error(log_h+str(e))

        self.wbottom = wbottom.CWBotton(self.db, self.log)
    def __init__(self, str_conf_path, log):
        #配置文件
        self.myconf = conf.CConf(str_conf_path)
        self.myconf.ReadConf()

        self.log = log

        self.scheduler = myScheduler()
        self.rt_hotspot = rt_hotspot.CRT_Hotspot(str_conf_path, log)
        self.rt_quotes = rt_quotes.CRT_Quotes(str_conf_path, log)
        self.dataservice = dataservice.CDataServiceMysql(str_conf_path, log)
        self.rt_chipconcent = rt_chipconcent.CRT_ChipConcent(
            str_conf_path, log)
        self.setting = setting.CSetting(str_conf_path, log)
        self.rt_wbottom = rt_wbottom.CRT_WBottom(str_conf_path, log)
        self.rt_hottrace = rt_hottrace.CRT_HotTrace(str_conf_path, log)
        self.re = None

        try:
            self.re = redis.Redis(host='127.0.0.1', port=6379, db=0)
        except Exception as e:
            print(e)
            log_h = os.path.basename(__file__) + ":" + __name__ + ":" + str(
                sys._getframe().f_lineno) + ":  "
            self.log.error(log_h + str(e))

        #设置系统参数
        self.setting.set_config()
Пример #5
0
def query_chipconcent():
    print('in query_chipconcent')
    myconf = conf.CConf(str_conf_path)
    myconf.ReadConf()
    db = dbmgr.CDBMgr(myconf.db_host, myconf.db_username, myconf.db_pwd, 'kdata')
    db.connect_db()

    #当天日期
    now_time = datetime.datetime.now()
    today = now_time.strftime('%Y-%m-%d')
    #today = '2019-08-16'

    list_ret = db.query_chipconcent(today)
    db.disconnect_db()
    if list_ret is None:
        list_ret=('代码','名称','间隔','time','day','num')

    ################## 分页 ######################
    req_page = request.args.get("page", 1)
    print('query_chipconcent ... req_page=', req_page)
    pager_obj = Pagination(req_page, len(list_ret), request.path, request.args, per_page_count=20)
    print(request.args)
    #根据分页的参数,截取部分数据显示
    args_ret = list_ret[pager_obj.start:pager_obj.end]
    str_html = pager_obj.page_html()
    print(str_html)
    return render_template('query_chipconcent.html', rt_value=args_ret, html=str_html)
Пример #6
0
 def __init__(self, str_conf_path, log):
     self.log = log
     #self.name = self.__class__.__name__
     myconf = conf.CConf(str_conf_path)
     myconf.ReadConf()
     self.db = dbmgr.CDBMgr(myconf.db_host, myconf.db_username,
                            myconf.db_pwd, 'kdata')
     print('CRT_Hotspot ... ', self.db)
Пример #7
0
 def __init__(self, str_conf_path, log):
     self.log = log
     self.db = None
     self.myconf = conf.CConf(str_conf_path)
     self.myconf.ReadConf()
     try:
         self.db = dbmgr.CDBMgr(self.myconf.db_host,
                                self.myconf.db_username, self.myconf.db_pwd,
                                'kdata')
         self.db.connect_db()
     except Exception as e:
         print(e)
         log_h = os.path.basename(__file__) + ":" + __name__ + ":" + str(
             sys._getframe().f_lineno) + ":  "
         self.log.error(log_h + str(e))
Пример #8
0
def statistics():
    ##############################################################################################
    # 配置文件路径
    cur_path = os.getcwd()
    print(cur_path)
    str_conf_path = cur_path + '/../../conf/conf.ini'

    # 日志唯一
    g_conf = conf.CConf(str_conf_path)
    filename_time = datetime.datetime.strftime(datetime.datetime.now(),
                                               '%Y%m%d_%H%M%S')
    log_filename = cur_path + '/../../' + g_conf.log_dir + '/backtest_' + filename_time + '.log'
    log = tools.CLogger(g_conf.app_name, log_filename, 1).getLogger()
    ##############################################################################################

    backtest = CBackTestBycode(str_conf_path, log)
    backtest.strategy.statistics()
def main():
    # 配置文件路径
    cur_path = os.getcwd()
    print(cur_path)
    str_conf_path = cur_path + '/../../conf/conf.ini'

    # 日志唯一
    g_conf = conf.CConf(str_conf_path)
    filename_time = datetime.datetime.strftime(datetime.datetime.now(),
                                               '%Y%m%d_%H%M%S')
    log_filename = cur_path + '/' + g_conf.log_dir + '/../../tide_system_' + filename_time + '.log'
    g_log = tools.CLogger(g_conf.app_name, log_filename, 1).getLogger()

    dataservice = CDataServiceMysql(str_conf_path, g_log)
    dataservice.aps_dataservice_update()
    # 更新的起始时间
    '''str_start_day = '20171201'
Пример #10
0
    def __init__(self, str_conf_path, log):
        self.log = log
        #获取排行榜中多少条热点概念
        self.top_ChipC_num = 20
        self.conf = conf.CConf(str_conf_path)
        self.conf.ReadConf()
        self.db = None
        self.re = None

        try:
            self.db = dbmgr.CDBMgr(self.conf.db_host, self.conf.db_username,
                                   self.conf.db_pwd, 'kdata')
            self.re = redis.Redis(host='127.0.0.1', port=6379, db=0)
        except Exception as e:
            print(e)
            log_h = os.path.basename(__file__) + ":" + __name__ + ":" + str(
                sys._getframe().f_lineno) + ":  "
            self.log.error(log_h + e)
Пример #11
0
def query_bt_w():
    print('in query_bt_w')
    myconf = conf.CConf(str_conf_path)
    myconf.ReadConf()
    db = dbmgr.CDBMgr(myconf.db_host, myconf.db_username, myconf.db_pwd, 'kdata')
    db.connect_db()

    list_ret = db.query_rangebacktest_wbottom('20190101', GetToday())
    db.disconnect_db()
    ################## 分页 ######################
    req_page = request.args.get("page", 1)
    print('query_bt_w ... req_page=', req_page)
    pager_obj = Pagination(req_page, len(list_ret), request.path, request.args, per_page_count=20)
    print(request.args)
    #根据分页的参数,截取部分数据显示
    args_ret = list_ret[pager_obj.start:pager_obj.end]
    str_html = pager_obj.page_html()
    print(str_html)
    return render_template('query_backtest_wbotton.html', wb_value=args_ret, html=str_html)
Пример #12
0
def config():
    print('in config')
    myconf = conf.CConf(str_conf_path)
    myconf.ReadConf()

    #起始日期
    start_year = myconf.s_bt_startday[0:4]
    start_mouth = myconf.s_bt_startday[4:6]
    start_day = myconf.s_bt_startday[6:8]
    start = start_year+'-'+start_mouth+'-'+start_day
    print('start:'+start)
    #终止日期
    end_year = myconf.s_bt_endday[0:4]
    end_mouth = myconf.s_bt_endday[4:6]
    end_day = myconf.s_bt_endday[6:8]
    end = end_year+'-'+end_mouth+'-'+end_day
    print('end:' + end)

    return render_template('conf.html')
Пример #13
0
    def __init__(self, str_conf_path, log):
        #cur_time = datetime.datetime.now()
        #log_filename = datetime.datetime.strftime(cur_time, '%Y%m%d_%H%M%S')
        #self.log_name = 'log/limitconcept'+log_filename
        self.conf = conf.CConf(str_conf_path)
        self.log = log
        self.db = None
        self.re = None

        try:
            self.db = dbmgr.CDBMgr(self.conf.db_host, self.conf.db_username,
                                   self.conf.db_pwd, 'kdata')
            self.re = redis.Redis(host='127.0.0.1', port=6379, db=0)
        except Exception as e:
            print(e)
            log_h = os.path.basename(__file__) + ":" + __name__ + ":" + str(
                sys._getframe().f_lineno) + ":  "
            self.log.error(log_h + e)

        self.__Init()
Пример #14
0
def process(process_cnt, cur_idx):
    print(cur_idx)
    ##############################################################################################
    # 配置文件路径
    cur_path = os.getcwd()
    print(cur_path)
    str_conf_path = cur_path + '/../../conf/conf.ini'

    # 日志唯一
    g_conf = conf.CConf(str_conf_path)
    filename_time = datetime.datetime.strftime(datetime.datetime.now(),
                                               '%Y%m%d_%H%M%S')
    log_filename = cur_path + '/../../' + g_conf.log_dir + '/backtest_' + filename_time + '.log'
    log = tools.CLogger(g_conf.app_name, log_filename, 1).getLogger()
    ##############################################################################################

    backtest = CBackTestBycode(str_conf_path, log)
    #回测时间范围:起始日期到最近一个交易日
    start_day = '20180101'
    backtest.process(start_day, process_cnt, cur_idx)
Пример #15
0
    def __init__(self, str_conf_path, log):
        #self.name = self.__class__.__name__
        #获取排行榜中多少条热点概念
        self.top_consept_num = 20
        self.top_trade_num = 20
        myconf = conf.CConf(str_conf_path)
        myconf.ReadConf()
        self.log = log
        self.db = None
        self.re = None
        self.pBaseInfo = baseinfo.CBaseinfo()

        try:
            self.db = dbmgr.CDBMgr(myconf.db_host, myconf.db_username,
                                   myconf.db_pwd, 'kdata')
            self.re = redis.Redis(host='127.0.0.1', port=6379, db=0)
            self.pBaseInfo.read_excel()
        except Exception as e:
            print(e)
            log_h = os.path.basename(__file__) + ":" + __name__ + ":" + str(
                sys._getframe().f_lineno) + ":  "
            self.log.error(log_h + str(e))
Пример #16
0
def query_rt_hottrade():
    print('in query_rt_hottrade')
    myconf = conf.CConf(str_conf_path)
    myconf.ReadConf()
    db = dbmgr.CDBMgr(myconf.db_host, myconf.db_username, myconf.db_pwd, 'kdata')
    db.connect_db()

    list_ret = db.query_allhottrade()
    db.disconnect_db()
    if list_ret is None:
        list_ret=('行业','0','000')

    ################## 分页 ######################
    req_page = request.args.get("page", 1)
    print('query_rt_hottrade ... req_page=', req_page)
    pager_obj = Pagination(req_page, len(list_ret), request.path, request.args, per_page_count=20)
    print(request.args)
    #根据分页的参数,截取部分数据显示
    args_ret = list_ret[pager_obj.start:pager_obj.end]
    str_html = pager_obj.page_html()
    print(str_html)
    return render_template('query_realtime_hottrade.html', rt_value=args_ret, html=str_html)
Пример #17
0
def GetDB():
    myconf = conf.CConf(str_conf_path)
    myconf.ReadConf()
    db = dbmgr.CDBMgr(myconf.db_host, myconf.db_username, myconf.db_pwd, 'kdata')
    db.connect_db()
    return db
Пример #18
0
import os
import redis
import pickle

#任务调度,阻塞
#from flask_apscheduler import APScheduler as myScheduler
#from apscheduler.schedulers.background import BackgroundScheduler as myScheduler

app = Flask(__name__)
#配置文件路径
cur_path = os.getcwd()
print(cur_path)
str_conf_path = cur_path + '/conf/conf.ini'

#日志唯一
g_conf = conf.CConf(str_conf_path)
filename_time = datetime.datetime.strftime(datetime.datetime.now(), '%Y%m%d_%H%M%S')
log_filename = cur_path+'/'+g_conf.log_dir+'/tide_system_'+filename_time+'.log'
g_log = tools.CLogger(g_conf.app_name, log_filename, 1).getLogger()

#任务调度
schedulermgr = schedulermgr.CSchedulerMgr(str_conf_path, g_log)
schedulermgr.start()

def GetDB():
    myconf = conf.CConf(str_conf_path)
    myconf.ReadConf()
    db = dbmgr.CDBMgr(myconf.db_host, myconf.db_username, myconf.db_pwd, 'kdata')
    db.connect_db()
    return db
Пример #19
0
def query_rt_hotconspt_one(conspt):
    print('query_rt_hotconspt_one...', conspt)
    #数据
    myconf = conf.CConf(str_conf_path)
    myconf.ReadConf()
    db = dbmgr.CDBMgr(myconf.db_host, myconf.db_username, myconf.db_pwd, 'kdata')
    db.connect_db()

    trade_day = db.query_last_tradeday(10)
    #trade_day = pd.DataFrame(list(result), columns=['trade_day'])

    # 加载股票概念
    pBaseInfo = baseinfo.CBaseinfo()
    pBaseInfo.read_excel()

    #conspt_df = pd.DataFrame(columns=['date', 'count'])
    list_date = list()
    list_count = list()
    for day in trade_day:
        codes = db.query_limit(day[0])
        print('limit num=', len(codes))

        count = 0
        #遍历所有code
        for code in codes:
            #去除.SZ .SH的后缀
            str_code = code[0][0:6]
            my_stock_info = pBaseInfo.get_stock_info(str_code)
            if my_stock_info is None:
                print(code, ' is not exist!aps_hotspot')
                continue

            consepts = my_stock_info.get_conseption()
            #查询的概念是否在list中
            if conspt in consepts:
                count = count + 1

        list_date.append(day[0])
        list_count.append(count)
        print(day[0])

    '''
    list_date = ['20190813', '20190814', '20190815', '20190816', '20190819']
    list_count = [8, 8, 6, 11, 19]

    d = {'date': list_date,
         'count': list_count}
    conspt_df = pd.DataFrame(d)
    print(conspt_df)'''

    db.disconnect_db()
    #############################################绘图
    #中文乱码问题
    #myfont = FontProperties(fname=r'/smb/share/hdf5test/venv/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/simhei.ttf')
    #mpl.rcParams['font.sans-serif'] = ['SimHei']
    mpl.rcParams['font.sans-serif'] = ['simhei']
    mpl.rcParams['font.family'] = 'sans-serif'
    mpl.rcParams['axes.unicode_minus'] = False

    # 生成figure对象,相当于准备一个画板
    fig = plt.figure(figsize=(8, 3))

    # 生成axis对象,相当于在画板上准备一张白纸,111,11表示只有一个表格,第3个1,表示在第1个表格上画图
    ax = fig.add_subplot(111)
    plt.title(conspt)
    plt.xlabel(u'交易日')
    plt.ylabel(u'涨停数量')

    #将字符串的日期,转换成日期对象
    xs = [datetime.datetime.strptime(d, '%Y%m%d').date() for d in list_date]

    #日期对象作为参数设置到横坐标,并且使用list_date中的字符串日志作为对象的标签(别名)
    #x坐标的刻度值
    ar_xticks = np.arange(1, len(list_date)+1, step=1)
    plt.xticks(ar_xticks, list_date, rotation=45, fontsize=10)
    plt.yticks(np.arange(0, 30, step=2), fontsize=10)
    ax.plot(ar_xticks, list_count, color='r')

    #下方图片显示不完整的问题
    plt.tight_layout()

    #在点阵上方标明数值
    for x, y in zip(ar_xticks, list_count):
        plt.text(x, y + 0.3, str(y), ha='center', va='bottom', fontsize=10)

    #fmt = mdates.DateFormatter('%Y%m%D')
    #xs = [datetime.datetime.strptime(d, '%Y%m%d').date() for d in conspt_df['date']]
    #plt.plot(xs, conspt_df['count'], 'o-')

    #plt.savefig('ttt.png')
    # figure 保存为二进制文件
    buffer = BytesIO()
    plt.savefig(buffer)
    plot_data = buffer.getvalue()
    # 将matplotlib图片转换为HTML
    imb = base64.b64encode(plot_data)  # 对plot_data进行编码
    ims = imb.decode()
    imd = "data:image/png;base64," + ims
    return render_template('query_realtime_hotconspt_one.html', img=imd)