以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  高级功能研发区  (http://222.73.7.161/bbs/list.asp?boardid=5)
----  写了个查询对价分批下单的程序,调试失败!请指导!  (http://222.73.7.161/bbs/dispbbs.asp?boardid=5&id=30540)

--  作者:fzfz
--  发布时间:2012/11/10 17:24:16
--  写了个查询对价分批下单的程序,调试失败!请指导!

写了个查询对价分批下单的程序,就是通过预警信号触发分批开仓程序,调试时一有预警信号程序就挂起来了!
    AcID = "12345678" \'执行账户
    PMony = 100000 \'每手保证金10万

Sub MARKETDATA_AlarmPleaceOrder(Name, ReOrder, OrderType, Action, Volume, Price, Code, Market, Account)
  dim unVolume,doVolume \'等待下单手数,每次分批开单手数
  dim ReportData
  dim KKSS \'可开手数
  unVolume = 100  \'计划开仓手数    
   
   Select Case ReOrder
   Case 3\'平空
     while unVolume > 0 \'先平空
         set ReportData = marketdata.GetReportData(Code, Market)
         doVolume = Fun.Min(unVolume,ReportData.SellVolume1)
         call order.SellShort(0,doVolume,ReportData.SellPrice1+0.2,0,Code,Market,AcID,0)
         unVolume= unVolume - doVolume
      wend 

   Case 0\'开多
      KKSS = Order.Account2(19,AcID)/PMony \'可开手数=可用资金/每手保证金
      while KKSS < unVolume \'查询可用资金是否足够,如果资金不够则继续查询,直到确认前面的平仓已经成交为止

      KKSS = Order.Account2(19,AcID)/PMony
      wend
     while unVolume > 0
        set ReportData = marketdata.GetReportData(Code, Market)
        doVolume = Fun.Min(unVolume,ReportData.SellVolume1)
        call order.Buy(0,doVolume,ReportData.SellPrice1+0.2,0,Code,Market,AcID,0)
        unVolume= unVolume - doVolume      
     wend 
     
   end Select
End Sub


--  作者:王锋
--  发布时间:2012/11/12 10:36:00
--  
使用 APPLICATION.MSGOUT函数,在程序的关进位置上调试看看,怀疑你在循环处理语句上处理有问题,导致死循环了
--  作者:fzfz
--  发布时间:2012/11/13 18:11:07
--  

当调用以下几个方法时
marketdata.GetReportData

Order.HoldingInfoByCode2
Order.Account2(19)

是调用时去向服务器请求数据的?还是金字塔事先接收好,在本地读取的?


--  作者:admin
--  发布时间:2012/11/13 18:19:56
--  
金字塔事先接收好,在本地读取的