从零学习量化交易56TopQuant函数库11zsyspy

zsys.py

# -*- coding: utf-8 -*- 
'''
TopQuant-简称TQ极宽智能量化回溯分析系统,培训课件-配套教学python程序

Top极宽量化(原zw量化),Python量化第一品牌 
by Top极宽·量化开源团队 2017.10.1 首发

  
  
文件名:z_sys.py
默认缩写:import zsys as zsys
简介:Top极宽量化·常用量化系统参数模块
 

'''
#

import sys,os,re
import arrow,bs4,random
import numexpr as ne  
#
import cpuinfo as cpu
import psutil as psu
from functools import wraps
#
import numpy as np
import pandas as pd
import tushare as ts
#import talib as ta

import matplotlib as mpl
import matplotlib.colors
from matplotlib import cm
from matplotlib import pyplot as plt

from concurrent.futures import ProcessPoolExecutor
from concurrent.futures import ThreadPoolExecutor
from concurrent.futures import as_completed
#import multiprocessing
#

#


#

#import zpd_talib as zta

#-------------------
#----glbal var,const
__version__='2016.M10'

#------sys.war
cpu_num_core=8
cpu_num9=8
cpu_num=cpu_num9-1

tim0_sys=None
tim0_str=''

fn_time_nloop=5
fn_time_nloop5=500

#-----global.flag
web_get001txtFg=False  # @zt_web.web_get001txtFg

#-----bs4.findall
bs_get_ktag_kstr=''


#--colors
#10,prism,brg,dark2,hsv,jet
#10,,hot,Vega10,Vega20
cors_brg=cm.brg(np.linspace(0,1,10))
cors_hot=cm.hot(np.linspace(0,1,10))
cors_hsv=cm.hsv(np.linspace(0,1,10))
cors_jet=cm.jet(np.linspace(0,1,10))
cors_prism=cm.prism(np.linspace(0,1,10))
cors_Dark2=cm.Dark2(np.linspace(0,1,10))
#cors_Vega10=cm.Vega10(np.linspace(0,1,10))
#cors_Vega20=cm.Vega20(np.linspace(0,1,10))

#------str.xxx
sgnSP4='    '
sgnSP8=sgnSP4+sgnSP4

#-----FN.xxx
logFN=''

#--------------dir
raiLib='/aiLib/'
r_TDS=raiLib+'TDS/'
#-------------------
#---zDat.....
#
rdat0='/zDat/'
rdatCN0=rdat0+"cn/"
rdatCN=rdat0+"cn/day/"
rdatCNX=rdat0+"cn/xday/"
rdatInx=rdat0+"inx/"
rdatMin0=rdat0+"min/"
rdatTick=rdat0+"tick/"
rdatReal=rdat0+"real/"


