Administrator
2024-05-08 c3454cb0dedd0c5da09aef3a3e3d1b64d387583e
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
B
³œe°.ã@sºdZddlZddlZddlZddlZddlZddlZddlmZddl    m
Z
ddl m Z m Z ddlmZGdd„dƒZGd    d
„d
ƒZGd d „d eƒZed kr¶e eddhƒ¡ZeeƒdS)u
历史K线服务
éN)Ú
RedisUtils)Úlogger_request_api)ÚtoolÚmiddle_api_protocol)Úredis_manager_delegatec@speZdZdZedd„ƒZedd„ƒZedd„ƒZedd    „ƒZed
d „ƒZ    ed d „ƒZ
edd„ƒZ edd„ƒZ dS)Ú JueJinHttpApizhttp://193.112.35.168:10009/c Cs2dd„}d}d}|rjt ||¡}t ¡}zt |¡}Wdt ¡|}|dkrft d|›dt|ƒ›¡Xn@|j›|›}tj    ||d}    |    j
}
t   |
¡} | dd    krª| d
}|r*t |ƒtkrøxh|D]0} t | ƒtkrÔqÂx| D]} || | ƒ| | <qÚWqÂWn.t |ƒtkr&x|D]} ||| ƒ|| <q W|SdSdS) NcSsFt|ƒtkrB| d¡dkrB| d¡dkrB| d¡dkrBtj |¡S|S)NÚTéÿÿÿÿú:ú+)ÚtypeÚstrÚfindÚdatetimeÚ fromisoformat)Úval©rú=D:\workspace\trade_sell\code_atrribute\history_k_data_util.pyÚ deformat_dates,
 z.JueJinHttpApi.__request.<locals>.deformat_dateTéu掘金API请求时间:ú-)ÚjsonÚcoderÚdata)rÚ load_juejinÚtimeÚrequestrÚinfoÚintÚ_JueJinHttpApi__BASE_URLÚrequestsÚpostÚtextrÚloadsr ÚlistÚdict)ÚclsÚpath_strÚ    data_jsonrZDELEGATEÚfdataZ_JueJinHttpApi__start_timeZ_JueJinHttpApi__use_timeÚurlÚresponseÚresultZ
resultJsonÚdÚkrrrÚ    __requests:  
 
 
 
zJueJinHttpApi.__requestcCs| d||dœ¡S)NÚget_instruments)ÚsymbolsÚfields)Ú_JueJinHttpApi__request)r&r1r2rrrr0BszJueJinHttpApi.get_instrumentsc    Cs| d|||||dœ¡S)NÚ    history_n)ÚsymbolÚ    frequencyÚcountÚadjustr2)r3)r&r5r6r7r8r2rrrr4FszJueJinHttpApi.history_ncCs| d||dœ¡S)NÚcurrent)r1r2)r3)r&r1r2rrrr9KszJueJinHttpApi.currentc    Cs| d|||||dœ¡S)Nr0)Ú    exchangesÚ    sec_typesÚskip_suspendedÚskip_str2)r3)r&r:r;r<r=r2rrrÚget_exchanges_codesOsz!JueJinHttpApi.get_exchanges_codescCs| d||dœ¡S)NÚget_previous_trading_date)ÚexchangeÚdate)r3)r&r@rArrrr?Usz'JueJinHttpApi.get_previous_trading_datecCs| d||dœ¡S)NÚget_next_trading_date)r@rA)r3)r&r@rArrrrBYsz#JueJinHttpApi.get_next_trading_datecCs| d|||dœ¡S)NÚget_trading_dates)r@Ú
start_dateÚend_date)r3)r&r@rDrErrrrC]szJueJinHttpApi.get_trading_datesN) Ú__name__Ú
__module__Ú __qualname__rÚ classmethodr3r0r4r9r>r?rBrCrrrrrs *      rc@s†eZdZe d¡Zedd„ƒZedd„ƒZeddd„ƒZ    edd    d
„ƒZ
ed d „ƒZ ed d„ƒZ edd„ƒZ edd„ƒZedd„ƒZdS)Ú    JueJinApirc    CsV|j ¡}z:tj|ddd}tj|ddd}tj|ddd}|||fSt |¡XdS)Nzjuejin-account-idF)Ú    auto_freezjuejin-strategy-idz juejin-token)Ú_JueJinApi__redisManagerÚgetRedisrÚgetÚrealse)r&ÚredisÚ
account_idZ strategy_idÚtokenrrrÚgetJueJinAccountInfogs
 
zJueJinApi.getJueJinAccountInfocCsXg}xN|D]F}|dd…dkr0| d |¡¡q
|dd…dkr
| d |¡¡q
W|S)NréÚ00zSZSE.{}Ú60zSHSE.{})ÚappendÚformat)r&Úcodesr$r-rrrÚ get_juejin_code_list_with_prefixrs
z*JueJinApi.get_juejin_code_list_with_prefixNcCs`|sgS| |¡}tjrH| ¡\}}}t |¡tjd |¡|d}|Stjd |¡|dSdS)Nú,)r1r2)    rZÚconstantÚJUEJIN_LOCAL_APIrSÚgmapiÚ    set_tokenr0Újoinr)r&rYr2r1rQÚs_idrRrrrrÚget_gp_latest_info|s
 
zJueJinApi.get_gp_latest_infoc    Csf| |g¡}tjrF| ¡\}}}t |¡tj|dd|d|d}|Stj|dd|d|d}|SdS)NrZ1dé)r5r6r7r8r2)rZr\r]rSr^r_r4r)    r&rr7r2r1rQrarRÚresultsrrrÚget_history_tick_n‰s 
zJueJinApi.get_history_tick_ncCsb|sgS| |¡}tjrF| ¡\}}}t |¡tjd |¡d}|Stjd |¡dd}|SdS)Nr[)r1Ú)r1r2)    rZr\r]rSr^r_r9r`r)r&rYr1rQrarRrrrrÚget_gp_current_info–s
 
