Administrator
2025-06-09 f3ddd9985477ebde3ff49440ecfa0c9af28db84e
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
B
ø©c¥&ã@s\ddlmZmZddlZddlZddlZddlZddlm    Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlmZddlmZmZe ¡Zdd„Zdd„Zd    d
„Zd d „Zd d„Zdd„Zdd„Z dd„Z!dd„Z"iZ#dd„Z$dd„Z%dd„Z&dd„Z'dd „Z(d!d"„Z)Gd#d$„d$ƒZ*d%d&„Z+d'd(„Z,e-d)krXe,d*d+gƒZ.e/e.ƒdS),é)Úprint_functionÚabsolute_importN)Ú L2CodeOperate)Úlogger_juejin_tickÚ logger_systemcCs0t ¡}| d|¡| d|¡| d|¡dS)Nzjuejin-account-idzjuejin-strategy-idz juejin-token)Ú redisManagerÚgetRedisÚset)Ú    accountIdÚ
strategyIdÚtokenÚredis©rúD:\workspace\trade\juejin.pyÚsetAccountInfos  rcCs0t ¡}| d¡}| d¡}| d¡}|||fS)Nzjuejin-account-idzjuejin-strategy-idz juejin-token)rrÚget)r Ú
account_idÚ strategy_idr rrrÚgetAccountInfo"s
 
 
 
rcCs2t d¡t ¡t ¡t gd¡tdƒdS)Nu每日初始化T)rÚinfoÚ global_utilÚ load_industryÚ load_zyltgbÚadd_limit_up_codesÚget_latest_inforrrrÚ everyday_init+s
 
 rcCsx t ¡qWdS)N)ÚscheduleÚ run_pendingrrrrÚ__run_schedule7srcCsÒt d¡t ¡j d¡ t¡tj    dd„d}| 
d¡|  ¡t jt ddd    t jt dd
d    t jt dd d    t jtdd d    t jtdd d    tƒt ¡}x,|D]$}xtddƒD]}t ||¡q¶Wq¦WdS)Nu掘金初始化z09:00:00cSstƒS)N)rrrrrÚ<lambda>Dózinit.<locals>.<lambda>)ÚtargetTÚ1dz08:30:00)Ú schedule_funcÚ    date_ruleÚ    time_rulez08:50:00z09:28:00z09:25:00z09:29:00ré)rrrÚeveryÚdayÚatÚdorÚ    threadingÚThreadÚ    setDaemonÚstartÚgmapirÚget_current_infoÚre_subscribe_tickÚ    authorityÚget_l2_clientsÚrangeÚgpcode_managerÚinit_listen_code_by_pos)ÚcontextÚt1ÚclientsÚclientÚirrrÚinit<s
 
 
r<c
Cs¼t ¡}x0|D](}x"tddƒD]}t t|ƒ|¡qWqWt ¡}t |¡}xj|D]b}|d}|d}|     d¡d}t
  t   t|dƒ¡¡}    |dkrª||kr´t ||    ¡qRt |¡qRWdS)Nrr&Ú    sec_levelÚsymbolÚ.éÚ    pre_close)r2r3r4r5r6ÚintÚ get_gp_listÚ JueJinManagerÚget_gp_latest_infoÚsplitÚtoolÚto_priceÚdecimalÚDecimalÚstrÚ set_price_preÚrm_gp)
r7r9Úcr;ÚcodesÚresultÚitemr=r>rArrrrYs
 
 
rcCsXt ¡}t |¡}t d|¡x4|D],}|d}|d}| d¡d}t||ƒq$WdS)Nu定时获取:{}Úpricer>r?r@)r5rCrDÚget_gp_current_inforÚdebugrFÚ accpt_price)ÚdataÚresultsrPrRr>rrrr0ns
 
r0cCs|g}t|ƒdS)N)Úre_set_price_pres)ÚcoderOrrrÚre_set_price_pre{srZcCsVt |¡}xF|D]>}|d}| d¡d}t t t|dƒ¡¡}t     ||¡qWdS)Nr>r?r@rA)
rDrErFrGrHrIrJrKr5rL)rOrPrQr>rArrrrX€s 
 
