写了个平仓过程,现在遇到一个小麻烦,查了下百度说上期不支持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
上期没有市价指令,金字塔做法是做了加N个变动价位的处理方式,请参考 http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=49 问题35
你的代码逻辑我们是很难找出问题的,建议你多使用 APPLICATION.MSGOUT函数,在程序中通过消息输出的方式多调试一下
今天测试,全部采用market order平单,如果是金仕达模拟帐户,什么市场都能用。
但是实盘出了问题,Call Order.Sell(1, BuyHolding, 0, 0, Code, sMarket, sAccount, 0)这句执行了但没效果,测试品种是ER05和V05。
模拟正常实盘失效,会是什么原因呢?
另加一点,无论是实盘还是模拟,撤单命令Order.CancelOrder都是正常的。
打开交易日志,看看日志上面对实盘的委托下单,都是什么样的委托参数
以下是引用王锋在2012-12-7 12:15:33的发言:
打开交易日志,看看日志上面对实盘的委托下单,都是什么样的委托参数
2012-12-07 10:37:46.989 【下单】xxxxxxxx 账户无效或该品种无下单连接期货公司
V2.93 xxxxxxxx是实盘账户。
[此贴子已经被作者于2012-12-7 12:55:14编辑过]
以下是引用Marcus在2012-12-7 16:43:55的发言:
那怎么得也得等下周了
V2.94依旧不能对实盘账户平仓
请问v2.941在哪儿下载?