以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  高级功能研发区  (http://www.weistock.com/bbs/list.asp?boardid=5)
----  关于order下单的问题  (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=69131)

--  作者:dwjgwsm
--  发布时间:2014/8/22 14:25:48
--  关于order下单的问题
忽然想到一个有点"杞人忧天"的想法,比如下面的语句:

result=order.buy()
if result=-1 then ....

order下单之后,如果回报较慢,会不会出现明明下单成功了,但由于程序运行速度过快,以致于没有等到成交回报就返回,导致result错误返回-1.可能出现这种情况吗?不知道这个担心是不是很白痴


--  作者:王锋
--  发布时间:2014/8/22 15:44:44
--  
不用担心,返回值是你的报单ID,不是成交回报,报单ID不用等成交回报的
--  作者:dwjgwsm
--  发布时间:2014/9/10 13:25:24
--  
这个Result=ORDER.BUY(....)我感觉肯定有问题,我今天早上,不断重复开仓,就是因为下单成功但Result错误返回0造成的.具体来说

  BUYcon=Document.GetPrivateProfileString("OrderCon",tLabel & "BUYCon_" & tIndex,"","D:\\SystemSet.ini")               \'本次触发条件
  BUYconL=Document.GetPrivateProfileString("OrderCon",tLabel & "BUYConL_" & tIndex,"","D:\\SystemSet.ini")            \'保存的上次触发条件,以便一根k线一条语句仅执行一遍

  if BUYcon<>BUYconL then
    order.OrderQueue = 1
    orderlog=Date & " " & Time & ",账户:" & tAcc & "," & tMarket & tCode & "在VBABUY中下单,手数:" & Num & ",原因:" & BUYcon & "<>" & BUYconL   \'每句下单命令前都要写入下单日志便于查找原因
    Document.DebugFile "D:\\OrderLog.txt",orderlog,0
    Result=ORDER.BUY(1,Num,0,0,tCode,tMarket,tAcc,0)

    if Result=0 then
       orderstr="账号:" & tAcc & "," & tMarket & tCode & "," &  Num & "手多开下单失败!重点检查账号是否登录"
       JIANGE tCode & "orderfail1",orderstr
       exit sub
    end if

    Document.WritePrivateProfileString "OrderCon",tLabel & "BUYConL_"& tIndex,BUYcon,"D:\\SystemSet.ini"    \'我现在是把这句放在if Result=0 then前面,因为发现有时下单成功却result返回0,以致执行了exit sub,后面无法写入tLabel & "BUYConL_"& tIndex,从而不断重复开仓!
    ordermsg tCode,tMarket,Num,1

  end if
[此贴子已经被作者于2014/9/10 13:26:02编辑过]

--  作者:dwjgwsm
--  发布时间:2014/9/10 13:25:44
--  
请你们再测试一下
--  作者:王锋
--  发布时间:2014/9/10 22:25:16
--  
是否方便将你记录的日志也发过来,最好是别用INI文件,我们需要是那种连续记录的日志,这样可以对历史下单记录进行分析的
--  作者:王锋
--  发布时间:2014/9/10 22:43:42
--  

还有, 下单失败明确的返回记录是 -1, 只要不是 -1值, 都是成功标志


--  作者:dwjgwsm
--  发布时间:2014/9/10 23:27:40
--  
帮助上不是写着返回0才表示下单失败吗?怎么又变成-1了?

返回值:         下单失败返回0,否则返回本地订单ID(可能包含负数),通过此ID可以修改订单或者撤单等等操作


日志我明天上班再发


--  作者:王锋
--  发布时间:2014/9/11 10:16:31
--  

order.OrderQueue = 1

 

看到你这句话了, 使用队列下单时,你将无法获得及时的成交回报的,只能是返回0, 这个我们帮助没说明清楚,后面会补上的