Administrator
2025-06-12 4e5eed2226fae6a057c454155565211dbc9349e9
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
B
îüeA"ã@s¢dZddlZddlZddlZddlZddlZddlZddlZddlZddlm    Z    ddl
Z
dd„Z dd„Z dd    „Z dLd d „ZdMd d„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Ze e d/œd0d1„Z!e e d/œd2d3„Z"d4d5„Z#d6d7„Z$d8d9„Z%d:d;„Z&dNd=d>„Z'd?d@„Z(dAdB„Z)e*dCkrve+edDdEƒƒGdFdG„dGƒZ,dHdI„Z-dJdK„Z.e*dCkrždS)Ou
常用工具
éN)ÚThreadcs‡fdd„}|S)Ncstˆ||d ¡dS)N)ÚtargetÚargsÚkwargs)rÚstart)rr)Úfn©ú%D:\workspace\trade_sell\utils\tool.pyÚwrapperszasync_call.<locals>.wrapperr)rr
r)rr    Ú
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_timeZexpirerrr    Ú
get_expires rcCstj ¡}|S)N)Údatetimer)Údaterrr    Ú get_now_date#s
rú%Y-%m-%dcCstj ¡ |¡}|S)N)rrr)Úformatrrrr    Úget_now_date_str(srcCs8t t ||¡¡}||ddd8}t |t |¡¡S)Néé<)rrrrr r)Zdate_strÚdayrZt_rrr    Údate_sub.sr!cCstj ¡ d¡}|S)Nz%H:%M:%S)rrr)Útime_strrrr    Úget_now_time_str4sr#cCstj ¡ d¡}|S)Nz%Y-%m-%d %H:%M:%S)rrr)r"rrr    Úget_now_datetime_str9sr$cCstt ¡dƒS)Niè)Úroundrrrrr    Úget_now_timestamp>sr&cCs| t d¡tj¡S)Nz0.00)ÚquantizeÚdecimalÚDecimalÚ ROUND_HALF_UP)Ú_decimalrrr    Úto_priceCsr,cCsdtjr
dSt ¡dd}d}d}d}d}||kr>|ksXn||krT|kr\nndSdSdS)    NTi€Qi€pi0„iô¡iX¶i,ÓF)ÚconstantÚTESTr r)Úrelative_timestampÚstart1Úend1Ústart2Úend2rrr    Ú is_trade_timeHs.r4cCsZt ¡dd}d}d}d}d}||kr4|ksNn||krJ|krRnndSdSdS)    Ni€Qi€pi\…i|¡iжiˆÑTF)r r)r/r0r1r2r3rrr    Ú is_alert_timeYs.r5cCsZt ¡dd}d}d}d}d}||kr4|ksNn||krJ|krRnndSdSdS)    Ni€Qi€pi\…i|¡iжiðÒTF)r r)r/r0r1r2r3rrr    Úis_repaire_timefs.r6cCs<t ¡dd}d}d}||kr,|kr4nndSdSdS)Ni€Qi€pi˜…i,ÓFT)r r)r/r0r1rrr    Ú is_init_timess r7cCsdtjr
dSt ¡dd}d}d}d}d}||kr>|ksXn||krT|kr\nndSdSdS)    NTi€Qi€pi؁iä¢ix´iÔF)r-r.r r)r/r0r1r2r3rrr    Úis_set_code_time}s.r8cCs dd„}|S)Ncs‡fdd„}|S)Ncs:tt ¡dƒ}ˆ|f|Ž}tdtt ¡dƒ|ƒ|S)Nièu 执行时间)r%rÚprint)rrrÚresult)Úfuncrr    Úinfuncs z+run_time.<locals>.decorator.<locals>.infuncr)r;r<r)r;r    Ú    decoratorŽs zrun_time.<locals>.decoratorr)r=rrr    Úrun_times    r>cCs6| d¡}t|dƒdt|dƒdt|dƒS)Nú:riéré)Úsplitr )r"Útsrrr    Úget_time_as_secondšs
rDcCsP| d¡\}}| d¡}t|dƒdt|dƒdt|dƒdt|ƒS)    NÚ.r?rir@rrAiè)rBr )r"Ús_strÚms_strrCrrr    Úget_time_as_millionsecondŸs
rHcCs*|d}|dd}|d}d |||¡S)Nirz{0:0>2}:{1:0>2}:{2:0>2})r)ÚsecondsÚhÚmÚsrrr    Útime_seconds_format¦s rMcCs<|d}|d}|d}|dd}|d}d ||||¡S)Nièirz{0:0>2}:{1:0>2}:{2:0>2}.{3:0>3})r)ZmillionsecondsÚmsrIrJrKrLrrr    Útime_millionseconds_format­s  rOcCsbtdƒ}t|ƒ}t|ƒ}||kr,|kr:nn
|d}n ||krN|krZnn|d}||S)Nz11:30:00i)rD)Ú
time_str_1Ú
time_str_2Ú
split_timeÚtime_1Útime_2rrr    Útrade_time_sub¸s
rUcCsftdƒd}t|ƒ}t|ƒ}||kr0|kr>nn
|d}n ||krR|kr^nn|d}||S)Nz11:30:00ièiÀeR)rDrH)rPrQrRrSrTrrr    Útrade_time_sub_with_msÄs 
rV)rSrTcCs t| dd¡ƒt| dd¡ƒS)Nr?Ú)r Úreplace)rSrTrrr    Ú compare_timeÐsrYcCs0t| dd¡ dd¡ƒt| dd¡ dd¡ƒS)Nr?rWrE)r rX)rSrTrrr    Úcompare_time_with_msÔsrZcCsf| d¡}t|dƒdt|dƒdt|dƒ}||}|dkrR|kr^nn|d7}t|ƒS)    Nr?rir@rrAi¸¡i)rBr rM)r"ÚsecondrCÚs_rLrrr    Ú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) NrEr?rir@rrAièiÀ¶wiÀeR)rBr rO)r"Z millionsecondrFrGrCr\Zms_rNrrr    Útrade_time_add_millionsecondãs
, r^cCsR| d¡}t|dƒdt|dƒdt|dƒ}|dd}t|d|ƒS)Nr?rir@rrAé)rBr rM)Ztime_rCrLZcharrr    Úcompute_buy1_real_timeðs
, r`cCsXd}xN|D]F}t|ƒ}|dkr$d}n d|kr8dkrDnn|d8}|t|ƒ7}q
W|S)NrWi0é iÿi^ÿiàþ)ÚordÚchr)ZustringZrstringZucharZ inside_coderrr    ÚstrQ2Bøs
rdú%H:%M:%ScCstj |¡ |¡S)N)rÚ fromtimestampr)Ztimestamp_secondÚformat_rrr    Ú to_time_strsrhcCs,|d}t |d¡d}|d}t||ƒS)Ng\Âõ(\ï?édgš™™™™™¹?)ÚmathÚceilÚmax)ÚpriceZprice1Zprice2rrr    Úget_buy_min_price
srncCstt|ƒddƒS)Ng¸…ëQ¸ž?rA)r%rn)rmrrr    Úget_shadow_pricesroÚ__main__z13:00:01z11:29:55c@s0eZdZedd„ƒZedd„ƒZedd„ƒZdS)ÚCodeDataCacheUtilcCs||kr| |¡dS)N)Úpop)ÚclsÚ
cache_dictÚcoderrr    Ú clear_cache!szCodeDataCacheUtil.clear_cachecCs |||<dS)Nr)rsrtruÚdatarrr    Ú    set_cache&szCodeDataCacheUtil.set_cachecCs||krd| |¡fSdS)NT)FN)Úget)rsrtrurrr    Ú    get_cache*szCodeDataCacheUtil.get_cacheN)Ú__name__Ú
__module__Ú __qualname__Ú classmethodrvrxrzrrrr    rqs  rqcCs$| d¡dks| d¡dkr dSdS)NÚ00rZ60TF)Úfind)rurrr    Ú is_shsz_code2srcCs<y*t ¡rt ¡jSt d¡ d¡}|SWn YnXdS)Nz    libc.so.6éº)r-Ú
is_windowsÚ    threadingÚcurrent_threadÚidentÚctypesÚCDLLZsyscall)Ú    thread_idrrr    Ú get_thread_id8s
rŠ)r)r)re)/Ú__doc__r‡r(rjrr„rr rrr-r rrrr!r#r$r&r,r4r5r6r7r8r>rDrHrMrOrUrVÚstrrYrZr]r^r`rdrhrnror{r9rqrrŠrrrr    Ú<module>s`