Administrator
2024-05-31 c09dd858ba2d6894d1ded8e8da5a46b9b16b05d5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
B
¡Kff$ã@sÈdZddlZddlZddlZddlZddlZddlZddlZddlZddlm    Z    ddl
m Z ddl m Z dd„Zdd    „Zd
d „ZdSd d„ZdTdd„Zdd„Zdd„Zdd„ZdUdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Z d.d/„Z!d0d1„Z"e#e#d2œd3d4„Z$e#e#d2œd5d6„Z%d7d8„Z&d9d:„Z'd;d<„Z(d=d>„Z)dVd@dA„Z*dBdC„Z+dDdE„Z,e-dFkrˆe e!dGdHƒƒGdIdJ„dJƒZ.dKdL„Z/dMdN„Z0dOZ1dZ2dPZ3dQdR„Z4e-dFkrÄdS)Wu
常用工具
éN)ÚThread)Úprintlog)Úconstantcs‡fdd„}|S)Ncstˆ||d ¡dS)N)ÚtargetÚargsÚkwargs)rÚstart)rr)Úfn©ú#D:\workspace\trade_cb\utils\tool.pyÚwrapperszasync_call.<locals>.wrapperr
)r    r r
)r    r Ú
async_calls r cCs`tt ¡ƒ}tt ¡ƒd}t dt |¡¡}tt t |d¡¡ƒ}||}|t dd¡7}|S)Ni€Qz%Y-%m-%dri)    ÚintÚtÚtimeÚstrftimeÚ    localtimeÚmktimeÚstrptimeÚrandomÚrandint)ÚnowÚendZ
local_timeÚexpirer
r
r Ú
get_expires rcCstj ¡}|S)N)Údatetimer)Údater
r
r Ú get_now_date$s
rú%Y-%m-%dcCstj ¡ |¡}|S)N)rrr)Úformatrr
r
r Úget_now_date_str)sr cCs8t t ||¡¡}||ddd8}t |t |¡¡S)Néé<)rrrrrr)Zdate_strÚdayrZt_r
r
r Údate_sub/sr$cCstj ¡ d¡}|S)Nz%H:%M:%S)rrr)Útime_strr
r
r Úget_now_time_str5sr&cCstj ¡ d¡}|S)Nz%Y-%m-%d %H:%M:%S)rrr)r%r
r
r Úget_now_datetime_str:sr'cCstt ¡dƒS)Niè)Úroundrr
r
r
r Úget_now_timestamp?sr)ú0.00cCs| t |¡tj¡S)N)ÚquantizeÚdecimalÚDecimalÚ ROUND_HALF_UP)Ú_decimalrr
r
r Úto_priceDsr0cCsdtjr
dSt ¡dd}d}d}d}d}||kr>|ksXn||krT|kr\nndSdSdS)    NTi€Qi€pi0„iô¡iX¶i,ÓF)rÚTESTrr)Úrelative_timestampÚstart1Úend1Ústart2Úend2r
r
r Ú is_trade_timeIs.r7cCsZt ¡dd}d}d}d}d}||kr4|ksNn||krJ|krRnndSdSdS)    Ni€Qi€pi\…i|¡iжiˆÑTF)rr)r2r3r4r5r6r
r
r Ú is_alert_timeZs.r8cCsZt ¡dd}d}d}d}d}||kr4|ksNn||krJ|krRnndSdSdS)    Ni€Qi€pi\…i|¡iжiðÒTF)rr)r2r3r4r5r6r
r
r Úis_repaire_timegs.r9cCs<t ¡dd}d}d}||kr,|kr4nndSdSdS)Ni€Qi€pi˜…i,ÓFT)rr)r2r3r4r
r
r Ú is_init_timets r:cCsdtjr
dSt ¡dd}d}d}d}d}||kr>|ksXn||krT|kr\nndSdSdS)    NTi€Qi€pi؁iä¢ix´iÔF)rr1rr)r2r3r4r5r6r
r
r Úis_set_code_time~s.r;cCs dd„}|S)Ncs‡fdd„}|S)Ncs:tt ¡dƒ}ˆ|f|Ž}tdtt ¡dƒ|ƒ|S)Nièu 执行时间)r(rr)rrrÚresult)Úfuncr
r Úinfuncs z+run_time.<locals>.decorator.<locals>.infuncr
)r=r>r
)r=r Ú    decorators zrun_time.<locals>.decoratorr
)r?r
r
r Úrun_timeŽs    r@cCs6| d¡}t|dƒdt|dƒdt|dƒS)Nú:riér"é)Úsplitr)r%Útsr
r
r Úget_time_as_second›s
rFcCsP| d¡\}}| d¡}t|dƒdt|dƒdt|dƒdt|ƒS)    NÚ.rArirBr"rCiè)rDr)r%Ús_strÚms_strrEr
r
r Úget_time_as_millionsecond s
rJcCs*|d}|dd}|d}d |||¡S)Nir"z{0:0>2}:{1:0>2}:{2:0>2})r)ÚsecondsÚhÚmÚsr
r
r Útime_seconds_format§s rOcCs<|d}|d}|d}|dd}|d}d ||||¡S)Nièir"z{0:0>2}:{1:0>2}:{2:0>2}.{3:0>3})r)ZmillionsecondsÚmsrKrLrMrNr
r
r Útime_millionseconds_format®s  rQcCsbtdƒ}t|ƒ}t|ƒ}||kr,|kr:nn
|d}n ||krN|krZnn|d}||S)Nz11:30:00i)rF)Ú
time_str_1Ú
time_str_2Ú
split_timeÚtime_1Útime_2r
r
r Útrade_time_sub¹s
rWcCsftdƒd}t|ƒ}t|ƒ}||kr0|kr>nn
|d}n ||krR|kr^nn|d}||S)Nz11:30:00ièiÀeR)rFrJ)rRrSrTrUrVr
r
r Útrade_time_sub_with_msÅs 
rX)rUrVcCs t| dd¡ƒt| dd¡ƒS)NrAÚ)rÚreplace)rUrVr
r
r Ú compare_timeÑsr[cCs0t| dd¡ dd¡ƒt| dd¡ dd¡ƒS)NrArYrG)rrZ)rUrVr
r
r Úcompare_time_with_msÕsr\cCsf| d¡}t|dƒdt|dƒdt|dƒ}||}|dkrR|kr^nn|d7}t|ƒS)    NrArirBr"rCi¸¡i)rDrrO)r%ÚsecondrEÚs_rNr
r
r Útrade_time_add_secondÚs 
,r_cCsˆ| d¡\}}| d¡}t|dƒdt|dƒdt|dƒ}|d}|t|ƒ7}||}|d    krt|kr€nn|d
7}t|ƒS) NrGrArirBr"rCièiÀ¶wiÀeR)rDrrQ)r%Z millionsecondrHrIrEr^Zms_rPr
r
r Útrade_time_add_millionsecondäs
, r`cCsR| d¡}t|dƒdt|dƒdt|dƒ}|dd}t|d|ƒS)NrArirBr"rCé)rDrrO)Ztime_rErNZchar
r
r Úcompute_buy1_real_timeñs
, rbcCsXd}xN|D]F}t|ƒ}|dkr$d}n d|kr8dkrDnn|d8}|t|ƒ7}q
W|S)NrYi0é iÿi^ÿiàþ)ÚordÚchr)ZustringZrstringZucharZ inside_coder
r
r ÚstrQ2Bùs
rfú%H:%M:%ScCstj |¡ |¡S)N)rÚ fromtimestampr)Ztimestamp_secondÚformat_r
r
r Ú to_time_strsrjcCs,|d}t |d¡d}|d}t||ƒS)Ng\Âõ(\ï?édgš™™™™™¹?)ÚmathÚceilÚmax)ÚpriceZprice1Zprice2r
r
r Úget_buy_min_price srpcCstt|ƒddƒS)Ng¸…ëQ¸ž?rC)r(rp)ror
r
r Úget_shadow_pricesrqÚ__main__z13:00:01z11:29:55c@s0eZdZedd„ƒZedd„ƒZedd„ƒZdS)ÚCodeDataCacheUtilcCs||kr| |¡dS)N)Úpop)ÚclsÚ
cache_dictÚcoder
r
r Ú clear_cache"szCodeDataCacheUtil.clear_cachecCs |||<dS)Nr
)rurvrwÚdatar
r
r Ú    set_cache'szCodeDataCacheUtil.set_cachecCs||krd| |¡fSdS)NT)FN)Úget)rurvrwr
r
r Ú    get_cache+szCodeDataCacheUtil.get_cacheN)Ú__name__Ú
__module__Ú __qualname__Ú classmethodrxrzr|r
r
r
r rs s  rscCs$| d¡dks| d¡dkr dSdS)NÚ00rÚ60TF)Úfind)rwr
r
r Ú is_shsz_code3sr„cCs<y*t ¡rt ¡jSt d¡ d¡}|SWn YnXdS)Nz    libc.so.6éº)rÚ
is_windowsÚ    threadingÚcurrent_threadÚidentÚctypesÚCDLLZsyscall)Ú    thread_idr
r
r Ú get_thread_id9s
rrBéÿÿÿÿcCsd| d¡dks*| d¡dks*| d¡dkr.tS| d¡dksX| d¡dksX| d¡dkr\tStSdS)    u:
    æ ¹æ®è‚¡ç¥¨ä»£ç 
    :param code:
    :return:
    rrZ30Z12r‚Z68Ú11N)rƒÚMARKET_TYPE_SZSEÚMARKET_TYPE_SSEÚMARKET_TYPE_UNKNOWN)rwr
r
r Úget_market_typeMs
**r“)r)r)r*)rg)5Ú__doc__rŠr,rlrr‡rrrrÚlog_module.logrÚutilsrr rrr r$r&r'r)r0r7r8r9r:r;r@rFrJrOrQrWrXÚstrr[r\r_r`rbrfrjrprqr}rsr„rrr‘r’r“r
r
r
r Ú<module>sj