Administrator
2024-07-25 9d39b293bde97f31f522010373aad1dd3f654c07
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
B
LKfØ.ã@sÂdZddlZddlZddlZddlZddlZddlmZddlm    Z    ddl
m Z m Z ddlm Z mZddlmZGdd    „d    ƒZGd
d „d ƒZGd d „d eƒZedkr¾e eddhƒ¡Ze eƒdS)u
历史K线服务
éN)Úconstant)Ú
RedisUtils)Úlogger_request_apiÚprintlog)Ú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_cb\code_attribute\history_k_data_util.pyÚ deformat_dates,
 z.JueJinHttpApi.__request.<locals>.deformat_dateTéu掘金API请求时间:ú-)ÚjsonÚcoderÚdata)rZ load_juejinÚtimeÚrequestrÚinfoÚintÚ_JueJinHttpApi__BASE_URLÚrequestsÚpostÚtextrÚloadsrÚlistÚdict)ÚclsZpath_strÚ    data_jsonrZDELEGATEÚfdataZ_JueJinHttpApi__start_timeZ_JueJinHttpApi__use_timeÚurlZresponseÚresultZ
resultJsonÚdÚkrrrZ    __requests:  
 
 
 
zJueJinHttpApi.__requestcCs| d||dœ¡S)NÚget_instruments)ÚsymbolsÚfields)Ú_JueJinHttpApi__request)r'r/r0rrrr.BszJueJinHttpApi.get_instrumentsc    Cs| d|||||dœ¡S)NÚ    history_n)ÚsymbolÚ    frequencyÚcountÚadjustr0)r1)r'r3r4r5r6r0rrrr2FszJueJinHttpApi.history_ncCs| d||dœ¡S)NÚcurrent)r/r0)r1)r'r/r0rrrr7KszJueJinHttpApi.currentc    Cs| d|||||dœ¡S)Nr.)Ú    exchangesÚ    sec_typesÚskip_suspendedÚskip_str0)r1)r'r8r9r:r;r0rrrÚget_exchanges_codesOsz!JueJinHttpApi.get_exchanges_codescCs| d||dœ¡S)NÚget_previous_trading_date)ÚexchangeÚdate)r1)r'r>r?rrrr=Usz'JueJinHttpApi.get_previous_trading_datecCs| d||dœ¡S)NÚget_next_trading_date)r>r?)r1)r'r>r?rrrr@Ysz#JueJinHttpApi.get_next_trading_datecCs| d|||dœ¡S)NÚget_trading_dates)r>Ú
start_dateÚend_date)r1)r'r>rBrCrrrrA]szJueJinHttpApi.get_trading_datesN) Ú__name__Ú
__module__Ú __qualname__r Ú classmethodr1r.r2r7r<r=r@rArrrrr    s *      r    c@sˆeZdZe ej¡Zedd„ƒZ    edd„ƒZ
eddd„ƒZ eddd    „ƒZ ed
d „ƒZ ed d „ƒZedd„ƒZedd„ƒZedd„ƒZdS)Ú    JueJinApic    CsV|j ¡}z:tj|ddd}tj|ddd}tj|ddd}|||fSt |¡XdS)Nzjuejin-account-idF)Z    auto_freezjuejin-strategy-idz juejin-token)Ú_JueJinApi__redisManagerZgetRedisrÚgetZrealse)r'ZredisÚ
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ú,)r/r0)    rTrÚJUEJIN_LOCAL_APIrMÚgmapiÚ    set_tokenr.Újoinr    )r'rSr0r/rKÚs_idrLrrrrÚget_gp_latest_info|s
 
zJueJinApi.get_gp_latest_infoc    Csf| |g¡}tjrF| ¡\}}}t |¡tj|dd|d|d}|Stj|dd|d|d}|SdS)NrZ1dé)r3r4r5r6r0)rTrrVrMrWrXr2r    )    r'rr5r0r/rKrZrLÚresultsrrrÚget_history_tick_n‰s 
zJueJinApi.get_history_tick_ncCsb|sgS| |¡}tjrF| ¡\}}}t |¡tjd |¡d}|Stjd |¡dd}|SdS)NrU)r/Ú)r/r0)    rTrrVrMrWrXr7rYr    )r'rSr/rKrZrLrrrrÚget_gp_current_info–s
 
