From a296a7c6f33feef8dfd0e9fecfdfe9a019493944 Mon Sep 17 00:00:00 2001 From: WOLF Date: Wed, 23 Dec 2015 14:20:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9Readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + README.md | 6 ++++++ vn.ksgold/README.md | 3 +++ vn.trader/temp/KSOTP/KSInterB2C.lkc | Bin 504 -> 0 bytes .../KSOTP/KSMarketDataAPI_00_20151207_0.klg | Bin 11575 -> 0 bytes .../KSOTP/KSMarketDataAPI_00_20151208_0.klg | Bin 78710 -> 0 bytes 6 files changed, 10 insertions(+) delete mode 100644 vn.trader/temp/KSOTP/KSInterB2C.lkc delete mode 100644 vn.trader/temp/KSOTP/KSMarketDataAPI_00_20151207_0.klg delete mode 100644 vn.trader/temp/KSOTP/KSMarketDataAPI_00_20151208_0.klg diff --git a/.gitignore b/.gitignore index 858722cd..9b7717bd 100644 --- a/.gitignore +++ b/.gitignore @@ -39,6 +39,7 @@ Release/ *.dump *.vssettings *.klg +*.lkc <<<<<<< HEAD # 不想同步的 diff --git a/README.md b/README.md index a353249a..73bbb7e4 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,12 @@ QQ群号:262656087 相关问题在这个里面问的答复最快。 +## 2015/12/23项目状态 +完成了飞马和金仕达黄金T+D(浦发银行)的接口封装。 + +其中vn.ksgold使用时,必须把ksgoldapi下的SLEdll复制到python.exe所在的文件夹下。 + + ## 2015/12/9项目状态## 中间缺失了相当一段内容的更新,说明文档计划重新做一下了。 diff --git a/vn.ksgold/README.md b/vn.ksgold/README.md index f775b729..fe9517b2 100644 --- a/vn.ksgold/README.md +++ b/vn.ksgold/README.md @@ -4,7 +4,10 @@ 本接口看起来和CTP类似很简单,其实坑相当多: 1. 有每秒最多5笔操作的流控(作者测试似乎3笔就会触发流控),同时似乎底层采用的是同步模式,意味着如果用户调用委托函数遭遇流控限制,则在委托等待的过程中当前线程会阻塞,导致程序出现界面卡死的情况(因为主线程被卡住了) + 2. OnRtnOrder返回的数据字段极少,仅包括委托号和当前状态,且仅在委托下达和委托撤销时会推送,委托成交时没有推送,需要用户自己结合OnRtnTrade的数据还原当前委托的最新状态 + 3. 登录后不提供当日历史成交和委托的主动推送,需要用户自行查询,查询还有流控(1秒/次) + 如果打算自己开发建议参考vn.trader里的ksgoldGateway,可以少踩点坑。 \ No newline at end of file diff --git a/vn.trader/temp/KSOTP/KSInterB2C.lkc b/vn.trader/temp/KSOTP/KSInterB2C.lkc deleted file mode 100644 index a26d34ec1b99585227b584a18455849db1acbd43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 504 zcmVtyV}gEjrj3-Xm)gcb3?KQJ}E0F z4Pi?mGdMan9S8t@YjApX8A-(gVSH(3YA_*COgc_@8*XEF1qKKYb#VuOcXe4(ML|mv z4KTHFac6OUdSG^AZ+rU7ySd)R(Btig`H97f>BcJby`U{C8ay~ALn14Ed<>x%lokNJ-5=jQh4ipH+WbNL=vLS9fn zbyY@GFe5QAFuwY$IgPrYwy*KL*Ot$-sl>bA#7G)Wb#r!i3VKOUKvr;Qegz5$3j+WF z3v+CDe0>#sadRCD0|NpG3Tbs6e{*&jWpoY$1Plfb0}TTTR!~JiKxhmB1_3m&c~ebd uR#tse%%INAny#d>-KWX9_q*!GD*dLYEf63vEioliAs1z2Zb?x~05c?Be#9UE diff --git a/vn.trader/temp/KSOTP/KSMarketDataAPI_00_20151207_0.klg b/vn.trader/temp/KSOTP/KSMarketDataAPI_00_20151207_0.klg deleted file mode 100644 index 884eb09118c15d4587f7af584f233c2c0f345336..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11575 zcmeI2T~Hg>700Dr35+CL=F=c#1TILjEnx%*Vq_!%#zx4<5)uI|7^Ia1!iH2|#499l z;;V3e!O+^)CcFqFP%yH&=0qLX)}}5jobZT5!`!M zS~1|JA1|IA=KRk&d(Y85Ki|7%%g|VNm3_+4a>8aA9?O~>QyJB%jsX1_vY&shwV}T4 z;=u8~b?o`8Bb(acG0%jz`@O3pF2*+G{rk)BetPSR_n!RlC%3*D;Q#9Dp1s=Kl#t@@ zee?eBZobdkb_cGF3|sDe>#g5Bc;)p+x8J_^;HB@s^OtT$*2OwwA34AOfBdYjL%YOf zNhL0OM|>86NfUh>p5L|bI23M zqUTdte9XPAT@4m8qhnIKs^iku3zo*np(*{qh_hZ1I+MPEOEv~iEVpD@2F?b^wcvEP zCDYVz9PPISuOuqxJB6KT8|p0c86u)`^{MJriA|f*V4AWZ?c0t@UQp_f*5PhLi@yB@ zwaPYGTVv3*o(foO>C;Hb$s^_s^O+F>o9@B81_NEqRaNRu+u=*1jE^YQ_6thAsZ+Ul zPIL6?@!V`GuS?{ZH6qU^^B9#K3NA~HueC0(~(E!Fq5 z`}Hjn{esD?sZ-xLYD_AsErS}|I%Ei)K}JF(7Qb= zq}Sr@t4*EKT#B@*@SbTylWS`UfoObPbaOS0Cc~)IaO{ZH*Qz!&(2cTy48<$3=?+Ji zY2=8ZrOLkAC~r^Kr+b6ih&(hYKU}fa>-2_{OLNKmM4a@GuQwXU9m`vfn@;+Xq-_&l zKn9>|6tN#33e;odj5NO{Ny>dDS#&mK#n$pe`Z{@}!88~&3=pUBjM1OY9!hSyr%a8T z&gDpRoRm9FHO5&sfZG$%hKWqBYK3C|%4EQX^<)|%)@pm4{wv+D=lCR~q3um)s|vNQ z!Gs1si>Vg+JNo7Aqqat)>Y_n^xHjRmwDj2)NXomts=L$zjhVE{?C~e)csRl}y_;CHA-yC`(Thf6v4vDly3VX0`y#lVq8F%=3Z`SS6y>^P!lOi*lG2Y} zlVUx%O6k(QE^o-A!_A$;eJ7Q?hqd0ZnONmYFp;dt_5SRw$M;|R!N>1@`78hY&W~UE z^v=WI-@Iqfy8<^Pv@@&Jo|yJ;;_J-1*71)yJh7bvx0p3-k;z_{Hso3IC9{(2S+_S{ zwMb;MQi^gj`Hl&_e1tBC*Cbn9NQ*49pZ8P|p5u39x@^!gdQI1iL5C(@eXRFP-SuU{ z(dq3oH&6C>WT#);kgct?cHo{RA|0zr(Oohs#u zv1#d|W%eoh)}-~3;7b54?lt+kReH;WyjN4vH*LJQMoo|uGIM^@(alvf^=O9;16Fna zEd7uEd1_@$+wN>rJ95(W#@J*?!8T!zas?xFH#zP;{p7=6{Pgj!{`|(@zW(8BuYC8> zlTZHGz;rb8>t`A^hfy0tL`=yKE~lTYTwyyZKSq!W0r~)~=uKM`eIRtA=>w_VD}5lH z6`>E%UIcxB6268=`Y2^w9(@RT+f5&!6=L%4qz}+sV3XfLAD}`keLy;fGk0UrZu)=( z1so_rA5MQv9_8CTf{UXMNK^<{oIXGy-x9*~A*9$h`TzqwWBTCu!RcSbmRJU)H=T$i zAkbPYKXAMPD%jo?!7ChnKx$}g`slGKjy|&gY4m}3`90DH?FkRfFcY3D+rH2T!fAQ4 zpQ8`jjU-$mHv#%UNXyHBqYs1|X#Nku^ns9-7oDRIgc~Tj5Pg8!!Zvl_^brh8VzX>V zxd~D(L?3{aX!?M4;^_mW-7|floE4)Fz+Mb}02022X!<%|5RV9*^}#yy;UIAN#dP2Vm0 z2u2l4#MT@W$W4eoU}TIyiwfb2(g!5u zTSAaN1Qq*5A5eg2Odsq?29tzrb&}t7wyGfFB!fLUfz$$xS-5$D6!6&mES!Bz9mvfK z>gD%FAB-nOltcH+M2trFeV`AN)AFV-OCO9IWsCz_!Q9aFfs&S&0ZSh!H_-ft=>sJz zFFH#fC^t}a0s4Tng>CBK=p)43`6S&zQW@oV)(;gFEG-8ckVmB1m;Twv<#z#&jU zH@BD%QJ@|~B)01+2o@Chqy!F)&xDmRj_c`m7xy7b5)u`{6~`e^$hU+r4hbpt4Tr!0 z><0AgK1AVwW_*T}ggG2yt02%?g~J%S1iKY%i--Uy_9_TgLv#GU7>A&x<3>*TAEGeJ zC?$84ZC`K*;j}y);Bbg`Q^9>undg4kP>H=J0USa|%gcbnA%q)X@X{GTS3%68f{B+G Vox>r78z{OE4uRUjHg#|~^e@u!nLYpj diff --git a/vn.trader/temp/KSOTP/KSMarketDataAPI_00_20151208_0.klg b/vn.trader/temp/KSOTP/KSMarketDataAPI_00_20151208_0.klg deleted file mode 100644 index 25580f5394157fcd6655797c457b078e0968896e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78710 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