admin
2025-01-15 f84dcf456dbfa318f490d6cf878be5d5d5262718
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
B
ۑg`+ã@sdZddlZddlZddlZddlZddlZddlZddlZddlZddlm    Z    ddl
Z
ddl m Z dd„Z dd„Zd    d
„Zd d „Zdedd„Zdfdd„Zdd„Zdd„Zdd„Zdd„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)dgd@dA„Z*dhdCdD„Z+didEdF„Z,dGdH„Z-e.dIkr–e e!dJdKƒƒGdLdM„dMƒZ/dNdO„Z0dPdQ„Z1dRdS„Z2dTdU„Z3dVZ4dZ5dWZ6dXdY„Z7dZd[„Z8d\d]„Z9d^d_„Z:d`da„Z;e.dIkre<e,dbdcddƒdS)ju
常用工具
éN)ÚThread)Úprintlogcs‡fdd„}|S)Ncstˆ||d ¡dS)N)ÚtargetÚargsÚkwargs)rÚstart)rr)Úfn©õ,D:\量化低吸\low_suction_hx\utils\tool.pyÚwrapperszasync_call.<locals>.wrapperr    )rr r    )rr
Ú
async_calls r csi‰‡‡fdd„}|S)u6
    å•例装饰器
    @param cls:
    @return:
    csˆˆkrˆ||Žˆˆ<ˆˆS)Nr    )rr)ÚclsÚ    instancesr    r