#
#
#ohlc=['open','high','low','close']
#ohlc_date=['date']+ohlc
#
#---qxLib.xxxx
ohlcLst=['open','high','low','close']
ohlcVLst=ohlcLst+['volume']
ohlcVALst=ohlcLst+['volume','avg']
ohlcALst=ohlcLst+['avg']
ohlcDALst=ohlcLst+['avg','dprice']
#
ohlcDLst=['date']+ohlcLst
ohlcDVLst=['date']+ohlcLst+['volume']
ohlcExtLst=ohlcDLst+['volume','adj close']
#
ohlcTLst=['tim']+ohlcLst
ohlcTVLst=['tim']+ohlcLst+['volume']
#
#ohlcXTLst=['tim','xtim','xtimstamp']+ohlcLst
#ohlcXTVLst=['tim','xtim','xtimstamp']+ohlcLst+['volume']
ohlcXLst=['xstamp']+ohlcLst+['volume']
ohlcXTLst=['tim','utim','xstamp']+ohlcLst
ohlcXTVLst=['tim','utim','xstamp']+ohlcLst+['volume']
#
#xavg9Lst=['xavg1','xavg2','xavg3','xavg4','xavg5','xavg6','xavg7','xavg8','xavg9']
#xavg5Lst=['xavg1','xavg2','xavg3','xavg4','xavg5']
# 
#xhigh9Lst=['xhigh1','xhigh2','xhigh3','xhigh4','xhigh5','xhigh6','xhigh7','xhigh8','xhigh9']
#xhigh5Lst=['xhigh1','xhigh2','xhigh3','xhigh4','xhigh5']
# 
ma100Lst_var=[2,3,5,10,15,20,25,30,50,100]
ma100Lst=['ma_2','ma_3','ma_5','ma_10','ma_15','ma_20','ma_25','ma_30','ma_50','ma_100']
ma200Lst_var=[2,3,5,10,15,20,25,30,50,100,150,200]
#ma200Lst=['ma_2', 'ma_3', 'ma_5', 'ma_10', 'ma_15', 'ma_20','ma_25', 'ma_30', 'ma_50', 'ma_100', 'ma_150', 'ma_200']
ma200Lst=['ma_2', 'ma_3', 'ma_5', 'ma_10', 'ma_15', 'ma_20','ma_30', 'ma_50', 'ma_100', 'ma_150', 'ma_200']
#
ma030Lst_var=[2,3,5,10,15,20,25,30]
ma030Lst=['ma_2', 'ma_3', 'ma_5', 'ma_10', 'ma_15', 'ma_20', 'ma_25', 'ma_30']
#
priceLst=['price', 'price_next', 'price_change']
#
dateLst=['xyear','xmonth','xday','xday_week','xday_year','xweek_year']
timeLst=dateLst+['xhour','xminute']
#
TDS_xlst1=ohlcVALst
TDS_xlst2=ohlcVALst+ma100Lst
TDS_xlst9=TDS_xlst2+dateLst
#
#  keras.fun-lst.xxx
k_init_lst=['glorot_uniform','random_uniform','Zeros','Ones','Ones','RandomNormal','RandomUniform','TruncatedNormal','VarianceScaling','Orthogonal','Identiy','lecun_uniform','lecun_normal','glorot_normal','glorot_uniform','he_normal','he_uniform']
f_act_lst=[None,'elu','selu','relu','tanh','linear','sigmoid','softplus','hard_sigmoid'] #,'softsign,'
f_out_typ_lst=[None,'softmax']
#
f_opt_lst=['SGD','RMSprop','Adagrad','Adadelta','Adam','Adamax','Nadam']
f_loss_lst=[ 'mse','mae','mape','msle','squared_hinge','hinge','binary_crossentropy','logcosh','kullback_leibler_divergence','poisson','cosine_proximity','categorical_hinge']
f_loss_typ_lst=['categorical_crossentropy'] #softmax
#


#open,high,low,close,volume
#,xtim,xyear,xmonth,xday,xday_week,xday_year,xweek_year,avg,ma_2,ma_3,ma_5,ma_10,ma_15,ma_20,ma_25,ma_30,ma_50,ma_100,
#
#xtrdName=['date','ID','mode','code','dprice','num','kprice','sum','cash'];
#xtrdNil=['','','','',0,0,0,0,0];
#qxLibName=['date','sybVal','cash','dret','val','downLow','downHigh','downDay','downKMax'];
#qxLibNil=['',0,0,0,0,0,0,0,0];  #xBars:DF
#  

f_inxNamTbl='xinx_name.csv'
#inxNamTbl=None  #全局变量,大盘指数的交易代码,名称对照表          
#inxLib={}    #全局变量,大盘指数,内存股票数据库
#inxLibCodX={}   #全局变量,大盘指数的交易代码等基本数据,内存股票数据库

#
f_sybNamTbl='xstk_name.csv'
#sybNamTbl=None  #全局变量,相关股票的交易代码,名称对照表          
#sybLib={}       #全局变量,相关股票的交易数据,内存股票数据库

#sybLibCodX={}   #全局变量,相关股票的交易代码等基本数据,内存股票数据库
#xlst=['code','name','ename','id','industry','id_industry','area','id_area']
#
  #100w
#
#qx_trdName=['ID','time','mode','code','dprice','num','sum','cash','syb-val','total'];
#qx_trdNil=['','','','',0,0,0,0,0,0];
#qx_trdName=['ID','time','cash','syb-val','total','pools'];
#qx_trdNil=['','',0,0,0,None];
#qx_trdName=['ID','time','cash','pools'];
#qx_trdNil=['','',0,None];
#qx_trdName=['ID','time','cash','code','num9','dnum','dprice','dsum'];
#qx_trdNil=['','',0,'',0,0,0,0];
#qx_trdName=['ID','time','cash','upools']
#qx_trdNil=['','',0,{}]

#
#qx_usrTrdName=['code','num','sum','dnum','dprice','dsum']; #'_name',{{xcod#1},{xcod#2}}
#usrsyb-dic:code:num; #'code','dprice','num','sum','mode',

#
#rdatUS=_rdat0+"us\\"

#-----pre.init
#mpl.style.use('seaborn-whitegrid');
pd.set_option('display.width', 450)    