zJueJinApi.get_gp_current_infocCsNtjr4| ¡\}}}t |¡tj|dgddddStj|dgddddSdS)Nr\TzLsymbol,sec_type,sec_id,sec_name,listed_date,sec_level,is_suspended,pre_close)r8r9r:r;r0)rrVrMrWrXr.r    r<)r'r8rKrZrLrrrr<¦s
 zJueJinApi.get_exchanges_codescCs:tjr*| ¡\}}}t |¡t d|¡St d|¡SdS)NÚSHSE)rrVrMrWrXr=r    )r'r?rKrZrLrrrr=²s
 
 z#JueJinApi.get_previous_trading_datecCs:tjr*| ¡\}}}t |¡t d|¡St d|¡SdS)Nra)rrVrMrWrXr@r    )r'r?rKrZrLrrrr@¼s
 
 zJueJinApi.get_next_trading_datecCs>tjr,| ¡\}}}t |¡t d||¡St d||¡SdS)Nra)rrVrMrWrXrAr    )r'rBrCrKrZrLrrrrAÅs
 
zJueJinApi.get_trading_dates)N)N)rDrErFÚ redis_managerZ RedisManagerrZREDIS_DBrIrGrMrTr[r^r`r<r=r@rArrrrrHcs 
 
    rHc@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)rHr[)r'rSr0rrrr[Ósz%HistoryKDatasUtils.get_gp_latest_infocCst |||¡S)N)rHr^)r'rr5r0rrrr^×sz%HistoryKDatasUtils.get_history_tick_ncCs
t |¡S)N)rHr`)r'rSrrrr`Ûsz&HistoryKDatasUtils.get_gp_current_infocCs
t |¡S)N)rHr=)r'r?rrrr=àsz,HistoryKDatasUtils.get_previous_trading_datecCs2||jkr|j |¡S| |¡}|r.||j|<|S)N)Ú0_HistoryKDatasUtils__previous_trading_date_cacherJr=)r'r?r)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ÚrangererQ)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)rrfÚ._HistoryKDatasUtils__latest_trading_date_cacherk)r'rhÚkeyrirrrÚget_latest_trading_date_cacheøs 
 
 
 
z0HistoryKDatasUtils.get_latest_trading_date_cachecCs
t |¡S)N)rHr@)r'r?rrrr@sz(HistoryKDatasUtils.get_next_trading_datecCs t ||¡S)N)rHrA)r'rBrCrrrrAsz$HistoryKDatasUtils.get_trading_datescCsH| |¡}g}x4|D],}|d d¡d}|d}| ||f¡qW|S)Nr3Ú.r\Úprice)r`ÚsplitrQ)r'rSrZpricesÚitemrrprrrÚ 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)
NÚsec_idÚ    pre_closerr\édrNcSs|dS)Nr\r)ÚtuprrrÚ<lambda>&óz9HistoryKDatasUtils.get_codes_limit_rate.<locals>.<lambda>)rm) r[rÚto_priceÚdecimalÚDecimalrrsÚfloatrJÚroundrQÚsortÚreverse) r'rSÚdatasÚpre_price_dictrrruZ
now_pricesZ    f_resultsrpZ    pre_priceÚraterrrÚget_codes_limit_rates"
 
 
 
z'HistoryKDatasUtils.get_codes_limit_ratecCsN| ||¡}|dd}x |D]}||dkr|d}qW|dd||S)NrÚcloser )r^)r'rr5rZ    low_pricerrrrÚget_lowest_price_rate*s   
  z(HistoryKDatasUtils.get_lowest_price_ratecCsB| |¡}i}x.|D]&}|d d¡d}|d}|||<qW|S)Nr3ror\Úsec_name)r[rq)r'rSrr]rrZ    code_namerrrÚget_gp_codes_names3s
 
 z%HistoryKDatasUtils.get_gp_codes_names)N)N)rDrErFrdrlrGr[r^r`r=rerkrnr@rArsr„r†rˆrrrrrcÏs"    
 
 
       rcÚ__main__Z000422Z600610)Ú__doc__rr{rrr!ÚutilsrZdb.redis_manager_delegaterÚlog_module.logrrrrÚdbrrbr    rHÚobjectrcrDr„r%r]rrrrÚ<module>s    Nlo