Ú get_instance!szsingleton.<locals>.get_instancer    )r rr    )r rr
Ú    singletonsrcCs`tt ¡ƒ}tt ¡ƒd}t dt |¡¡}tt t |d¡¡ƒ}||}|t dd¡7}|S)Ni€Qz%Y-%m-%dri)    ÚintÚtÚtimeÚstrftimeÚ    localtimeÚmktimeÚstrptimeÚrandomZrandint)ÚnowÚendZ
local_timeZexpirer    r    r
Ú
get_expire)s rcCstj ¡}|S)N)Údatetimer)Údater    r    r
Ú get_now_date4s
rú%Y-%m-%dcCstj ¡ |¡}|S)N)rrr)Úformatrr    r    r
Úget_now_date_str9sr!cCs8t t ||¡¡}||ddd8}t |t |¡¡S)Néé<)rrrrrr)Zdate_strÚdayr Zt_r    r    r
Údate_sub?sr%cCstj ¡ d¡}|S)Nz%H:%M:%S)rrr)Útime_strr    r    r
Úget_now_time_strEsr'cCstj ¡ d¡}|S)Nz%Y-%m-%d %H:%M:%S)rrr)r&r    r    r
Úget_now_datetime_strJsr(cCstt ¡dƒS)Niè)Úroundrr    r    r    r
Úget_now_timestampOsr*cCs| t d¡tj¡S)Nz0.00)ZquantizeÚdecimalZDecimalZ ROUND_HALF_UP)Z_decimalr    r    r
Úto_priceTsr,cCsdtjr
dSt ¡dd}d}d}d}d}||kr>|ksXn||krT|kr\nndSdSdS)    NTi€Qi€pi0„iô¡iX¶i,ÓF)ÚconstantÚTESTrr)Úrelative_timestampÚstart1Úend1Ústart2Úend2r    r    r
Ú is_trade_timeYs.r4cCsZt ¡dd}d}d}d}d}||kr4|ksNn||krJ|krRnndSdSdS)    Ni€Qi€pi\…i|¡iжiˆÑTF)rr)r/r0r1r2r3r    r    r
Ú is_alert_timejs.r5cCsZt ¡dd}d}d}d}d}||kr4|ksNn||krJ|krRnndSdSdS)    Ni€Qi€pi\…i|¡iжiðÒTF)rr)r/r0r1r2r3r    r    r
Úis_repaire_timews.r6cCs<t ¡dd}d}d}||kr,|kr4nndSdSdS)Ni€Qi€pi˜…i,ÓFT)rr)r/r0r1r    r    r
Ú is_init_time„s r7cCsdtjr
dSt ¡dd}d}d}d}d}||kr>|ksXn||krT|kr\nndSdSdS)    NTi€Qi€pi؁iä¢ix´iÔF)r-r.rr)r/r0r1r2r3r    r    r
Úis_set_code_timeŽs.r8cCs 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
rCcCsP| d¡\}}| d¡}t|dƒdt|dƒdt|dƒdt|ƒS)    NÚ.r>rir?r#r@iè)rAr)r&Ús_strÚms_strrBr    r    r
Úget_time_as_millionsecond°s
rGcCs*|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 rLcCs<|d}|d}|d}|dd}|d}d ||||¡S)Nièir#z{0:0>2}:{1:0>2}:{2:0>2}.{3:0>3})r )ZmillionsecondsÚmsrHrIrJrKr    r    r
Útime_millionseconds_format¾s  rNcCsbtdƒ}t|ƒ}t|ƒ}||kr,|kr:nn
|d}n ||krN|krZnn|d}||S)Nz11:30:00i)rC)Ú
time_str_1Ú
time_str_2Ú
split_timeÚtime_1Útime_2r    r    r
Útrade_time_subÉs
rTcCsftdƒd}t|ƒ}t|ƒ}||kr0|kr>nn
|d}n ||krR|kr^nn|d}||S)Nz11:30:00ièiÀeR)rCrG)rOrPrQrRrSr    r    r
Útrade_time_sub_with_msÕs 
rU)rRrScCs t| dd¡ƒt| dd¡ƒS)Nr>Ú)rÚreplace)rRrSr    r    r
Ú compare_timeásrXcCs0t| dd¡ dd¡ƒt| dd¡ dd¡ƒS)Nr>rVrD)rrW)rRrSr    r    r
Úcompare_time_with_msåsrYcCsf| d¡}t|dƒdt|dƒdt|dƒ}||}|dkrR|kr^nn|d7}t|ƒS)    Nr>rir?r#r@i¸¡i)rArrL)r&ÚsecondrBÚs_rKr    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) NrDr>rir?r#r@ièiÀ¶wiÀeR)rArrN)r&Z millionsecondrErFrBr[Zms_rMr    r    r
Útrade_time_add_millionsecondôs
, r]cCsR| d¡}t|dƒdt|dƒdt|dƒ}|dd}t|d|ƒS)Nr>rir?r#r@é)rArrL)Ztime_rBrKZchar    r    r
Úcompute_buy1_real_times
, r_cCsXd}xN|D]F}t|ƒ}|dkr$d}n d|kr8dkrDnn|d8}|t|ƒ7}q
W|S)NrVi0é iÿi^ÿiàþ)ÚordÚchr)ZustringZrstringZucharZ inside_coder    r    r
ÚstrQ2B    s
rcú%H:%M:%ScCstj |¡ |¡S)N)rÚ fromtimestampr)Ztimestamp_secondZformat_r    r    r
Ú to_time_strsrfFcCs`|d}|r t |d¡d}nt |d¡d}|d}|sRtt||ƒddƒSt||ƒSdS)Ng\Âõ(\ï?ièédgš™™™™™¹?gš™™™™™©?r@)ÚmathÚceilr)Úmin)ÚpriceÚis_cbÚprice1Úprice2r    r    r
Úget_buy_min_pricesrocCsD|d}|r t |d¡d}nt |d¡d}|d}t||ƒS)NgR¸…ëQð?ièrggš™™™™™¹?)rhriÚmax)rkrlrmrnr    r    r
Úget_buy_max_price(s rqcCstt|ƒddƒS)Ng¸…ëQ¸ž?r@)r)ro)rkr    r    r
Úget_shadow_price3srrÚ__main__z13:00:01z11:29:55c@s0eZdZedd„ƒZedd„ƒZedd„ƒZdS)ÚCodeDataCacheUtilcCs||kr| |¡dS)N)Úpop)r Ú
cache_dictÚcoder    r    r
Ú clear_cacheBszCodeDataCacheUtil.clear_cachecCs |||<dS)Nr    )r rvrwÚdatar    r    r
Ú    set_cacheGszCodeDataCacheUtil.set_cachecCs||krd| |¡fSdS)NT)FN)Úget)r rvrwr    r    r
Ú    get_cacheKszCodeDataCacheUtil.get_cacheN)Ú__name__Ú
__module__Ú __qualname__Ú classmethodrxrzr|r    r    r    r
rt@s  rtcCs2| d¡dks*| d¡dks*| d¡dkr.dSdS)NÚ00rÚ60Ú30TF)Úfind)rwr    r    r
Úis_can_sell_codeSs*r…cCs(| d¡dks| d¡dkr dSdSdS)Nrrr‚gš™™™™™ñ?g333333ó?)r„)rwr    r    r
Úget_limit_up_rateYsr†cCs(| d¡dks| d¡dkr dSdSdS)Nrrr‚gÍÌÌÌÌÌì?gš™™™™™é?)r„)rwr    r    r
Úget_limit_down_rateasr‡cCs<y*t ¡rt ¡jSt d¡ d¡}|SWn YnXdS)Nz    libc.so.6éº)r-Z
is_windowsÚ    threadingÚcurrent_threadÚidentÚctypesZCDLLZsyscall)Z    thread_idr    r    r
Ú get_thread_idis
rr?éÿÿÿÿcCsd| d¡dks*| d¡dks*| d¡dkr.tS| d¡dksX| d¡dksX| d¡dkr\tStSdS)    u:
    æ ¹æ®è‚¡ç¥¨ä»£ç 
    :param code:
    :return:
    rrrƒÚ12r‚Ú68Ú11N)r„ÚMARKET_TYPE_SZSEÚMARKET_TYPE_SSEÚMARKET_TYPE_UNKNOWN)rwr    r    r
Úget_market_type}s
**r•cCs t|ƒtkS)u7
    æ˜¯å¦æ˜¯ä¸Šè¯
    @param code:
    @return:
    )r•r“)rwr    r    r
Ú
is_sh_code‹sr–cCs t|ƒtkS)u7
    æ˜¯å¦æ˜¯æ·±è¯
    @param code:
    @return:
    )r•r’)rwr    r    r
Ú
is_sz_code”sr—cCs| d¡dkp| d¡dkS)u:
    æ˜¯å¦æ˜¯å¯è½¬å€º
    @param code:
    @return:
    r‘rr)r„)rwr    r    r
Ú
is_cb_codesr˜cCs8| d¡dkp6| d¡dkp6| d¡dkp6| d¡dkS)u=
    æ˜¯å¦æ˜¯è‚¡ç¥¨ä»£ç 
    :param code:
    :return:
    rrrƒr‚r)r„)rwr    r    r
Úis_stock¦sr™gZd;ßY@T)rl)r)r)rd)F)F)=Ú__doc__rŒr+rhrr‰rrrrr-Zlog_module.logrr rrrr!r%r'r(r*r,r4r5r6r7r8r=rCrGrLrNrTrUÚstrrXrYr\r]r_rcrfrorqrrr}rtr…r†r‡rr’r“r”r•r–r—r˜r™Úprintr    r    r    r
Ú<module>sz