#----------class.def

    
class TQ_bar(object):
    ''' 
    设置TopQuant项目的各个全局参数
    尽量做到all in one

    '''

    def __init__(self):  
        #----rss.dir
        #
        self.prjNam=''
        self.rdat0=rdat0
        self.rdat=rdat0
        self.rdatWeb=''
        
        #self.rinx=rdat0
        self.rdatTyp='5m' #5m,15m,30m,...,day,@pd
        #self.rdatFRQ='15T' # pd.resample, tq_xtim2FRQ
        #self.rdatWrk=''
        self.rtmp='tmp/'
        self.rtopo,self.topoSite,self.topoFtg0='','',''
        self.topoKSgn,self.topoSyb='avg','btcusd'
        self.topoNMax,self.topoKSize=100,500
        self.topoTim0str,self.topoTim9str='',''
        self.topoTim0,self.topoTim9='',''
        #
        #self.topoKlow0,self.topoKlow9=0,500
        #self.topoKavg0,self.topoKavg9=500,502
        #self.topoKup0,self.topoKup9=502,1000
        self.topoKlow0,self.topoKlow9=0,500
        self.topoKavg0,self.topoKavg9=500,510
        self.topoKup0,self.topoKup9=510,1000
        self.ktopo,self.ktopoGate=0,60   
        self.ktopoInx=100
        
        #
        self.ftg0=self.rtmp+self.prjNam
        
        #
        
        #
        #self.sybNamTbl=None
        #self.inxNamTbl=None
        #
        self.sybLst=[]   #inx=syb[0]
        self.sybNum=0
        self.sybPools={}
        self.mstaPools=[]
        #self.inxLst=[]
        #self.inxPools={}
        #
        
        
        #
        #self.tim0,self.tim9,self.tim_now=None,None,None
        #self.tim0Str,self.tim9Str,self.timStr_now='','',''
        #self.tim0wrk=arrow.now()
        #
        #wrk:working
        #self.wrkTim0,self.wrkTim9=arrow.now(),None
        #self.wrkTm0str,self.wrkTim9str=self.wrkTim0.format('YYYY-MM-DD HH:mm:ss'),''
        self.timFmt='YYYY-MM-DD'      #.format('YYYY-MM-DD HH:mm:ss')
        self.timFmtInv='%Y-%m-%d'   #.strftime('%Y-%m-%d %H:%M:%S')
        self.timDayFlag=True       #价格数据日线数据标志:=True,日线数据;=False,Min分时或者Tick数据
        self.timStrToday,self.timStrTodayExt=arrow.now().format('YYYY-MM-DD'),arrow.now().format('YYYY-MM-DD HH:mm:ss')
        self.wrkTim,self.wrkTimStr=None,''
        #
        self.wrkSyb,self.wrkSybDat,self.wrkSybInfo=None,None,None
        #self.wrkInx,self.wrkInxDat,self.wrkInxInfo=None,None,None
        #   avg,close
        self.wrkPrice,self.wrkPriceNext=0,0
        #self.wrkBar=None
        #
        self.priceSgn='avg'         #价格数据字段名称:avg;close,OHLC
        
 
        #---bt:backtest
        self.btTim0,self.btTim9,self.btTimNum=None,None,300
        self.btTim0str,self.btTim9str='',''
        #self.btTimLst=[]
        
        #
        self.staFun=None
        self.staVars=[]
        #
        #   bt,trade
        # m=0,init;m=1,num-Money;m=2,num-syb; m=3,ksize(0..1.0) ??
        self.trd_mode=1  
        
        #mode=1,2
        self.trd_sellNDiv0=1
        self.trd_sellNDiv=self.trd_sellNDiv0
        self.trd_buyNum,self.trd_buyMoney=1000,5000
        self.trd_NTimGap,self.trd_tim=0.5,''
        self.trd_cnt=1
        self.trd_MulStaFlag=False
        
        #
        #--usr.xxx
        self.usrMoney0=100*10000  #100w
        self.usrMoney,self.usrTotal=self.usrMoney0,self.usrMoney0   #100w
        self.usrBuyMoney9,self.usrBuyMoney0=0,0
        #
        self.usr_num9=0
        
           
        #
        self.aiModel={}   #dict
        self.aiMKeys=[]   #list
        #
        #--------------
        
#----------

#----------
        
   
if __name__ == "__main__":
    dn=psu.cpu_count(logical=False)
    print('main',dn)
    
    #initSysVar(True)
    
    

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/913368
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 12小时前
下一篇 12小时前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注