金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 2884|回复: 13

平仓了超过持仓量~有的被拒有的下单失败?

[复制链接]

63

主题

196

帖子

206

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
发表于 2021-7-19 13:12 | 显示全部楼层 |阅读模式
2021-07-19 10:40:57.043    【远程】远程预警单 AG12 类型平多 量2
2021-07-19 10:40:57.044    【下单】AG12 价5348.000000 量2 买卖1 类型0 开平1 账户17708496754 Formula 1
2021-07-19 10:40:57.045    【下单】AG12 价5348.000000 量1 买卖1 类型0 开平2 账户17708496754 Formula 1
2021-07-19 10:40:57.045    【下单】已提交,订单ID :319227896
2021-07-19 10:40:57.046    【下单】已提交,订单ID :319227897
2021-07-19 10:40:57.123    【指令】收到回报指令 ID = 319227896
2021-07-19 10:40:57.123    【回报】17708496754 : AG12 - 已报单 1 价格:5348 平 卖
2021-07-19 10:40:57.125    【指令】收到Order回报指令 ID = 319227896 Status = 3
2021-07-19 10:40:57.126    【指令】收到成交回报指令 ORDERID = 319227896
2021-07-19 10:40:57.126    【回报】17708496754 : ag2112 - 已成交 1 价格:5351 平 卖
2021-07-19 10:40:57.127    【回报】17708496754 : ag2112 - 全部成交 1
2021-07-19 10:40:57.152    【指令】平仓计量 EBuy:0 ESell:0
2021-07-19 10:40:57.186    【指令】报单被拒 ID = 319227897
2021-07-19 10:40:57.187    【回报】17708496754 : ag2112 - 平仓量超过持仓量
2021-07-19 10:40:57.187    【下单】下单交易失败。
2021-07-19 10:40:57.187    【回报】品种 AG12 委托价格 0 委托下单数量小于1

远程预警是平2手多单~而帐户实际持仓只有1手多单~
VBA的代码修正~如果平仓量超过持仓量导致下单被拒~就按照持仓量平仓~
以上orderlog显示一下VBA代码运行正常~
操作结果就是平1手

[Visual Basic] 复制代码
Sub ORDER_OrderStatusEx2(OrderID, Status, Filled, Remaining, Price, Code, Market, OrderType, Aspect, Kaiping, Account, AccountType)


Result = Order.HoldingInfoByCode2(Code,Market,BuyHolding,BuyCost,BuyTodayHolding,SellHolding,SellCost,SellTodayHolding,PNL,UseMargin,"17708496754")  

Set Report1 = MarketData.GetReportData(Code,Market)

if Status="Inactive" then

if aspect=0 then
  

if SellHolding>=(Filled+Remaining) then
ss = (Filled+Remaining)
Else
ss = SellHolding 
end if
if kaiping>0 then order.sellshort 1,ss,Price,0,code,market,"17708496754",0
end if
  


if aspect=1 then
   

if BuyHolding>=(Filled+Remaining) then
ss = (Filled+Remaining)
Else
ss = BuyHolding 
end if
if kaiping>0 then order.sell 1,ss,Price,0,code,market,"17708496754",0
  
end if
 



'Application.MsgOut aspect
'Application.MsgOut BuyHolding
'Application.MsgOut ss
'Application.MsgOut kaiping

end if


end sub





2021-07-19 09:09:08.910    【远程】远程预警单 AP10 类型平多 量5
2021-07-19 09:09:08.917    【下单】AP10 价6098.000000 量5 买卖1 类型0 开平1 账户100588 Formula 1
2021-07-19 09:09:08.923    【下单】确认报单已发送 ID=-946135110 RefID = 5670
2021-07-19 09:09:08.927    【回报】100588 : AP110 - CTP:平仓量超过持仓量
2021-07-19 09:09:08.933    【下单】下单交易失败。
2021-07-19 09:09:08.937    【回报】品种 AP10 委托价格 0 委托下单数量小于1


但是同样的VBA代码在另外一台云主机上~
远程预警是平5手ap10的多单~实际持仓只有4手ap10的多单
结果就是下单交易失败~没跟单
是不是VBA没有检测到下单被拒所以没平掉可用的实际持仓??

