# encoding=utf-8 import pymysql from sqlalchemy import create_engine from my_config.log import MyLog logger = MyLog('database_api').logger class DatabaseApi: def __init__(self): pass @staticmethod def gen_db_conn(db_info): """ 建立数据库连接 :param db_info: 包含 ip, port, user, passwd, db_name 这些字段 :return: """ return pymysql.connect(host=db_info['ip'], port=db_info['port'], user=db_info['user'], passwd=db_info['passwd'], db=db_info['db_name'], charset='utf8') @staticmethod def gen_db_engine(db_info): """
# encoding=utf-8 import json import joblib import pandas as pd from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from data_source.Data_Sub import add_stk_index_to_df, Index from data_source.auth_info import jq_login from data_source.stk_data_class import StkData from my_config.GlobalSetting import root_path from my_config.log import MyLog from sdk.pic_plot.plot_opt_sub import add_axis from pylab import * logger = MyLog('rf_class').logger mpl.rcParams['font.sans-serif'] = ['SimHei'] matplotlib.rcParams['axes.unicode_minus'] = False """ 使用随机森林对stk进行预测 本文件存储“数据预处理”相关的类 """ class DataProForStudy(StkData): """ 为随机森林模型提供“数据预处理”的类 """ def __init__(self, stk_code, count=400, freq='1d', window=20): super().__init__(stk_code, freq=freq)
# encoding=utf-8 """ trade 时间判断 """ import datetime from data_source.futures_data import FuturesData from my_config.global_setting import root_path from sdk.pickle_save_sub import load_p from my_config.log import MyLog logger = MyLog('trade_timespan_judge').logger class TradeTimeSpanJudge: def __init__(self): self.trade_timespan = load_p(load_location=root_path + '/data_source/LocalData/local_data_save/', file_name='futures_trade_timespan') def futures_trade_timespan_judege(self, stk_code): # 获取时间段 kind = FuturesData.get_futures_kind(stk_code) t_s_f = list(filter(lambda x: x['kind'] == kind, self.trade_timespan)) if len(t_s_f) == 0: logger.debug('%s品种未能查询到td时段,默认不在td中!' % str(stk_code)) return False else: t_s = t_s_f[0]
# encoding=utf-8 """ bias相关的类 """ import logging import time from data_source.Data_Sub import get_k_data_jq from data_source.auth_info import jq_login from data_source.stk_data_class import StkData from my_config.log import MyLog from pylab import plt from sdk.MyTimeOPT import get_current_datetime_str import jqdatasdk as jq logger_eml = MyLog('bias_eml', console_level=logging.INFO).logger logger = MyLog('bias', file_level=logging.WARNING, console_level=logging.INFO).logger import json import os import numpy as np class Bias(StkData): def __init__(self, stk_code, freq, hist_count=2000, span_q=3, span_s=15, local_data_dir='./'): super().__init__(stk_code, freq)
# encoding=utf-8 import tensorflow as tf import tushare as ts import numpy as np import pandas as pd import os from pylab import plt from my_config.log import MyLog from research.lstm_predict.demo1.lstm_data_process import GenLstmTrainData logger_eml = MyLog('lstm_predict').logger """ """ class NewTf: def __init__(self): self.tf_model = None self.x_train = None self.y_train = None self.x_test = None self.y_test = None self.model_name = None self.save_dir = None self.model_save_url = None
import talib import tushare as ts import jqdatasdk as jq import numpy as np import pandas as pd import math import my_config.future_global_value as fgv from data_source.Data_Sub import get_k_data_jq, add_stk_index_to_df, Index from data_source.local_data.update_local_data import LocalData from sdk.DataPro import relative_rank from sdk.MyTimeOPT import get_current_date_str, get_current_datetime_str from data_source.auth_info import jq_login from my_config.log import MyLog logger = MyLog('stk_data').logger logger_eml = MyLog('stk_data_eml').logger class StkData: """ stk数据基础类,用来准备一些基本的数据 数据预处理所用函数皆在于此 """ def __init__(self, stk_code, freq='1d'): self.freq = freq # 用此参数请确保为分钟数据 self.freq_d = int(self.freq.replace('m', '').replace('d', '')) self.stk_code = stk_code
# encoding=utf-8 """ 仿真 """ import time from Server.futures.ctp.my_ctp_api.ctp_class_no_use import MyCtp from Server.futures.futures_account_info.account_info import ctp_login_info_sim from my_config.log import MyLog ml = MyLog('ctp_sim') logger = ml.logger if __name__ == '__main__': mctp = MyCtp(ctp_login_info=ctp_login_info_sim) mctp.login() while True: if mctp.ctp_spi.login_success: # mctp.req_order_field_insert( # instrument_id='m2009', # price=2700, # volume=1, # offset='0', # direction='b') # mctp.ctp_spi.login_success = False # 撤 # mctp.req_order_action(mctp.ctp_spi.ccl.cmd_dict[list(mctp.ctp_spi.ccl.cmd_dict.keys())[0]].cmd_id) # 查
# encoding=utf-8 """ 本脚本实现检测日志功能 原理: 监控文件修改情况,检测到有修改, 便直接将该文件邮件发送给指定联系人 """ import chardet from my_config.GlobalSetting import root_path from my_config.log import MyLog from sdk.auto_email.email_class import MyEmail logger = MyLog('file_monitor').logger import os import time class GetFileContext: def __init__(self, amount=1000): """ 检测到日志改动时,将最后指定数量的数据取出,放在邮件正文,方便查看 """ self.amount = amount @staticmethod def judge_file_code_format(f_url): with open(f_url, 'rb') as f: data = f.read()
# encoding=utf-8 """ bias相关的类 """ import time from data_source.Data_Sub import get_k_data_jq, get_rt_price from data_source.auth_info import jq_login from data_source.stk_data_class import StkData from my_config.log import MyLog from pylab import plt from sdk.MyTimeOPT import get_current_datetime_str logger_eml = MyLog('bias_eml').logger logger = MyLog('bias').logger import json import os import numpy as np class Bias(StkData): def __init__(self, stk_code, freq, hist_count=2000, span_q=3, span_s=15, local_data_dir='./'): super().__init__(stk_code, freq) self.hist_count = hist_count self.span_s = span_s
from email.header import decode_header from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.encoders import encode_base64 from email.parser import Parser from email.utils import parseaddr import time from my_config.GlobalSetting import root_path from my_config.log import MyLog from sdk.MyTimeOPT import get_current_datetime_str logger = MyLog('email_class').logger logger_eml = MyLog('email_class_eml').logger class MyEmail: def __init__(self, sender_info_json_url, modeng=False): self.sender_info_json_url = sender_info_json_url self.modeng = modeng self.sender = '' self.passwd = '' self.smtp_domain = '' # 'smtp.163.com' self.config_sender_info_by_json() def config_sender_info_by_json(self): """
import talib import tushare as ts import jqdatasdk as jq import numpy as np import pandas as pd import math from Server.futures.futures_sub import future_global_value as fgv from Server.futures.futures_sub.future_global_value import debug_date from data_source.Data_Sub import get_k_data_jq, add_stk_index_to_df, Index from data_source.LocalData.update_local_data import LocalData from sdk.DataPro import relative_rank from sdk.MyTimeOPT import get_current_date_str, add_date_str, get_current_datetime_str from data_source.auth_info import jq_login from my_config.log import MyLog logger = MyLog('stk_data', console_level=logging.INFO).logger logger_eml = MyLog('stk_data_eml').logger class StkData: """ stk数据基础类,用来准备一些基本的数据 数据预处理所用函数皆在于此 """ def __init__(self, stk_code, freq='1d'): self.freq = freq # 用此参数请确保为分钟数据 self.freq_d = int(self.freq.replace('m', '').replace('d', '')) self.stk_code = stk_code
# encoding=utf-8 """ 根据标准差来计算格子 """ import numpy as np import pandas as pd import copy from server.futures.futures_sub.future_global_value import debug_date from data_source.Data_Sub import get_k_data_jq from data_source.auth_info import jq_login from sdk.MyTimeOPT import add_date_str, get_current_date_str from data_source.stk_data_class import StkData from my_config.log import MyLog import logging logger_debug = MyLog('reseau_cal').logger logger_eml = MyLog('reseau_cal_eml', file_level=logging.DEBUG).logger """---------------------- 定义全局变量 ------------------------""" today_df_update_date = '' today_df = pd.DataFrame() class Reseau(StkData): """ 动态网格策略底层实现类 """ def __init__(self, stk_code): # 将一天用的网格信息记录下来, # 避免每次重复计算,实现一天只计算一次 super().__init__(stk_code) self.stk_code = stk_code def cal_rt_rsv(self):