rXc
Cs t ¡dd}d}d}d}d}d}||kr8|ksTn||krN|ksTn|rœ|d}|d    }    | d
¡d }t d  ||    |d ¡¡t||    ƒ|    t|<dS)Ni€Qi€pi0„iä¢ix´iÔFr>rRr?r@z {}   {}    {}Ú
created_at)ÚtÚtimerFrrÚformatrUÚ __prices_now)
r7ÚtickÚrelative_timestampÚstart1Úend1Ústart2Úend2Útestr>rRrrrÚon_tickŒs0
rgcCs¦t ||¡t |¡}|dk    r¢t||d|dƒ}|dkrvt|||ƒt |¡s¢t |¡s¢t ¡s¢t     ¡ 
d|¡n,|dkr¢t |¡r¢t |¡s¢t     ¡ 
d|¡dS)Nédr@éér) r5Ú    set_priceÚ get_price_preÚroundÚprintÚ    is_listenÚ
is_operateÚis_listen_fullrÚ get_instanceÚ add_operate)rYrRÚpricePreÚraterrrrU¦s 
 rUcCstd|ƒdS)NÚon_bar)rn)r7Úbarsrrrrv¸srvcCs6t ¡}d |¡}td|ƒtj|dddddddS)    Nú,u    è®¢é˜…:r`éFÚ10sT)ÚsymbolsÚ    frequencyÚcountÚ
wait_groupÚwait_group_timeoutÚunsubscribe_previous)r5Úget_gp_list_with_prefixÚjoinrnr/Ú    subscribe)Ú gpcode_listÚ    codes_strrrrr1¼s
 
 
r1cCs2t ¡}d |¡}td|ƒtj|dddddS)Nrxu    è®¢é˜…:Ú60sr@T)r{r|r}r€)r5rr‚rnr/rƒ)r„r…rrrÚre_subscribe_barÅs
 
 
 
r‡c
Cs¦x | ¡}td|ƒt |¡}|d}|dkr6tƒq|dkry0|d}x"|D]}t|dt|dƒƒqNWWqtk
rœ}ztt|ƒƒWdd}~XYqXqWdS)Nu跨进程通信:ÚtypeÚresubrUrVrYrR)    ÚrecvrnÚjsonÚloadsr1rUÚfloatÚ    ExceptionrK)ÚpipeÚvalueÚ    jsonValueÚactionÚdatasrVÚerrrÚ recieve_msgÍs
 
 
r•c@s<eZdZdd„Zedd„ƒZedd„ƒZdd„Zd    d
„Zd S) rDcs0ˆ|_tj‡fdd„d}| d¡| ¡dS)NcstˆƒS)N)r•r)rrrrâr z(JueJinManager.__init__.<locals>.<lambda>)r!T)rr+r,r-r.)Úselfrr8r)rrÚ__init__ßs
zJueJinManager.__init__cCs>tƒ\}}}t |¡}t |¡tjd |¡d}t|ƒ|S)Nrx)r{)rr5rr/Ú    set_tokenÚget_instrumentsr‚rn)rOrÚs_idr r{rVrrrrEæs  
 
z JueJinManager.get_gp_latest_infocCs>tƒ\}}}t |¡}t |¡tjd |¡d}t|ƒ|S)Nrx)r{)rr5rr/r˜Úcurrentr‚rn)rOrršr r{rVrrrrSïs  
 
z!JueJinManager.get_gp_current_infocCs(tƒ\}}}tj|dtjdd|ddS)Nz    juejin.pyz2022-08-18 09:25:00z2022-08-18 10:30:00)rÚfilenameÚmodeÚbacktest_start_timeÚbacktest_end_timer )rr/ÚrunÚ    MODE_LIVE)r–rršr rrrr.øs zJueJinManager.startcCs t ¡dS)N)r/Ústop)r–rrrr¢szJueJinManager.stopN)    Ú__name__Ú
__module__Ú __qualname__r—Ú staticmethodrErSr.r¢rrrrrDÞs
          
rDcCsFtƒ\}}}t |¡t |¡tj||tjtjtjd}t|ƒdS)N)r>ÚvolumeÚsideÚ
order_typeÚposition_effect)    rr/r˜Úset_account_idÚ order_volumeÚOrderSide_SellÚOrderType_MarketÚPositionEffect_Closern)rYr§rršr rPrrrÚtrades  
 
 r°c Csötj ¡}tjdd}||}tƒ\}}}t |¡t |¡tjt     |¡dd 
|¡dd 
|¡d}t t |ƒƒi}x||D]t}    |    d  d¡d    }
t|    d
ƒ} d 
|    d ¡} | |
¡dkrÆ| | d œ||
<| ||
d krâ| ||
d <| ||
d<qzW|S)NéZ)Údaysr"z {:%Y-%m-%d}zsymbol,volume,eob)r>r|Ú
start_timeÚfieldsÚend_timer>r?r@r§Úeob)Ú
max_volumnÚ latest_volumnr·r¸)ÚdatetimeÚnowÚ    timedeltarr/r˜r«Úhistoryr5rr^rnÚlenrFrBr) rOÚendÚchar.rršr rWÚ_fresultrPrYÚvolumnr(rrrÚ get_volumnss,
 
 
 
  rÂÚ__main__Ú000333Ú002531)0Ú
__future__rrr¹r‹r]r\rÚgm.apiÚapir/rr5r+ÚserverrGÚ redis_managerr2rIÚl2_code_operaterÚlogrrÚ RedisManagerrrrrrr<rr0rZrXr_rgrUrvr1r‡r•rDr°rÂr£rÀrnrrrrÚ<module>sL                (