回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2021-7-19 13:15 | 显示全部楼层
远程预警没法去判断你跟单的账户的持仓,他没法去告诉你让你全平,然后根账户根据自己仓位选择平仓

这些都需要代码自己额外处理,比如发生一个命令叫全平,然后跟单账户去自己考虑
不能直接发一个指令平仓平5手,然后再让跟单账户再去自己做选择。这些都需要额外的代码工作
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

63

主题

196

帖子

206

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2021-7-19 13:33 | 显示全部楼层
资深技术02 发表于 2021-7-19 13:15
远程预警没法去判断你跟单的账户的持仓,他没法去告诉你让你全平,然后根账户根据自己仓位选择平仓

这些 ...

我明白~所以我在接收远程预警的客户端帐户的软件上加了这段VBA代码~
一旦下单失败~自动再补一单全平的单子~
但是为啥同样的代码在不同机器上运行的结果好像有点不一样
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2021-7-19 13:41 | 显示全部楼层
这种你最好代码里加一些msgout的输出自己定位下,看是否进入程序内了
这种程序的开发一定是您需要一些基本调试手段的
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

63

主题

196

帖子

206

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2021-7-19 14:36 | 显示全部楼层
调试机器上与实盘机器上返回的数值有差异


买入开仓1手c09的多单~
卖出平仓2手c09的多单~输出调试为

Application.MsgOut Status
Application.MsgOut Price
Application.MsgOut ss
Application.MsgOut BuyHolding
Application.MsgOut (Filled+Remaining)

Inactive
0
1
1
2

但是实盘机器上输出为
Inactive
0
0
1
0

实盘机器上Inactive时
(Filled+Remaining)返回的数值为0~
这是为什么~
vba代码是一样的~就是前面那个代码
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2021-7-19 14:43 | 显示全部楼层
2021-07-19 09:09:08.937    【回报】品种 AP10 委托价格 0 委托下单数量小于1

你的下单数量小于1了
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

63

主题

196

帖子

206

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2021-7-19 14:47 | 显示全部楼层
资深技术02 发表于 2021-7-19 14:43
2021-07-19 09:09:08.937    【回报】品种 AP10 委托价格 0 委托下单数量小于1

你的下单数量小于1了

这个问题我知道~
你看看前面我给的那个vba代码~
我在调试的模拟帐户上操作没点问题~

买入开仓1手c09的多单~
卖出平仓2手c09的多单~输出调试为
Application.MsgOut Status
Application.MsgOut Price
Application.MsgOut ss
Application.MsgOut BuyHolding
Application.MsgOut (Filled+Remaining)

Inactive
0
1
1
2

实际操作上会直接平掉C09的1手多单~
运行正常~

但是实盘机器上输出为
Inactive
0
0
1
0
(Filled+Remaining)返回的数值为0~
无法平掉一手C09~

为何同样的代码在实盘帐户与模拟帐户上输出的结果不一样
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2021-7-19 14:51 | 显示全部楼层
你更换其他方法去完成你的需求呢,我这边帮你问下是否有付费编写把
你的处理架构可能从本质上就不合适的那种写法会
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

63

主题

196

帖子

206

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2021-7-19 14:58 | 显示全部楼层
资深技术02 发表于 2021-7-19 14:51
你更换其他方法去完成你的需求呢,我这边帮你问下是否有付费编写把
你的处理架构可能从本质上就不合适的那 ...

我觉得我的写法没啥问题~但是我搞不懂为啥同样的代码在实盘与模拟盘上输出的调试结果会不一样
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2021-7-19 15:02 | 显示全部楼层
那你看下当时实际是否有可平数量,是否有未成交单已经刮着了

这种跟单的实现,很抱歉实在过于复杂,很多细节问题不知道你实际运行情况根本不知道原因的
所以我建议您可以选择付费这边帮你整个程序编写,而不是这样遇到问题,但是我们又不知道你整个思路的框架,你做了什么都不知道这样很难知道原因的
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-12-22 18:22 , Processed in 0.211196 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表