王峰老师:我通过方正证券极速交易系统,同样用Call Order.Sell(1,holding,0,0,Code,Market,Account,0)指令平仓,在通过MarketData_ReportNotify(ReportData)检测信号后自动发出平仓指令,发出的下单指令记录是:2015-06-01 13:16:29.232 【下单】603883 价0.000000 量2000 买卖1 类型1
开平2 账户XXXXXX Formula 1,因为其中开平2是平今,所以股票成交不了,我通过单条手工指令下单指令记录是:2015-06-01 13:31:23.554 【下单】603883 价0.000000 量2000 买卖1 类型1
开平1 账户XXXXXX Formula 1,又变成了开平1,所以股票成交了,我想请教王峰老师,为什么发出同样一条平仓指令Call Order.Sell(1,holding,0,0,Code,Market,Account,0),只是发出的方式不同,会有平今仓和平昨仓之分,怎么才能限制是平昨仓,即开平类型为1而不是2?谢谢!
要看具体怎么个不成交,建议你把日志贴全一些,这样我们也好去分析一下
[此贴子已经被作者于2015/6/1 13:56:11编辑过]
2015-06-01 11:29:57.399 【下单】603883 价0.000000 量2000 买卖1 类型1 开平2 账户31327510 Formula 1
2015-06-01 11:29:57.399 【下单】603883 价0.000000 量2000 买卖1 类型1 开平2 账户xxxxxx Formula 1
2015-06-01 11:30:01.845 【下单】603883 价0.000000 量2000 买卖1 类型1 开平2 账户xxxxxx Formula 1
2015-06-01 11:30:01.861 【下单】603883 价0.000000 量2000 买卖1 类型1 开平2 账户xxxxxx Formula 1
2015-06-01 13:16:29.232 【下单】603883 价0.000000 量2000 买卖1 类型1 开平2 账户xxxxxx Formula 1
2015-06-01 13:31:23.554 【下单】603883 价0.000000 量2000 买卖1 类型1 开平1 账户xxxxxx Formula 1
2015-06-01 13:31:23.601 【指令】收到回报指令 ID = 51
2015-06-01 13:31:23.632 【回报】xxxxxx : 603883 - 已报单 2000 价格:0.00 平 卖
2015-06-01 13:31:24.178 【指令】收到成交回报指令 ORDERID = 51
2015-06-01 13:31:24.178 【回报】xxxxxx : 603883 - 已成交 1000 价格:90.39 平 卖
2015-06-01 13:31:24.178 【指令】收到成交回报指令 ORDERID = 51
2015-06-01 13:31:24.194 【回报】xxxxxx : 603883 - 已成交 1000 价格:90.39 平 卖
2015-06-01 13:31:24.194 【回报】xxxxxx : 603883 - 全部成交 2000
前5笔委托是程序化运行时止损自动发出的指令,第6笔委托是我发现没有成交后,手动按钮发出的。
自动止损止盈程序:
Sub MarketData_ReportNotify(ReportData)
NEWPRICE = ReportData.NewPrice
Market=ReportData.MarketName
Code=ReportData.Label
Holding=Document.GetExtData(Market+"_"+Code+"_"+"持仓数量")
HoldingPrice=Document.GetExtData(Market+"_"+Code+"_"+"持仓价格")
StopwinPrice=Document.GetExtData(Market+"_"+Code+"_"+"移动止损")
StopMovePrice=Document.GetExtData(Market+"_"+Code+"_"+"目标止盈")
FristLossPrice=Document.GetExtData(Market+"_"+Code+"_"+"初始止损")
Account=Document.GetExtString(Market+"_"+Code+"_"+"持仓账户")
IF Holding>0 THEN
If FristLossPrice>0 AND NewPrice<=FristLossPrice AND OnlyKey<>-1 Then '初始止损
Call Order.Sell(1,Holding,0,0,Code,Market,Account,0)
OnlyKey=-1
EXIT SUB
End If
If StopwinPrice>0 AND NewPrice<=StopwinPrice AND OnlyKey<>-1 Then '移动止盈
Call order.Sell(1,Holding,0,0,Code,Market,Account,0)
OnlyKey=-1
EXIT SUB
END IF
If StopMovePrice>0 AND NewPrice>StopMovePrice AND StopMovePrice>HoldingPrice AND OnlyKey<>-1 Then '目标止盈
Call order.Sell(1,Holding,0,0,Code,Market,Account,0)
OnlyKey=-1
EXIT SUB
END IF
END IF
End Sub
手动平仓按钮程序:
'------------------------------------------------------------------------------------------------平仓
Sub BuySell_CommandButton2_Click()
Set GridA = Buy.GetGridByName("Main")
MARKET=GridA.Market
Code=GridA.StockLabel
Account=BuySell_ComboBox1.Text
maxholding=Csng(BuySell_TextBox13.Value)
IF maxholding>0 THEN
Call Order.Sell(1,maxholding,0,0,Code,Market,Account,0)
END IF
End SUB
2015-06-01 11:29:57.399 【下单】603883 价0.000000 量2000 买卖1 类型1 开平2 账户31327510 Formula 1
2015-06-01 11:29:57.399 【下单】603883 价0.000000 量2000 买卖1 类型1 开平2 账户xxxxxx Formula 1
2015-06-01 11:30:01.845 【下单】603883 价0.000000 量2000 买卖1 类型1 开平2 账户xxxxxx Formula 1
2015-06-01 11:30:01.861 【下单】603883 价0.000000 量2000 买卖1 类型1 开平2 账户xxxxxx Formula 1
2015-06-01 13:16:29.232 【下单】603883 价0.000000 量2000 买卖1 类型1 开平2 账户xxxxxx Formula 1
交易日志上就是这样,后面什么都没有了?
是的,什么都没有!没有任何反应,我也查了方正证券的委托记录,方正极速系统中没有任何委托信息,我想是否是因为发出的平今委托,所以没有接收,股票是不能平今的,所以也没有回报,现在我的问题是为什么同样的指令会出现开平1和开平2的委托?
应该是系统将平仓单做调整了,下个版本我们已经修复该问题
那我暂时只能手工平仓了吗?新版本什么时间出来啊!另外我上次请教王峰老师的那个交易COM接口老出错而只能退出系统的问题,可能是我在同一台机器中同时运行了通达信系统,但是在
3.6Beta3版本之前没有发生这种情况,同样这个平仓的问题,在这个版本之前一直用的好好的,也没有问题,看来这个3.6Beta3板还是有些问题,请金字塔尽快出3.6正式版,已经有很久没有升级版本了,是不是公司员工都炒股票赚大钱去了啊!拜托赶快升级啊!
COM接口的问题前面已经回复你了,如果你这边问题总是出现,那么建议你同一台机器不要安装多个新老版本的金字塔,只运行一个就不会出问题,再次提醒,若问题没解决,卸载杀毒软件后重装试试
王峰老师:昨天一只股票自动止损又没有发出指令,用手工平仓才发出指令,但查看交易记录,手工和自动发出的指令是一样的,为什么手动可以平仓,自动就不能平仓?另外,我今天在自动平仓程序中,将市价委托变为按跌停板的价格限价委托还是委托不了,只能用手工委托,我不明白您在6楼说“应该是系统将平仓单做调整了,下个版本我们已经修复该问题”,是什么意?请告诉我现在的最新版本是否需要在哪儿设置或有替代的方法,确实不知道您说的下一个版本什么时间可以出来,我持仓有多只股票,靠眼睛监控很吃力,希望老师告诉我还有什么方法可以知道委托,别方正证券系统接收?谢谢!
2015-06-03 11:04:30.708 【下单】000652 价0.000000 量15000 买卖1 类型1 开平2 账户XXXXXXX Formula 1
2015-06-03 11:13:56.369 【下单】000652 价0.000000 量15000 买卖1 类型1 开平2 账户XXXXXXX Formula 1
2015-06-03 11:13:56.400 【指令】收到回报指令 ID = 54
2015-06-03 11:13:56.431 【回报】XXXXXXX : 000652 - 已报单 15000 价格:0.00 平 卖
2015-06-03 11:13:56.728 【指令】收到成交回报指令 ORDERID = 54
2015-06-03 11:13:56.728 【回报】XXXXXXX: 000652 - 已成交 7000 价格:12.99 平 卖
2015-06-03 11:13:56.728 【指令】收到成交回报指令 ORDERID = 54
2015-06-03 11:13:56.728 【回报】XXXXXXX : 000652 - 已成交 5000 价格:12.99 平 卖
2015-06-03 11:13:56.728 【指令】收到成交回报指令 ORDERID = 54
2015-06-03 11:13:56.743 【回报】XXXXXXX : 000652 - 已成交 3000 价格:12.99 平 卖
2015-06-03 11:13:56.743 【回报】XXXXXXX : 000652 - 全部成交 15000
2015-06-04 13:03:23.581 【下单】600588 价62.75 量5000 买卖1 类型0 开平2 账户XXXXXX Formula 1
第一行是自动委托,第二行为手动委托,回报都一样,但自动委托没有反应,只能用手动委托才成功!
最后一行是用跌停板的价格自动问题,还是没有反应,方正证券极速交易系统可以接收什么指令,请老师解答,谢谢王峰老师!
这个问题主要是期货和股票软件都是用相同的格式和规范,软件平仓时,VBA部分会做是否将平仓单转化为平今单。这个问题我们3.6正式版已经修复,近期几天就会发布的