以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  VBS调用Order指令平仓的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=31246)

--  作者:Marcus
--  发布时间:2012/12/6 22:34:31
--  VBS调用Order指令平仓的问题
写了个平仓过程,现在遇到一个小麻烦,查了下百度说上期不支持market命令。我现在调用market命令,金字塔底层会帮我自动转么?
另外,如果我要平仓,应该从序列后面开始平,这样理论上不会出现序列更新后地址变更造成的冲突吧?

\'源代码如下
 Sub CloseAllPosition(sAccount, sMarket)
    dim i
    dim BuyHoding
    dim BuyCost
    dim BuyTodayHoding
    dim SellHoding
    dim SellCost
    dim SellTodayHoding
    dim PNL
    dim UseMargin
    dim Code
    dim Market
    
    On Error resume Next
    
    HoldingCount=Order.Holding2(sAccount)
    If HoldingCount<=0 then
        Exit Sub
    End If
    
    For i=HoldingCount-1 to 0 step -1   
        Call Order.HoldingInfo2(i,BuyHolding,BuyCost,BuyTodayHolding,SellHolding,SellCost,SellTodayHolding,PNL,UseMargin,Code,Market,sAccount)
        If Market=sMarket then
            If sMarket="SQ" then
                If BuyHolding>0 then    \'LimitOrder平多
                    Call Order.Sell(1, BuyHolding, 0, 0, Code, sMarket, sAccount, 0)
                End if
                If SellHolding>0 then    \'LimitOrder平空
                    Call Order.SellShort(1, SellHolding, 0, 0, Code, sMarket, sAccount, 0)
                End if
            Else
                If BuyHolding>0 then    \'MarketOrder平多
                    Call Order.Sell(1, BuyHolding, 0, 0, Code, sMarket, sAccount, 0)
                End if
                If SellHolding>0 then    \'MarketOrder平空
                    Call Order.SellShort(1, SellHolding, 0, 0, Code, sMarket, sAccount, 0)
                End if
            End if
        End if
    Next
    
End Sub


--  作者:王锋
--  发布时间:2012/12/6 23:48:12
--  

上期没有市价指令,金字塔做法是做了加N个变动价位的处理方式,请参考 http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=49 问题35

你的代码逻辑我们是很难找出问题的,建议你多使用 APPLICATION.MSGOUT函数,在程序中通过消息输出的方式多调试一下


--  作者:Marcus
--  发布时间:2012/12/7 11:38:39
--  
 今天测试,全部采用market order平单,如果是金仕达模拟帐户,什么市场都能用。
但是实盘出了问题,Call Order.Sell(1, BuyHolding, 0, 0, Code, sMarket, sAccount, 0)这句执行了但没效果,测试品种是ER05和V05。

模拟正常实盘失效,会是什么原因呢?
另加一点,无论是实盘还是模拟,撤单命令Order.CancelOrder都是正常的。

--  作者:王锋
--  发布时间:2012/12/7 12:15:33
--  
打开交易日志,看看日志上面对实盘的委托下单,都是什么样的委托参数
--  作者:Marcus
--  发布时间:2012/12/7 12:54:21
--  
以下是引用王锋在2012-12-7 12:15:33的发言:
打开交易日志,看看日志上面对实盘的委托下单,都是什么样的委托参数

2012-12-07 10:37:46.989    【下单】xxxxxxxx 账户无效或该品种无下单连接期货公司

V2.93 xxxxxxxx是实盘账户。
[此贴子已经被作者于2012-12-7 12:55:14编辑过]

--  作者:王锋
--  发布时间:2012/12/7 14:38:15
--  

是否用的2.941最新版?


--  作者:Marcus
--  发布时间:2012/12/7 15:22:58
--  
以下是引用王锋在2012-12-7 14:38:15的发言:

是否用的2.941最新版?

NO, 老的v2.93


--  作者:王锋
--  发布时间:2012/12/7 15:48:35
--  

用新版试试


--  作者:Marcus
--  发布时间:2012/12/7 16:43:55
--  
 那怎么得也得等下周了
--  作者:Marcus
--  发布时间:2012/12/10 10:54:31
--  
以下是引用Marcus在2012-12-7 16:43:55的发言:
 那怎么得也得等下周了

V2.94依旧不能对实盘账户平仓
请问v2.941在哪儿下载?