From 0a504e447b7c26f6e6011223c4c8581b3bec1c34 Mon Sep 17 00:00:00 2001 From: "vn.py" Date: Thu, 1 Jun 2017 22:26:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=8F=9C=E5=8D=95=E6=A0=8F?= =?UTF-8?q?=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vnpy/trader/app/ctaStrategy/__init__.py | 3 +- vnpy/trader/app/ctaStrategy/cta.ico | Bin 0 -> 67646 bytes vnpy/trader/app/ctaStrategy/ctaEngine.py | 2 + vnpy/trader/app/dataRecorder/__init__.py | 3 +- vnpy/trader/app/dataRecorder/dr.ico | Bin 0 -> 67646 bytes vnpy/trader/app/riskManager/__init__.py | 3 +- vnpy/trader/app/riskManager/rm.ico | Bin 0 -> 67646 bytes vnpy/trader/archive/app.ico | Bin 0 -> 67646 bytes vnpy/trader/archive/help.ico | Bin 0 -> 60478 bytes vnpy/trader/archive/system.ico | Bin 0 -> 67646 bytes .../gateway/ctpGateway/CTP_connect.json | 4 +- vnpy/trader/ico/about.ico | Bin 0 -> 67646 bytes vnpy/trader/ico/connect.ico | Bin 0 -> 67646 bytes vnpy/trader/ico/contract.ico | Bin 0 -> 67646 bytes vnpy/trader/ico/database.ico | Bin 0 -> 63038 bytes vnpy/trader/ico/exit.ico | Bin 0 -> 67134 bytes vnpy/trader/ico/restore.ico | Bin 0 -> 21662 bytes vnpy/trader/ico/test.ico | Bin 0 -> 51774 bytes vnpy/trader/{ => ico}/vnpy.ico | Bin vnpy/trader/uiMainWindow.py | 35 +++++++++--------- vnpy/trader/uiQt.py | 2 +- vnpy/trader/vtEngine.py | 3 +- vnpy/trader/vtFunction.py | 33 +++++++++-------- 23 files changed, 47 insertions(+), 41 deletions(-) create mode 100644 vnpy/trader/app/ctaStrategy/cta.ico create mode 100644 vnpy/trader/app/dataRecorder/dr.ico create mode 100644 vnpy/trader/app/riskManager/rm.ico create mode 100644 vnpy/trader/archive/app.ico create mode 100644 vnpy/trader/archive/help.ico create mode 100644 vnpy/trader/archive/system.ico create mode 100644 vnpy/trader/ico/about.ico create mode 100644 vnpy/trader/ico/connect.ico create mode 100644 vnpy/trader/ico/contract.ico create mode 100644 vnpy/trader/ico/database.ico create mode 100644 vnpy/trader/ico/exit.ico create mode 100644 vnpy/trader/ico/restore.ico create mode 100644 vnpy/trader/ico/test.ico rename vnpy/trader/{ => ico}/vnpy.ico (100%) diff --git a/vnpy/trader/app/ctaStrategy/__init__.py b/vnpy/trader/app/ctaStrategy/__init__.py index 0d56f7c5..7c1dbf6a 100644 --- a/vnpy/trader/app/ctaStrategy/__init__.py +++ b/vnpy/trader/app/ctaStrategy/__init__.py @@ -6,4 +6,5 @@ from uiCtaWidget import CtaEngineManager appName = 'CtaStrategy' appDisplayName = u'CTA策略' appEngine = CtaEngine -appWidget = CtaEngineManager \ No newline at end of file +appWidget = CtaEngineManager +appIco = 'cta.ico' \ No newline at end of file diff --git a/vnpy/trader/app/ctaStrategy/cta.ico b/vnpy/trader/app/ctaStrategy/cta.ico new file mode 100644 index 0000000000000000000000000000000000000000..25cbaa73acb29a85a55ff2f27fd2e73996a0e6d1 GIT binary patch literal 67646 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 literal 0 HcmV?d00001 diff --git a/vnpy/trader/app/ctaStrategy/ctaEngine.py b/vnpy/trader/app/ctaStrategy/ctaEngine.py index 9a24a61b..2a2178b5 100644 --- a/vnpy/trader/app/ctaStrategy/ctaEngine.py +++ b/vnpy/trader/app/ctaStrategy/ctaEngine.py @@ -35,6 +35,8 @@ from vnpy.trader.app.ctaStrategy.ctaBase import * from vnpy.trader.app.ctaStrategy.strategy import STRATEGY_CLASS + + ######################################################################## class CtaEngine(object): """CTA策略引擎""" diff --git a/vnpy/trader/app/dataRecorder/__init__.py b/vnpy/trader/app/dataRecorder/__init__.py index aa9f55e0..84020dfe 100644 --- a/vnpy/trader/app/dataRecorder/__init__.py +++ b/vnpy/trader/app/dataRecorder/__init__.py @@ -6,4 +6,5 @@ from uiDrWidget import DrEngineManager appName = 'DataRecorder' appDisplayName = u'行情记录' appEngine = DrEngine -appWidget = DrEngineManager \ No newline at end of file +appWidget = DrEngineManager +appIco = 'dr.ico' \ No newline at end of file diff --git a/vnpy/trader/app/dataRecorder/dr.ico b/vnpy/trader/app/dataRecorder/dr.ico new file mode 100644 index 0000000000000000000000000000000000000000..1ddc8b857059d6f41d87b0dea9634027ad3cfa93 GIT binary patch literal 67646 zcmeI52bf-EnfD)x1VONZpziAGq6mxYWnJ7|u}iTaB_;vV`?O3Z$xJ5GGQH1aW-{r7 zgh1$_g(Ag(0*Zd_=jFHh?XHFOTUm5<*9KTQ-~acV_kQPj&zv*q$wUd);W_OsbAES! z?sHz}j?#Y(4Nm`mlRNYHqui;^xihtB7d!oaR{ci2azy|C=%bJJ-~Y{j`6f5>^H;dG z<#q0+b(>ujMeZ$ceA9&4ldn3pvZ(BDRxVlo$@c1onLYK*wf&84Lj%nn+gG=C-MhNA z`;p8s8b4s4jvP;X(%GpKNFP*tyaPjncE6T2#J!9eIX&;|?$)vL{ z`S^vWy#CbFj*I^9Gp=h%tFkAA{6R8+ZJ zH*RJ7s2LNdys~D|(sy>OXqeo;vaLmIZ&}yT_qC1P13$dFcjy<_^bh}5%L`jpt%<^A z>%iJ*Q_o=3QocNDELl2gSy{65g_Xrie%nw~@$>qHi~qfLLHUy_=9S(o`Dj`+bzbo)kT}O2K{11K9H7#4=p1kKF z_ks7kZ$ee^qPL0n6zTKowH%IQFPdM(l{ksT%hOhp> zyWi*k>cw*xx?4AFb#H&m8OK$ZEIzBdu4&8)yT(=NW;|1Iad6_5PlzpN{8)KNz{ z`EB>UcfQNDRMvRiDV{Oswe8jQ6Ng&5wu|}y6Z02B&S~p;#^Q^O-@=l!{hY7&$S)f@ zS7q9N^goSvxDWQpMaS_QKU^`tY@1?;OQ(G5bEo|5iEsOO;jFj3)qU<`7dZab7ypf1 zfdx}%x(}WE53Z-KnVm;T*U#*2XsMQM|6iMW2l3x|yPmafjN!YfdmviZ-WLrwcSZyC ztx@larl`BBA?jRK8?`T~(Xt|Ht5^}WF0S^BLtAg_A?LL9B=?N%-za`~Qa++`?!+tK z%HOth)Ltl2a4Ui zo{q(vV^_esSh_Tl9{NQLA{N^=##v(;?{HrR>jGQA zcL*27li#bJSK6sK@f`iFN6AmPzc~H%?jwKq4}W&_&pGof|2K=bxAV1&mYhA%)ZV+H zYt?^*_BqKO9cSOhu2s?Mrp~CRdZpK4W9=Ci#mtR$IA-w<_lKO**7t>dCB?!J7-eXe3&@$36nw$@1BzaMgEJ;{Dk z_n>FqB|F}{sM70m!@|V{dL6P(u7`~Mx@<#oUmEXl-~O^k4#+or&QZGTyUXX6RL!_# z(&<~;R=J56e8yGHDRIXhd+eX27<}S`A9lwcbBt4t?k+k1Q!nkTX`D=+ZgxK8@7b@C z&zBsm@92yAYMXtW22^+Q|6sP%XFMp5k?^s%^SfI|2@b%{;a=ef` z>j#p($v{ha)e9?2mV8Aq!Q~%*|KA@k|KQo5`_6a&$;iMlM<3%_t7=`*v{~-i?>+5g z^Uq%0(zR8&_j4h0TZcXCYg>CFbe(H&{yQ8)=H}bssB7xE_O593F~J(W&-%{(Xrt^$ zENgmy;z{`u_Q4{_I=Ou?*qaP6N;aRZD_VSY@f9=9+_m*qH~CYab7fQKxFfx$c(!t0 ze4J`E?z5k`@Ob6#GuC(Y|EsZ18{ySiS?6`q?0d*PTt^1b>#oXrALp-a>s9PO=zRyV z0{P$8!FAD=!CW3_`Cx9`)H4*d<#K=|bK5@H?BUOM@ZY0s*>@`E6kqkh_ntdp$;|mK z`a|UY>J5K+MB0MOKXtMD`}e%x-MDtMTV7oLm&)PSN#~zWW6nNecycs!cr5OoxpbV^ zZ@9V3=X%(TEd#3W2D!dpPw)=+AsbikhX0{tZ!#cxc(!ig;-R^pzv}hWkIp{hO!vuu z_|Oq01IreaI&yk+zqP9FgYxr_XK^Q%@2hE!?fk+xPYZS2ugm8n7ahvqhZ;LPbJK6j z`wPZ2?y>{e0$Z-tI{qL_{|^UylL1EM36ECHnE!zvJ^D{>(uEhhnU_u;_cCy_>RNpb zEpA0=g?sy7zx7znyG_s4?eaCZyd3D-lfzMi8O6J3L=LdS-OE=-*!Eb@N9uV6%yTt9 zbllr~jrjPhWm_~Cq&Tua!na^Ekf9;f3s%*&c>iIx-p0et9{%mBPsz7EwR~>r6)!*O z4K;`7npJ^QG|!y=14wfQwI-CmEcQT}hNlOr`>m=iCe+j-srYh!NX zk;>j=K;sK5OP5|VZ_?CLmd!45YZ}^}^+X&lV{p=mFLRIFw$rn(U9|LdYubBn4Rzht z$;q(y=y@9Zrm|(xD#-@%INY=JeuHd#e{GAmALzH&@iCYidmBR;FgwpaTOVsg&c<58 zd_HYGjP26a1J2&=C$~GK8!UU`~Q&w@h z*xzQn!;v{w;&!;FvG34)4Y?o8ZAt1oF#z@*KE^$hea_~?6%N$;kUe5OVm{(OYD;`3 zwx)IQ^4;6lL(VWY#xbfnToqy_7^%fMX*W@LKxMqBe z`tOEXI$dYYN>^31=rwEFdu|As+dACZDymbtYd*~9eb{p2p459}2kz8wS0?6lOsD-Q z=AO4$5<3huw0XYt_wb&+4wTCa$op*JdvdLh1ig>hFN!p86wUkmRne?VCvQ_s_{u9k zbD5iQ>7+wy0~(hscTG#H-J;p^Pm;giV7$W-{i3%nP3M`vAx00mhwO z-Iz0yKQg~hTuD8ToNue@eLl~JdB%baZ0;SK|M=4T5%%zBnR(fi;fp@>@e?Oqbg`Rw z;b#wt3=~hFjm|TN^Ah#awusdqLhh``?5k4QV-J${K4gz=CJr>#X(RT4+-^1XKgmj% z^ZWG-<|YfU-!`<~$C+9BKfc(P<@Mg!D-Mjb{9ds@!~5Uyu46y<@eADr=Y8~`%D|^T z{z*6O@=3m~r+9z9*pHgSq3xcj(*IHNC~W5T~6k4gJ~gs_Kyq&o4hr(ZH@_LsKbPkfF&PP6&wtIf@Xb{{6x=7rC^83VKM>6}I4L}B-o_g`bkCf=1gy`pyd*#c0TlxW&gSG9wZm_wN z`raAR;eSf9rw&8!RVsVs>B%_HWMH_Z%g@;+<2#cD@&oF&G57R&JYVmX9MShjd>_|> z;yy5B$ChTTCwYh4N0QzfdmHCWyz*;TeEO0%6AR9|Y{~&;Up8yLBj#JWp!8+x$=se~ zkL_lzKAnAiCVTWU%ihDq*94@;X?EW1KA#Qq9@z(SF5Zv0(3mrZjI-9q9s5afoS*Rb z-sT%~8|TXpuqZFwdhy3DIDvTZ(;xoC0g-`sy!|XU<#U&LpRYOGa$WCHb=`jD*7ZfB z^Lu)1EC(}vXGDJR^>8vh568GB&^OAr8*@hN4e~+F*RxJAH~y)-b2h>3!Jh*AoDBSK z)@756H>p0X9s>8KH~htZ%K&paviGX(H~*bj{wS&Y)L~(l)crPb+1NEOD%RumO#EFSp35}PTG1{$4OgH)^d{D z$=Z(Q`Fw7-H+paSe^aN6f4zDF^EE4pIFe(_&8b(X&uL$%$PYhLZ{BzxxC$kCJR z>A|vjyQJRZn~irkQUj)koAX27w$5jBocJeARi!3 zq`#2spT$3ocepQ&cepRfI=OwI*_#~bUW3~&zu?m+P5JaC?t%~QTTXcDYff<=eE+%b z+mC$JDbFvFP8Q_(=qP_l;hn&;aldO~52aCP=f!UW&nWvsY^^d)A zpYnlb-EYa9UUzNNnew&&mehS>w{YIp*73=s*h{C`4?AOSBiDAFdOM7DIMS!d=TI+f zEKXrB?&vys9Wu9BGU*wMZOA&g4*RkAr|}N=rST5;C0Qr84<>u+!z_}6@5m4Q^~}pA zJM6&T{5$8&x6_-?eYeM~?dTm!vd6aPd+;@XTeD&{igHhT8b?U1>x zGgXa3l6t-JN4;mZm<0x74!Wp7TblJ&G$AFjwszF#|t z_mBx#q_Jo2fH=@<`8I~^iRXzU$?ISQW6wFq*jOjWG~VI9G~VI9B?Q=0b^SJbOAS0f6Q1eT&PHu;s)7C@IY3oVW$?cGRwR$%e z#5wvwv-zg?jOr2ci~PVg%@4k0vhK;CXDjQUp0(h_ow)yl(*2(sf7oNonJWwJKI`xd z^&Ym==E&2HxsBwDyr3_MeAcjhIrT!*^>8%S&1F^j*XP(z;d|sz>x}R3x!*?^^YRqj!R`AVf><8uRd0%60 zBkVWoy@*3Y-i7Ni^EUMa^{uFr?`T%s-x;YvF}iE}V07=ztE2mG8;4foX7sG7|-^HI-a&}dLNE@?a-;O ze$7#re&Ql`;t3~?l7Tr>ruz9k-Jg4wbe(6dm-B=tPGoz(lo%^o>eFlG8vvoF8m4Dx`q zK9N_w;uY=-H|%iA_bWs8%)45RKje?@GvAtLuk)ySH-c_LNACl|bi_u@U* zv^4p8LEGZ^-i#!7w#OrTvjdXDa-KVq{CCQ$U*quon%jSc?D6B~&l!;g{C4u5OzL?d zd+a%}H$3y~b3Hrc^JedDB-W>o%lKOjzfbc&TT=Y}X4xR(`XqPT9;mO6c5LmBzWjxa zUcdK>_3mUNCktQFd*8lwm28>rH4*FNQpmp4+wsF`^NqWWvH`o)D|9kF0;iqAQ$pi^ zHDybjxKrosEKk*44@n#d0v-*)P0eMx^DJiZ9O7 z=qBkI1NLv`q$~aWzHOQd(bzIYV8=1dNvZoK9`k^tm z5xJtb!}Q!n*!R`cMt5C5khAl9Y2Q=W?y2k`15Z43wLW_=8mL<-I}qQSfeh#w9^+2$ zbL`~c@6hsg}Tpq z-bW;KU%7?%-yAoa&q#b|%xy%*sNWfL8)3h?X=U`l?Q0H+&S%L5a`3?IYooO-&E6M` zclJ3scyiX|Q(mRToqoz|UFocO-uA1H|6>KVU)P?R48AsAJ%v2 zSiUTp|M|n4__bV zmmk;|-MeETy7jt_=$38m(cQQ7MUUPe$NvYKciQ{ic~eics$*%ic=oJl?!@@sj6+GyLR#%Q>&G8*bpok7d$ z-eu9|HFeP!?if7i@!%adc1LUatNds7v@DLwX3SJS_JN(p3u`>1I2-S9OxOER4(?Hp z@bUBp=y~aGu%+{Dvgtnx`J;dI@?iTtf93Jme&Vq_f7xl~>&Oqh-sg0mJb?EK^V@?5XK=EUk`q-Z)fX^U?cl8`a~LV-9y)*tcP5MRfn|2S)}T zSNs^V=W~bqmPPILWzoVbr>EBUtbUg@hMd#Z4+MMl1V&o^UA5ph>oc6VtLD>piF$4F z&rgRh3{3BBByP{M&)I+SgHZR816~_Ga|^x$^>MFvp1*o`@DWM&%-g2jlXJtm?gCxL z@7{CUDzEp(JUI^a$X*=;8AxLves)hb4j##&g{G&FveM9$T@BO0JDcbzF|!rAxciMy8pofq4F#fHd<7VgdQJwRdH zC*AK--Jka|?u=gdgL!-8puJ+bui>ZFc5d3*wp;%2I8ZXMC+zt={6Jfs=KH3omwVFK z^Eqj}!+i&Xea;8mF!hqpAFCd((-iA{)A+-L`{uazdH#w4@;*Ih_lehSjz84@Fy}Yh zj!rj;d8q&7`yqSQlYSrF-`Ld>J^tXPQM!*j5O;^VKGu3H1J(N+55WHRAl4h}vp6=? zy);_3V6Nu;viXOc)7B3ndu+hhC7-A0xgGD39sjY9*TfcP)aGGo{P6=kPb<`YbQ}N8 zImREp#Dn3z_q;FtdLet_KIV=>{&rqy`WaNj{@5C0#@2fRb|xXX3zpEtJf zXWre|+qk+ZuFsiWzeYWka1Eca<>v&|Ct`Zf$UFi2L;lPMaxBk(XnnL^wE<#+kUw=E zV*Ih#+$Wan#dJv5d{4N9b^sd^))CS^XJ6Rc_ZaM28dWF`NZNpqbK3eLU>_;=dsfS* zHSbd?{x2ARM*26Bu^+V?W6#JO4mEqzeQG|)LpXN_U*-fu_N*gcdG@7N_v78X zskb2COXI`7dv~nbV;Mj%vCYH1RnhI&_eKxhxn6Te8`K|=n=97)+2`yJd$R#6mlYN0 ze;V&_-=ScS{}=l|YAF-P;gCIcnAj}jPfTAhk0amj>-dTh^8Dp5!hFtb0P#SRj=|mQ zw%&^#5qj}W2KanFljGKZ)m6D7dhm|IT90u_8+RuIa37F9HdmKMOXtstim#d;l}?=* zH7(LSh30TJcC|%!Y#Y@4F?}MNy*$J=Up2=)v@OZ=_{^T>#Zi&!0r-HBbK3eLWDkE` zgIT@m!MQW!PfnMN{i*NKt7H0)f43OH_Z+ z&$;w*JodooxG#;p?YmDkVDAg$=L=YfL$^3o%*7U8rTe6>jPx5_+%N5!)auz}?V88c zvo+OM*5>6duI=nQd;9!B*&2Mn?)V>a_Tpc1)vTMv`>P>;Kj$ZZZGNB8$Npj&@*h+T(FPy~HH#LAe|%roxX^oaKj#0a82www zpMFfcUkASMM~98QjpTG3hr8K!IEJym%^?_j{CkhyD~$c%PYCUw46U=owaT< zz_nl1p<0aQWxUSk*jLP25UuI#jdpCi-Y;u9d!l9YiX%N|H(IXwd*U^8cA#_5@(R=S zv=RAhUS5)E`wxfSd)puL|Caba6Y^(%C+y3Dzwh@@%xCNw@%15pxKTGS-Nz4*diwj{kDhtz zDZjA(2kz)v(*7W+Idjq9H7gMVkkBGuc}gE_g-1{_ZIIsN~k`2Ql$ zU;Vqx`y~1M+&{sedon`)aZW#y`@xnTZREoAAO5g5{;+33mN>_BpV;rAJNG>HOS1#` zj=OK}kCx1xo451m_%|MVJkK2Nw*1eJe;obGKYu$~Hoqj67xAZtOAfcEtW(buf93^? zuTt+#!2fWw&+-2+vHy+nM|YXGg%fQ3BK^nK+cS7fzv;;;;P2zQ_#Pe8Yx+V${xGJe z!?-hYF0y3z;&HD=Z*^_7Yp3S#gE{^*#$)Y+KfO7PWlQ{Z$KP)mS{wc64}OqmZtQ>h z^wZHFe)l{5TtyV!wBHu|6i!q|2txS z7UDJPcZK|y`sb~1EWhYn?zy+Tj`NA%!+!9stKzxgH2&90&PrWNaX0;^cmI)l zH{|p1u{dWP!*|@R{(bHZ((kE6MN?)duD@%P?!*4~Iri}X`V(KJKO(N%OJCdT7wtFy ze#IbV(_{X|K9_^Xc~~wUW1l}B&(HYzdgW+Q@l-90xrOt>CC8F@-Y=z7XZw-;;lh4f z%BIbU7EPb~te(^JJMum5x8~kX=3euPqY0tvX5Lp zT*BOs_dQVj>CdDmlbBw=&m28^@BIb*lkDODzrX$sf8G7O4g6KZ-CzAD1}&R0%j>`A zJ9&DvSTSf@b$!&nq9JP2!nnMs+<&(9?i7h%{o<;qy+-%5YGG_v&vB{P<@rlim&_^h zujhD&md@IhQFYOxsQ8Kz{>Vn-(&akV7%z2=QCD5lbBgbt4{Nwd_O_jzzcKDM8sD)- z)9R0^85R5zAgICr(*k`#vcCn-ElY1Q}p`3 z;EHKcS7Z5p^Y3r3kp9og-;YTguyk&5)YsG=^*47!eOef6%9eWD6Y_6aULW|>=9vPU z4|o3k{D1x@YL!mvS&Dw{o?b3=cTaqL<~fQTdRt@vZ?+%)FoS=75&!CviUR)F`_}4) zn14=2&|g@F{Hqq0<@k4qf4r>P9=@9L1^dTd z@gcqg8&Z5_&bLcn;a@FVAF{^=R4vpqzIEL6zeJqdYZ^UU>;rZH8;>my`BxX0=eZky z-aq7z&FHFc^0oo?IsQKq{tGe93Vf;A*`y6 zZGe6|$6xzS`Mxhb_{He^|MuPJ2jBf(^yPOW=&kOA)5tC5YQt{2z; zRr6JTS2km=mU+>9=_59un2&Q7%I~+VDBW+}$0xwQeo2w!u8@DzGCiwKJYmn$y|Ohb zpEW759_+FC#ZzbK z+>!&r9{%(jR4$lTz#k^qabwTeQP&ie$VQv($4)GpSCWqrkpc9-zI<7pzr}Xy-!I?~ zXLxhm^S^SIEwd%z6y3b?(YCy(* zO@BO(*WIN0e#tz~SpCm=d(S%DImSF;W-KS3dwY!9PZ;~dwOnk_cjJ#8Xs)W&Jn>A= zAHC%~VmQ-%8s1g4ckO5nre{Y|~nD_mv z{hQy%zmw-1dq0Xla}Vf#XxsJ7b+7ZrzE96!F}rTMzeql;TYlYaKYYpai1$MNHKi2= z>~-D?!=1g$#BGXr|0avM?Ki$-jm9`@+*9`O=iIA%+V;r@q_GdV7#sN5l01GOwz2)o zi|3Ene)L*PW5V|n`z@8NM@Edl_Yu--pZm-9BLnC)ah$Q&@5TGtPhV480e}2~vA2;J z!RP+D*ngn4>-jZZ{gxK*O`xz?^953umHfqZk7O?lW zzj$#0d-S_e&mS|rXGC7`^Je!MS4nS){fxbhE9E1MJ0pIeYC%~6f7SV^_3Av;{&LGu zTlcp%^{;-NdU1~z+ns6r$6{{BvY6ZcePwSppl?OJY{2eof#ZpNUiYc_=JcL1uII(| z+`RtF_EQTCZ9iXNbd>DJH>4y9*_BY*UTrzv1@`$!Pdt`vvfBS~b z6Dp_8ck1u#O!7CrV~xf*YusP<#DF|sWy`A0G2?*o#2($p?^l;DP%S6+_pnFzmx(jJ z-q@qp%-4kVT=){Zch|S%eLDQ9-J!?Ep0Q%~f~c<%uK9YNkNrxg#q)pWE3hS|_cpHX z=xuFSQtiauDFz@0{G-XhSj_EM7IWKwAlO^op6Be`wY~7(U-JXwjXk>GR;#(UtKwYF z^dH@Ckq@?-kJ#J| z*po+=&sH5L(0!Ov+c(`e_FZ-4>2nKwKfH+Z@b|FK+x|p7m-AXRPc{PmO_bx3O09y{7k!$O%1a{Xsqlf9Cwi4?_K?hc#Kx zwfr#De|iI$XEM8=^Zk!(9bW&kEvwf%JdZyCNkUxBrwOsgHK4*H(n5^eu2k33hvsccC z&(X8}3fRMcxU;Wg>4GwM*Y!6$-RJMb(<$EmthoPnJhO*C{agbrHPX59qxZ0{tI&K4 zbG+zru$bL9?u_UoHNcQP>*#)1%Yl8*$`)S>F!u1p7EtpYZTpq?={WPoEc6Mrs(&P5 z`=4Liz3M{6f9?kTmaBR+o%*&|-XJ;nmo)xa`fmFVh2Gozebt;|KX@|PSysbS`wQ}J+#al~!4fjy9C(h@ytBMyC=)2c_u_uRPjxS`-I`TkmFJ#a9a^J(F z-=s12Io&763;81_`faWP-A4}U7gxr%Kd1ZH0pg3$@3StwU!%5{qi(+XT6_GbQ!i%h z11eTr68eBF=C=QEvX5n8YP4vk=2Ghx9q_rEOnJiID8Fy7E0=yJ;(YAB*c0#3N0wwy zuD)D(K*%1p=qAA(nb3x7zdvv@)abBqVe24ZGE0ebWH?sYoQSHZV zRqSW~^jv=B0Cg;5smp5<6Fkvqqj^IG0xMd`wk9u91L zVnL@X<-e1$p4ormJ!-NA?DZPr0On;v-G^ygbzQ;yJ#48Fx6tQ9|F+IyA^s<3B+d`@ zzhchlxKFb16V-g)E&K0ox_av<{<;U>={`K_0msP(+??dj_IPFw_i(`;&}Yki7tFyo zR+dB^4dvc8z?E7Ju{#Uv>_f*nr?IkBz1Rz)@|iKSeD7X@JNCYG`kbgru}Sb=}s{OXlj)%cRX`AIFThjo5SYI_$jZy^X|&X7i0J zjFT}x{4;d_-fe3)o=Cm-fgN{c^5;PPf^w&OF`aC{Bys=kpCWschf$nU*uxxuPcMFz z?x|xAuUCC|$$323Q`;d1AjiXIr?HRw{tNSb*wV8{ZfX!Nb-fO z1Pk(ztoKOweIL?3faV1+mLGUFO$M@<+x{%(wtqaZhfn#;c@cAI)Kw~#i>=T-c=S|p z-yQb^C7Fl48^#{lpbrmbY3zyh()>N_sqa(wPqN1kH0wDS#?eL}^Cj{v~pwYOuZANrsY`Gq?48wm284Z#`bTZc6eu##y5=&Kk!9dvu(@e|J$UU$3k}qmF%+rTDZ+g$?V&9YO*~U-cPePuoQ$tGXJ$8z} zgP1TpU%G$&jhnVi*t%weyZeS)GI^&R(C_#W15g`2SDb%rGLXgG_GdA-{o{o_{LxE# zFg$nI=lC1vdqg-1F@5-Lfal%cQYK@3YurOXB&R5q}R?@Q_>-blCYr}j#jX(B)m_4noXZ}9T=A-x21CucvJo$Wby8`w)-`^wV=K~65WldM# zN|@iY`Pxyn-aVBC<^}cJOis_|d7WwlU(Mpq{w(IUKV)CIr#0P!5bMF+7O(%huHK%D zv*~+}u4kwAGk4Cs+A=ZmHa>R`cN%l{#r(>=El%pZ*?i*sv{;XN4=k|@NnK{%2wPHe zRbjl3{YkU?s`Edg8vkkN{k3a1?kVn3=WXs??aHUj^08odW&LNw@)v0`V2rcI@yH$- zfERWg#@v5Zt$s>aqi5uMc0V5HW-;d&@jdrtQJ+o5_n{n+-zRfCz5|PAuXr=b9@!)& zEzo<#hQu!Pbtcc3-T%4ry^GX8=vI_1bzi>kp;27-X2-hL9yeIu<|GTp==rGKN&Z>P zZU1;>Z#KYc`Q-WGV*AJBE^cs#tMy@ryiMnc^J>-Sn^xP2ZANLT-V^_&<@vl%jbtJ% zK9s+2|MLA09ew?V&F+rtZrU5vnddS$M4y=E2VN_lyG#a*an^XGus7DpG0EQS0KR~p zdg3vgk4tj5ZRT=(JwK=CrtdZq>!ta7*iy?&&h79z;>NVsDBgeQnxS>4Zd|q6Z5`f_ z$#ZWH=vn_x&u;bkfS%uau3~{7W-+(@qu6Uc=5W+@@_H`)E?AepPVz3;&Yf?5omvca zJ)XZnEEeb5BR$&2+eUhEspS)6gmXE@9UZn>VA6)eex-i*W)yq9hS-76PrgPz|EUdq zL+_IexSobq_t^ap?=9vr&!>%-f9gDI zdsa+No5%KZMAaQE=w>c$SI-)?Yv&f~GF3$%*+ACF}A#8lYWCdF;k^?43o zXKj;bO-?w%n?8$?TJI?Cs^b#3Q#YjNGUT0H$9DUgZh|2^`3(GhQtx4pOtvW>3AwYb z9)Lf}=QrJV>mA2zTem57ZhsH)?$K#_7Oc}VoRNc*yOz~m8}dKW^qyKu7kVw7&MyJy zkh!fJd-8Z_2u#h%xymw$`6pLF%$ z8u|Q@p1wVTxeq68Q7qu+h!qd6s%?3ldIs+^?u^KT&+mDLVz}gTdFF1COV%8Y?N83n zB)1FvdeYC^c8b6E{ByqC_-2i)bHUGre#1ec^>RpVzML?A@t&?=<;+x2|`3>e|WB-nik8M7F0N>xP`_QTB zQJ>?UJ$MrvX0n$JSgII;{vTh<%{_C|nA_MYzvJtAiP{cwKn#&)^F8~H-Y-e#-y*;7 zB(rYU&O^iAq-9grfGeLg(}}(8K=aw^8+;PIFVOjM%pU&Kcl+!9w)wD@mTKlxe#|8c7Kmgm6>zsy3O24k*$*rOflxbaRK ziP?~qd@U%i@1t!#^Y^}IH(~G5dAeR+{-lHWKmA^a`;UMB zftLZ@^Zqw_mf~Y(+q1?jTW|Z5Ha@w%KQ`akCu=)t+i9F_ALk=0#C_!X_y_EKcu!vJ z>qq=OJzK>0zIQ{f4Sl_5FBzh)msZ=!v43>a!0_9-e}jK_Tz_Edd;2RMl4YlRik!GO zJ*)l<*@651q}b~@>ShPfPnhEy=)I=43+Ht1@qS_m<_^>P^}Gy77Rc}L8F8FBI@VL1 zzf=DH&FKA!?j`Q-8*klTYzOr9i)PJtS6*Y!V*0g`fj@?FVEUakCiOhI zeK7Ps`JSG0?z#EsH@<FFbJA2B3ceJv-&)>CVw zZ>PSTJ^}UhCwg~s?0=>EHCAda=Vi?0YTvkJZ?ds;L8<4j`y!m?Q;$_FHBBskXq?l= zB&5Z| zy55Qj=eUMt)ko_(T_~=PCs`-A4>o(R|MI_azg6L!9&sC-kqvBgOI3}p@pBIzz2bgO zSN@y$ff&&*3HBxr=sVn#_hi94Tol)Td41pDC;$2D-#D6DzVZNf?=80CaiA=kDQY?>$@8^ZSg&OyY7jf&60LKkJNojRVSEz z=@fi{{}U7&zgO4vI`RIM$-$vw4@($V=kBuOV=+hXb^OhZ+-+`|>u z3gYKz!+UqkbN>Aq_2+Ee&_DFa8?WAaf?ngfukPskv*wdAU_RZ+Q<-uoPW%NjjK>M!H;efvRkwL9e-XOQ zeOF)l!b5(J_D?;g&!%`_jtn%mJM~z)w&itR7R26N_OXkc`e#nm+|8MihfC$Ro8-TD zC>Q^xWa1gwiRZNZG08mK=H7q$wZj_UsCD(%qT6EqjP(1Pis5#Mca!4xOO>;oDW87g za^*DAdwdMo-lh2M63In{dbb9o=eH?#e@t@oZOO=gX!)s@Uo4rk@LBo!=hR2_D?JM=ieara_8RY z4@Xbg`4i&p2HVcPp>5{g@P(1>dS39Gk?l9Koqzk>H+*X3xc`7%BisH18b-GLpFFbZ zKQQ<>Jsm0dYdG(`f{*uqQSkAjw{?x53g2H}XjizcFVqlj>kB2f!^3>R#CE~g)fdiR z{P?`{lH0-64Ta|)wY%-Y(_h?r@d_N; zE6`B*al4h*U4`fGRv(@!JbyxRJE@P!?W8^@x0CiDxt+8p$?c^58D*~;!aqRvY*)A~ zd-qhhEqhq-2gqI~w+sG&H;%T)1z%A1y5I|HGyH LK0W_}`1Jn|5jZ`@ literal 0 HcmV?d00001 diff --git a/vnpy/trader/app/riskManager/__init__.py b/vnpy/trader/app/riskManager/__init__.py index 4ace680d..c58c8c61 100644 --- a/vnpy/trader/app/riskManager/__init__.py +++ b/vnpy/trader/app/riskManager/__init__.py @@ -6,4 +6,5 @@ from uiRmWidget import RmEngineManager appName = 'RiskManager' appDisplayName = u'风险管理' appEngine = RmEngine -appWidget = RmEngineManager \ No newline at end of file +appWidget = RmEngineManager +appIco = 'rm.ico' \ No newline at end of file diff --git a/vnpy/trader/app/riskManager/rm.ico b/vnpy/trader/app/riskManager/rm.ico new file mode 100644 index 0000000000000000000000000000000000000000..4b376934c3f7d350ca3577567c6e2a39ef2812ed GIT binary patch literal 67646 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 I4|O^Je^F4ot^fc4 literal 0 HcmV?d00001 diff --git a/vnpy/trader/archive/app.ico b/vnpy/trader/archive/app.ico new file mode 100644 index 0000000000000000000000000000000000000000..152292aa7a52714d0b302f4c0275c4016e1fdef9 GIT binary patch literal 67646 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 F{{aYmoG1VQ literal 0 HcmV?d00001 diff --git a/vnpy/trader/archive/help.ico b/vnpy/trader/archive/help.ico new file mode 100644 index 0000000000000000000000000000000000000000..2cff09c9d5ab19b6804997f4564a4d7cef792c44 GIT binary patch literal 60478 zcmeI5eQ*?a8OJXz{-HDCjAPyt5|R}2N=FhxNFhoqv}(P}<&E$bND)FYr3`P@nrWdO z8XyS;YLh_F(joz>&NMHKP8o#S0%6Nf&Z^qYr=n%P3e6mQ&($C_9p8v{kaBnrFm`zkJ{qq0~bi9sgDc{ECbjQmx! z{g5JX`WWgU>N=_qb%Uj93@FAFYcondG>MY5{g5hgO7#LOq%p8zyvtD%bmXm~ZHJVG z(_WOouy|rLm~$ghQHoSNF~+G4Sn_Cl<@G52UVW91gyOtt$2bjO+=In&xt(DQ)L8Oi zXHy;Q-M$IhWs1tKteOFqq2E|mmgF^hTrDRotwdeece#ZgT-+a*4IgO zQX82+BO5-x((6|&Tk6+1alCM*$FF*fzR|w6M%6hkcoaEaWsYjLCFZDRbVFCS5jftx z`FFVeNe}8z#@D}3g026iTLUoy$G+2B;o|OZ!KFQUhS!z-MR4aoXAH^l#>pn=-IWO! z-xzOj<-q0k0=RwsG;`E7>w6sUFh`yHl{p%t&t;CxQC@yrEQL87%9A_gbJWfQgxhgW zxbGh??H&)89puTQj^$|HQ#r@Fyp{8`z4Gii25G;$Z%?csR5v zL-40#>^^)g2kK@f3FRuWZ0!#c;dE;@IQorz`1XbjsQOO4P#4wt^QEayWgP1a-aK<8 z4x1OHfH{w@!NkJM!ZC$7vme=yqSNF}*^hzv&DXZDd3!cA{wM{WpPf8BZiB{TXid+}N`}`~KHz0Mf=rH+kz>o--Z*yZk>mTXWDqhVeYr% zVIGbl)~eQRMemJl4^LJf1r$IL@KG+`5(y%*$;= zUX+`26y@ovQM$^@(Xq`L%;(fE7z;nGNP=fItY^xTVCV9*!1Fozu>;oJ$g=W9HC}V% z$Wk}?RpKb-bIjqA&moRO@6#bx-sB0S)~q=zYUWRAX$Y@9#W+HsCC_=$Z5`_ULY6>yyR^%Cp%pEp?- zeCAcoF0?PPA4Tt|F_p_P&Sssyc&&9I6d}iHE_xW3b5Ic|J2;m)=BNfgu}+yBCyfDX z>0ABQ>d$W@D_7mcb-zK4Vvb^5Lp@c%v8)rU)wcjyNvTt>9O=2#dN_ylz8?>7j>NC~ z#dK&`m?GTAO82sAO%3>)wk}D96R$eIo4}cCcypw80yNjAYWn_FdUpi9FNEIfLhlE0 z<|i&Q$Cjtkg!@J&)r-sLVm}cD%+U{y1@UnF@ByjEy@q^UOZ{pv=SDI| zjJ#q$BFCeLxI<9KuTp_y5?IT+yq!OG>+$^2tzR`f$HYOabx$wmbB-gg9v7X! z_>ZR7@0Ztqdo5INA{z=HH^%hntsIRf0*z(rdN474&w6;W$i&NjunM*mFUt4 z-=&SN4p53wd?8s2i8-Py$O`bDR_p zf9T#1cRs%bw{CtqqT0H4SF1#O!^2*3dN(XTLD3m9Rnta})Yn~kYeyFkJ z!^(NnVa42$Rn_!Nd`?+p0fek4T>_^XST=KYF>R4R^>)4OX z(W$-a^1QEGlz2^bCFebXo1B4sLl1Z_)SC*!>U2A`^2LJXaUG!sI{vPT+l&6m4!HX3N8svjXBb}BIxKLf@0=ky+WJ3(|K0j0>R(}?PhfDM-;f;L{-`iq5t@EA z2R^>q>sNGJ>eqmILL^=jh=IzY6u5Av$FF*fzLAO?JA~^ocwMGydKO%}{E=UwWRCK} zwy&*8jr)-4dU6|aB$ZB1fX?k;)3&YyRv-|@S6eyEMB5FhFX0~$By!jX8Uqqd;Vp{}F)P&Zhr#em{VaWM_W~7>`ED#pSge)x#Ru7ic}{A6@sSuKQc1`)k+o{|6v2OKkuE literal 0 HcmV?d00001 diff --git a/vnpy/trader/archive/system.ico b/vnpy/trader/archive/system.ico new file mode 100644 index 0000000000000000000000000000000000000000..0b23e1b3068d873b2455fd8f660041319988bff3 GIT binary patch literal 67646 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 M>xR1idHIk38&_$W4FCWD literal 0 HcmV?d00001 diff --git a/vnpy/trader/ico/connect.ico b/vnpy/trader/ico/connect.ico new file mode 100644 index 0000000000000000000000000000000000000000..ad638cb48806d87e58d624bf85273d6c7578d985 GIT binary patch literal 67646 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 b^cOY`Ue7PEF4rXtOQTOK59HRByMFWkXz8#S literal 0 HcmV?d00001 diff --git a/vnpy/trader/ico/database.ico b/vnpy/trader/ico/database.ico new file mode 100644 index 0000000000000000000000000000000000000000..6ad2845ebfc2361c42252d719f68d9772499843b GIT binary patch literal 63038 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 literal 0 HcmV?d00001 diff --git a/vnpy/trader/ico/exit.ico b/vnpy/trader/ico/exit.ico new file mode 100644 index 0000000000000000000000000000000000000000..1ca8be52d3a0be1da50c7e903ccd3a688c4498b5 GIT binary patch literal 67134 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 literal 0 HcmV?d00001 diff --git a/vnpy/trader/ico/restore.ico b/vnpy/trader/ico/restore.ico new file mode 100644 index 0000000000000000000000000000000000000000..be9c617543e9ea16e19a84c5f964008763aae446 GIT binary patch literal 21662 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 literal 0 HcmV?d00001 diff --git a/vnpy/trader/vnpy.ico b/vnpy/trader/ico/vnpy.ico similarity index 100% rename from vnpy/trader/vnpy.ico rename to vnpy/trader/ico/vnpy.ico diff --git a/vnpy/trader/uiMainWindow.py b/vnpy/trader/uiMainWindow.py index 4b03e4d7..c49e8234 100644 --- a/vnpy/trader/uiMainWindow.py +++ b/vnpy/trader/uiMainWindow.py @@ -2,6 +2,7 @@ import psutil +from vnpy.trader.vtFunction import loadIconPath from vnpy.trader.vtGlobal import globalSetting from vnpy.trader.uiBasicWidget import * @@ -100,34 +101,26 @@ class MainWindow(QtWidgets.QMainWindow): self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) sysMenu.addSeparator() - sysMenu.addAction(self.createAction(vtText.CONNECT_DATABASE, self.mainEngine.dbConnect)) + sysMenu.addAction(self.createAction(vtText.CONNECT_DATABASE, self.mainEngine.dbConnect, loadIconPath('database.ico'))) sysMenu.addSeparator() - sysMenu.addAction(self.createAction(vtText.EXIT, self.close)) + sysMenu.addAction(self.createAction(vtText.EXIT, self.close, loadIconPath('exit.ico'))) # 功能应用 - #functionMenu = menubar.addMenu(vtText.APPLICATION) - #functionMenu.addAction(self.createAction(vtText.DATA_RECORDER, self.openDr)) - #functionMenu.addAction(self.createAction(vtText.RISK_MANAGER, self.openRm)) - appMenu = menubar.addMenu(vtText.APPLICATION) for appDetail in self.appDetailList: function = self.createOpenAppFunction(appDetail) - action = self.createAction(appDetail['appDisplayName'], function) + action = self.createAction(appDetail['appDisplayName'], function, loadIconPath(appDetail['appIco'])) appMenu.addAction(action) - # 算法相关 - #strategyMenu = menubar.addMenu(vtText.STRATEGY) - #strategyMenu.addAction(self.createAction(vtText.CTA_STRATEGY, self.openCta)) - # 帮助 helpMenu = menubar.addMenu(vtText.HELP) - helpMenu.addAction(self.createAction(vtText.CONTRACT_SEARCH, self.openContract)) + helpMenu.addAction(self.createAction(vtText.CONTRACT_SEARCH, self.openContract, loadIconPath('contract.ico'))) helpMenu.addSeparator() - helpMenu.addAction(self.createAction(vtText.RESTORE, self.restoreWindow)) - helpMenu.addAction(self.createAction(vtText.ABOUT, self.openAbout)) + helpMenu.addAction(self.createAction(vtText.RESTORE, self.restoreWindow, loadIconPath('restore.ico'))) + helpMenu.addAction(self.createAction(vtText.ABOUT, self.openAbout, loadIconPath('about.ico'))) helpMenu.addSeparator() - helpMenu.addAction(self.createAction(vtText.TEST, self.test)) + helpMenu.addAction(self.createAction(vtText.TEST, self.test, loadIconPath('test.ico'))) #---------------------------------------------------------------------- def initStatusBar(self): @@ -172,14 +165,20 @@ class MainWindow(QtWidgets.QMainWindow): displayName = gatewayName actionName = vtText.CONNECT + displayName - - menu.addAction(self.createAction(actionName, connect)) + connectAction = self.createAction(actionName, connect, + loadIconPath('connect.ico')) + menu.addAction(connectAction) #---------------------------------------------------------------------- - def createAction(self, actionName, function): + def createAction(self, actionName, function, iconPath=''): """创建操作功能""" action = QtWidgets.QAction(actionName, self) action.triggered.connect(function) + + if iconPath: + icon = QtGui.QIcon(iconPath) + action.setIcon(icon) + return action #---------------------------------------------------------------------- diff --git a/vnpy/trader/uiQt.py b/vnpy/trader/uiQt.py index be94b4ce..c8ca4f0c 100644 --- a/vnpy/trader/uiQt.py +++ b/vnpy/trader/uiQt.py @@ -33,4 +33,4 @@ except: qApp.setFont(BASIC_FONT) # 设置Qt图标 -qApp.setWindowIcon(QtGui.QIcon(loadIconPath())) \ No newline at end of file +qApp.setWindowIcon(QtGui.QIcon(loadIconPath('vnpy.ico'))) \ No newline at end of file diff --git a/vnpy/trader/vtEngine.py b/vnpy/trader/vtEngine.py index 108dd6be..b8bc63dc 100644 --- a/vnpy/trader/vtEngine.py +++ b/vnpy/trader/vtEngine.py @@ -78,7 +78,8 @@ class MainEngine(object): d = { 'appName': appModule.appName, 'appDisplayName': appModule.appDisplayName, - 'appWidget': appModule.appWidget + 'appWidget': appModule.appWidget, + 'appIco': appModule.appIco } self.appDetailList.append(d) diff --git a/vnpy/trader/vtFunction.py b/vnpy/trader/vtFunction.py index 4cb258bd..3a1d76d6 100644 --- a/vnpy/trader/vtFunction.py +++ b/vnpy/trader/vtFunction.py @@ -9,9 +9,11 @@ import decimal import json from datetime import datetime + MAX_NUMBER = 10000000000000 MAX_DECIMAL = 4 + #---------------------------------------------------------------------- def safeUnicode(value): """检查接口数据潜在的错误,保证转化为的字符串正确""" @@ -28,28 +30,27 @@ def safeUnicode(value): return unicode(value) + #---------------------------------------------------------------------- def todayDate(): """获取当前本机电脑时间的日期""" return datetime.now().replace(hour=0, minute=0, second=0, microsecond=0) + +# 图标路径 +iconPathDict = {} + +path = os.path.abspath(os.path.dirname(__file__)) +for root, subdirs, files in os.walk(path): + for fileName in files: + if '.ico' in fileName: + iconPathDict[fileName] = os.path.join(root, fileName) + #---------------------------------------------------------------------- -def loadIconPath(): - """加载程序图标路径""" - iconName = 'vnpy.ico' - - # 首先尝试从当前目录加载图标 - path = os.getcwd() - iconPath = os.path.join(path, iconName) - if os.path.isfile(iconPath): - return iconPath - - # 如果失败则从vt根目录加载图标 - else: - path = os.path.abspath(os.path.dirname(__file__)) - iconPath = os.path.join(path, iconName) - return iconPath - +def loadIconPath(iconName): + """加载程序图标路径""" + global iconPathDict + return iconPathDict.get(iconName, '')