zJueJinApi.get_gp_current_infocCsNtjr4| ¡\}}}t |¡tj|dgddddStj|dgddddSdS)NrcTzLsymbol,sec_type,sec_id,sec_name,listed_date,sec_level,is_suspended,pre_close)r:r;r<r=r2)r\r]rSr^r_r0rr>)r&r:rQrarRrrrr>¦s
 zJueJinApi.get_exchanges_codescCs:tjr*| ¡\}}}t |¡t d|¡St d|¡SdS)NÚSHSE)r\r]rSr^r_r?r)r&rArQrarRrrrr?²s
 
 z#JueJinApi.get_previous_trading_datecCs:tjr*| ¡\}}}t |¡t d|¡St d|¡SdS)Nrh)r\r]rSr^r_rBr)r&rArQrarRrrrrB¼s
 
 zJueJinApi.get_next_trading_datecCs>tjr,| ¡\}}}t |¡t d||¡St d||¡SdS)Nrh)r\r]rSr^r_rCr)r&rDrErQrarRrrrrCÅs
 
zJueJinApi.get_trading_dates)N)N)rFrGrHÚ redis_managerÚ RedisManagerrLrIrSrZrbrergr>r?rBrCrrrrrJcs
 
 
    rJc@s´eZdZiZiZeddd„ƒZeddd„ƒZedd„ƒZedd    „ƒZ    ed
d „ƒZ
ed d „ƒZ edd„ƒZ edd„ƒZ edd„ƒZedd„ƒZedd„ƒZedd„ƒZedd„ƒZdS)ÚHistoryKDatasUtilsNcCs t ||¡S)N)rJrb)r&rYr2rrrrbÓsz%HistoryKDatasUtils.get_gp_latest_infocCst |||¡S)N)rJre)r&rr7r2rrrre×sz%HistoryKDatasUtils.get_history_tick_ncCs
t |¡S)N)rJrg)r&rYrrrrgÛsz&HistoryKDatasUtils.get_gp_current_infocCs
t |¡S)N)rJr?)r&rArrrr?àsz,HistoryKDatasUtils.get_previous_trading_datecCs2||jkr|j |¡S| |¡}|r.||j|<|S)N)Ú0_HistoryKDatasUtils__previous_trading_date_cacherNr?)r&rAr)rrrÚget_previous_trading_date_cacheäs 
 
 
z2HistoryKDatasUtils.get_previous_trading_date_cachecCs:t ¡}g}x(t|ƒD]}| |¡}| |¡|}qW|S)N)rÚget_now_date_strÚrangermrW)r&Ú    day_countZnow_dayÚdaysÚiZpdayrrrÚget_latest_trading_dateîs
 
z*HistoryKDatasUtils.get_latest_trading_datecCs>t ¡›d|›}||jkr&|j|S| |¡}||j|<|S)Nr)rrnÚ._HistoryKDatasUtils__latest_trading_date_cachers)r&rpÚkeyrqrrrÚget_latest_trading_date_cacheøs 
 
 
 
z0HistoryKDatasUtils.get_latest_trading_date_cachecCs
t |¡S)N)rJrB)r&rArrrrBsz(HistoryKDatasUtils.get_next_trading_datecCs t ||¡S)N)rJrC)r&rDrErrrrCsz$HistoryKDatasUtils.get_trading_datescCsH| |¡}g}x4|D],}|d d¡d}|d}| ||f¡qW|S)Nr5Ú.rcÚprice)rgÚsplitrW)r&rYrZpricesÚitemrrxrrrÚ get_now_price
s
 
z HistoryKDatasUtils.get_now_pricec Cs¾| |¡}i}x4|D],}|d}t t t|dƒ¡¡}|||<qW| |¡}g}xN|D]F}|d}|d}    t| |¡ƒ}
t    |    |
d|
dƒ} | 
|| f¡qXW|j dd„d    |  ¡|S)
NZsec_idÚ    pre_closerrcédrTcSs|dS)Nrcr)ÚtuprrrÚ<lambda>&óz9HistoryKDatasUtils.get_codes_limit_rate.<locals>.<lambda>)ru) rbrÚto_priceÚdecimalÚDecimalr r{ÚfloatrNÚroundrWÚsortÚreverse) r&rYÚdatasZpre_price_dictrrr|Z
now_pricesZ    f_resultsrxZ    pre_priceÚraterrrÚget_codes_limit_rates"
 
 
 
z'HistoryKDatasUtils.get_codes_limit_ratecCsN| ||¡}|dd}x |D]}||dkr|d}qW|dd||S)NrÚcloser    )re)r&rr7rˆZ    low_pricerrrrÚget_lowest_price_rate*s   
  z(HistoryKDatasUtils.get_lowest_price_ratecCsB| |¡}i}x.|D]&}|d d¡d}|d}|||<qW|S)Nr5rwrcZsec_name)rbry)r&rYrˆrdrrZ    code_namerrrÚget_gp_codes_names3s
 
 z%HistoryKDatasUtils.get_gp_codes_names)N)N)rFrGrHrlrtrIrbrergr?rmrsrvrBrCr{rŠrŒrrrrrrkÏs"    
 
 
       rkÚ__main__Z000422Z600610)Ú__doc__rr‚rrr r\Zdb.redis_manager_delegaterÚlog_module.logrÚutilsrrÚdbrrirrJÚobjectrkrFrŠr$rdÚprintrrrrÚ<module>s    Nlo