自己做的持仓同步,请问为何没有开平仓量超过持仓量动作

您现在的位置:>>
>>正文内容
模组同步持仓
怎么回事 [文华财经]
咨询内容:
&账号同步 &模组同步持仓 &怎么回事 &怎样使用?
文华技术人员:
只有要带入的持仓方向与模组上一个信号方向相同,就可以在模组左下角点击账号同步,带入持仓&&&例如我账户有2手多头持仓,正好历史最后一个信号BK ,可以通过账号同步功能将2手持仓带入模组并且不会改变历史信号;
文华客服:
&不同步持仓 & 2手多头持仓就一定不会带入模组吗?
网友回复:
&账户持仓是分为模组持仓和手动交易的持仓。&上面的例子是说,将手动的持仓带入模组。利用模组的条件后续完成平仓&&
网友回复:
&那么手动的持仓 (完全和模组无关的)带入模组 有两种方法 &1是账号同步 & 2是初始化持仓 &对吗
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ:
&进行 有偿 编写!
【字体: 】【】【】
没有相关内容
&本月热门排行
&用户常看内容
会员登录/注册后使用快捷导航没有帐号?注册
查看: 784|回复: 8
精华0在线时间191 小时UID212308积分6帖子阅读权限10注册时间最后登录
期市新手, 积分 6, 距离下一级还需 44 积分
精华0UID212308积分6帖子主题阅读权限10注册时间最后登录
我有同一品种的2手多单和2手空单,一模型出现平2手空单信号时系统消息却显示“平仓失败,该品种没有持仓”。我手动去平仓也没法平,这是什么原因啊?最后只得一键同步了。
精华3在线时间8761 小时UID5积分22069帖子阅读权限200注册时间最后登录
精华3UID5积分22069帖子主题阅读权限200注册时间最后登录
何时发生的事??何时登录的交易帐号?
精华0在线时间191 小时UID212308积分6帖子阅读权限10注册时间最后登录
期市新手, 积分 6, 距离下一级还需 44 积分
精华0UID212308积分6帖子主题阅读权限10注册时间最后登录
我今天9点登录的,9点40出现平仓信号
精华3在线时间8761 小时UID5积分22069帖子阅读权限200注册时间最后登录
精华3UID5积分22069帖子主题阅读权限200注册时间最后登录
dhqh8725086 发表于
我今天9点登录的,9点40出现平仓信号
是不是已经有平仓的持单了所以不能再平??
因为一键 同步的话,在有挂单 的情况下,他是会先撤单 再重发的,所以能平掉。
而其它的二个操作,是没有撤单的动作的,于是报错。
精华0在线时间191 小时UID212308积分6帖子阅读权限10注册时间最后登录
期市新手, 积分 6, 距离下一级还需 44 积分
精华0UID212308积分6帖子主题阅读权限10注册时间最后登录
是不是因为网络不稳定照成的?当时没看到挂单。如果是网络原因一键同步怎么就成交了呢? 难道是巧合。
精华3在线时间8761 小时UID5积分22069帖子阅读权限200注册时间最后登录
精华3UID5积分22069帖子主题阅读权限200注册时间最后登录
dhqh8725086 发表于
是不是因为网络不稳定照成的?当时没看到挂单。如果是网络原因一键同步怎么就成交了呢? 难道是巧合。 ...
不是很确定呢。但如你所疑问的,如果是网络原因,使用一键同步应该也没法平得掉。。
一键同步与其它二个平仓方式的区别只有:在有挂单的情况下,一键同步会先撤单后再去平,而另外二种方式不会撤单 。所以就先只能从这里找原因了。。
在当日交易右键菜单里---显示类型---选择全部。。如此设置一下。
精华0在线时间191 小时UID212308积分6帖子阅读权限10注册时间最后登录
期市新手, 积分 6, 距离下一级还需 44 积分
精华0UID212308积分6帖子主题阅读权限10注册时间最后登录
还有一个问题。昨天我模型1的上期所品种出现历史仓位平仓信号时,却把模型2的当日开仓的仓位平掉了,上期所是优先平今仓的。这个问题怎么解决?我开平仓代码是BUY(0,PRICE) 这种类型。
精华3在线时间8761 小时UID5积分22069帖子阅读权限200注册时间最后登录
精华3UID5积分22069帖子主题阅读权限200注册时间最后登录
dhqh8725086 发表于
还有一个问题。昨天我模型1的上期所品种出现历史仓位平仓信号时,却把模型2的当日开仓的仓位平掉了,上期所 ...
在对帐号进行下单时,针对上海交易所的品种,软件会在底层处理优先平今仓。。
buy,sell指令里是没有区分平仓或是平今仓的 。
事实上这种方式,对于你的二个策略交易结果来说是没有影响的,不必是顾虑当前所平持仓是哪个策略开的。。
相反,这种机制反而可能会对整个帐户是有利的(在平今免费的情况下,减少手续费成本)。
精华0在线时间191 小时UID212308积分6帖子阅读权限10注册时间最后登录
期市新手, 积分 6, 距离下一级还需 44 积分
精华0UID212308积分6帖子主题阅读权限10注册时间最后登录
但是因为模型1的平仓信号平掉我模型2的1手单子后,当模型2出现平仓信号后,剩余单子平不了,出现“平仓仓位不足”提示,两模型仓位不是一样的。我开始也是像你那么想的,没想到会出现这种情况。
Powered by您现在的位置:>>
>>正文内容
TB持仓信号和真实账户持仓不同步的调整模块 [开拓者 TB]
咨询内容: 本人开发了一套策略,历史数据回测什么都很好,接下来要做到计算机自动交易。现在万里长征还差最后一步,就是TB持仓信号和真实账户持仓不同步的调整模块,由于都是A_函数只有在实时行情的时候才能测试,从上周到现在花了好几个交易日,也改了好几次代码但还是有重复发单或者持仓不足等情况,今天收盘后针对发生的问题又改进了一下,也不知道明天能不能顺利通过。心里没底所以把这部分代码公开出来,希望管理员或有自动交易实盘经验的高手指点一下。
If((BarInterval==1 And Time!=0.1514) Or (BarInterval==5 And Time!=0.1510) Or (BarInterval==15 And Time!=0.1500))
& & & & TickCnt1=15;& & & & //等待TickCnt1次后如不成交采取相应措施
& & & & If(GetGlobalVar(2)==InvalidNumeric)& & & & & & & & & & & & //对全局变量初始赋值(包括意外网络中断、账户断开等情况后的初始化赋值)
& & & & & & & & SetGlobalVar(2,0);
& & & & If(MarketPosition==1)
& & & & & & & & If(OrderWaitCounts!=TickCnt1 And A_GetOpenOrderCount==0)& & & & //没有未成交委托单时计数器归零
& & & & & & & & {
& & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & }
& & & & & & & & & & & &
& & & & & & & & If(A_BuyPosition&0)
& & & & & & & & {
& & & & & & & & & & & & If(A_BuyPosition&Abs(CurrentContracts))& & & & & & & & & & & & & & & & //真实账户相对TB信号有多余持仓
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & If(A_GetOpenOrderCount!=0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & OrderWaitCounts=GetGlobalVar(2)+1;& & & & & & & & & & & & //计数器记录未成交委托单存在的Tick数
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,OrderWaitCounts);
& & & & & & & & & & & & & & & & }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)& & & & & & & & //没有委托单时直接发单平掉多余持仓
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition-Abs(CurrentContracts),Q_BidPrice);
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & If(OrderWaitCounts==TickCnt1)& & & & & & & & & & & & & & & & & & & & //如果委托单持续TickCnt1个Tick数后仍没成交
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & A_DeleteOrder();& & & & & & & & & & & & & & & & & & & & & & & & & & & & //撤所有委托单
& & & & & & & & & & & & & & & & & & & & A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition-Abs(CurrentContracts),Q_BidPrice);& & & & //重新发单平掉多余持仓
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,0);& & & & & & & & & & & & & & & & & & & & & & & & & & & & //重置全局变量
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & }else if(A_BuyPosition&Abs(CurrentContracts))
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & If(A_GetOpenOrderCount!=0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & OrderWaitCounts=GetGlobalVar(2)+1;& & & & & & & & & & & & //计数器记录未成交委托单存在的Tick数
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,OrderWaitCounts);
& & & & & & & & & & & & & & & & }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & A_SendOrder(Enum_Buy,Enum_Entry,Abs(CurrentContracts)-A_BuyPosition,Q_AskPrice);
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & If(OrderWaitCounts==TickCnt1)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & A_DeleteOrder();
& & & & & & & & & & & & & & & & & & & & A_SendOrder(Enum_Buy,Enum_Entry,Abs(CurrentContracts)-A_BuyPosition,Q_AskPrice);
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & }else if(A_BuyPosition==Abs(CurrentContracts))& & & & & & & & //真实账户和TB信号持仓同步的时候
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & If(A_GetOpenOrderCount!=0)& & & & & & & & & & & & & & & & & & & & & & & & //如果还有未成交委托单全部撤单,重置全局变量
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & A_DeleteOrder();
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & & & & & }else if(GetGlobalVar(2)!=0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & }
& & & & & & & & }else if(A_SellPosition&0)
& & & & & & & & {
& & & & & & & & & & & & If(A_GetOpenOrderCount!=0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & OrderWaitCounts=GetGlobalVar(2)+1;
& & & & & & & & & & & & & & & & SetGlobalVar(2,OrderWaitCounts);
& & & & & & & & & & & & }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice);
& & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & }
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & If(OrderWaitCounts==TickCnt1)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & A_DeleteOrder();
& & & & & & & & & & & & & & & & A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice);
& & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & }
& & & & & & & & }else if(A_BuyPosition==0 And A_SellPosition==0)
& & & & & & & & {
& & & & & & & & & & & & If(A_GetOpenOrderCount!=0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & OrderWaitCounts=GetGlobalVar(2)+1;
& & & & & & & & & & & & & & & & SetGlobalVar(2,OrderWaitCounts);
& & & & & & & & & & & & }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & A_SendOrder(Enum_Buy,Enum_Entry,Abs(CurrentContracts),Q_AskPrice);
& & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & }
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & If(OrderWaitCounts==TickCnt1)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & A_DeleteOrder();
& & & & & & & & & & & & & & & & A_SendOrder(Enum_Buy,Enum_Entry,Abs(CurrentContracts),Q_AskPrice);
& & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & }
& & & & & & & & }
& & & & }else if(MarketPosition==-1)
& & & & & & & & If(OrderWaitCounts!=TickCnt1 And A_GetOpenOrderCount==0)& & & & & & & & //没有未成交委托单时计数器归零
& & & & & & & & {
& & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & }
& & & & & & & & & & & &
& & & & & & & & If(A_BuyPosition&0)
& & & & & & & & {
& & & & & & & & & & & & If(A_GetOpenOrderCount!=0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & OrderWaitCounts=GetGlobalVar(2)+1;
& & & & & & & & & & & & & & & & SetGlobalVar(2,OrderWaitCounts);
& & & & & & & & & & & & }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice);
& & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & }
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & If(OrderWaitCounts==TickCnt1)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & A_DeleteOrder();
& & & & & & & & & & & & & & & & A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice);
& & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & }
& & & & & & & & }else if(A_SellPosition&0)
& & & & & & & & {
& & & & & & & & & & & & If(A_SellPosition&Abs(CurrentContracts))
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & If(A_GetOpenOrderCount!=0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & OrderWaitCounts=GetGlobalVar(2)+1;& & & & & & & & & & & & //计数器记录未成交委托单存在的Tick数
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,OrderWaitCounts);
& & & & & & & & & & & & & & & & }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition-Abs(CurrentContracts),Q_AskPrice);
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & If(OrderWaitCounts==TickCnt1)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & A_DeleteOrder();
& & & & & & & & & & & & & & & & & & & & A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition-Abs(CurrentContracts),Q_AskPrice);
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & }else if(A_SellPosition&Abs(CurrentContracts))
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & If(A_GetOpenOrderCount!=0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & OrderWaitCounts=GetGlobalVar(2)+1;& & & & & & & & & & & & //计数器记录未成交委托单存在的Tick数
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,OrderWaitCounts);
& & & & & & & & & & & & & & & & }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & A_SendOrder(Enum_Sell,Enum_Entry,Abs(CurrentContracts)-A_SellPosition,Q_BidPrice);
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & If(OrderWaitCounts==TickCnt1)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & A_DeleteOrder();
& & & & & & & & & & & & & & & & & & & & A_SendOrder(Enum_Sell,Enum_Entry,Abs(CurrentContracts)-A_SellPosition,Q_BidPrice);
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & }else if(A_SellPosition==Abs(CurrentContracts))
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & If(A_GetOpenOrderCount!=0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & A_DeleteOrder();
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & & & & & }else if(GetGlobalVar(2)!=0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & }
& & & & & & & & }else if(A_BuyPosition==0 And A_SellPosition==0)
& & & & & & & & {
& & & & & & & & & & & & If(A_GetOpenOrderCount!=0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & OrderWaitCounts=GetGlobalVar(2)+1;
& & & & & & & & & & & & & & & & SetGlobalVar(2,OrderWaitCounts);
& & & & & & & & & & & & }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & A_SendOrder(Enum_Sell,Enum_Entry,Abs(CurrentContracts),Q_BidPrice);
& & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & }
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & If(OrderWaitCounts==TickCnt1)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & A_DeleteOrder();
& & & & & & & & & & & & & & & & A_SendOrder(Enum_Sell,Enum_Entry,Abs(CurrentContracts),Q_BidPrice);
& & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & }
& & & & & & & & }
& & & & }else if(MarketPosition==0)
& & & & & & & & If(OrderWaitCounts!=TickCnt1 And A_GetOpenOrderCount==0)& & & & & & & & //没有未成交委托单时计数器归零
& & & & & & & & {
& & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & }
& & & & & & & & & & & &
& & & & & & & & If(A_BuyPosition&0)
& & & & & & & & {
& & & & & & & & & & & & If(A_GetOpenOrderCount!=0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & OrderWaitCounts=GetGlobalVar(2)+1;
& & & & & & & & & & & & & & & & SetGlobalVar(2,OrderWaitCounts);
& & & & & & & & & & & & }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice);
& & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & }
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & If(OrderWaitCounts==TickCnt1)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & A_DeleteOrder();
& & & & & & & & & & & & & & & & A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice);
& & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & }
& & & & & & & & }else if(A_SellPosition&0)
& & & & & & & & {
& & & & & & & & & & & & If(A_GetOpenOrderCount!=0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & OrderWaitCounts=GetGlobalVar(2)+1;
& & & & & & & & & & & & & & & & SetGlobalVar(2,OrderWaitCounts);
& & & & & & & & & & & & }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice);
& & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & }
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & If(OrderWaitCounts==TickCnt1)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & A_DeleteOrder();
& & & & & & & & & & & & & & & & A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice);
& & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & }
& & & & & & & & }else if(A_BuyPosition==0 And A_SellPosition==0)
& & & & & & & & {
& & & & & & & & & & & & If(A_GetOpenOrderCount!=0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & A_DeleteOrder();
& & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & }else if(GetGlobalVar(2)!=0)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & }
& & & & & & & & }
前面部分在MarketPosition==1情况下做了些注释,后面逻辑是一致的。基本思路就是发觉TB信号与实际持仓不一致的时候,先检查是不是已有委托单(可能是其他模块用Buy Sell命令发送的),如果已有委托单等待TickCnt1时间,如果该时间后没有成交则撤单用A_SendOrder发送。同时继续用OrderWaitCounts记录委托单发出未成的时间,如果过了TickCnt1时间还是没成交,继续撤单重发,直至实际持仓与TB信号同步。同步后检查是否还有未成交的委托单,如果有全部撤单并重置全局变量。
不同步的问题测试起来实在很麻烦,所以恳请高手回复,看看以上代码有无逻辑错误,会不会导致重复发单或其他问题。多谢了,加急!!!
TB技术人员: 不是有数据回放吗?可以多试试的现在,以前没有回放的时候我也很纠结。。。
TB客服: 回放只显示行情,对实际账户持仓测试没用的
网友回复: 额,好吧,忘记自己没用A函数了。。
网友回复: 今天实时行情继续测试中,问题比之前少了些,不过还是有很多警告,而且都是连续发出的警告,持仓不足、资金不足和相应委托不能撤销这三类都有。我分析了一下代码,选前一段一起看一下:
If(A_BuyPosition&0)
& & & & & & & & {
& & & & & & & & & & & & If(A_BuyPosition&Abs(CurrentContracts))& & & & & & & & & & & & & & & & //真实账户相对TB信号有多余持仓
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & If(A_GetOpenOrderCount!=0)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & OrderWaitCounts=GetGlobalVar(2)+1;& & & & & & & & & & & & //计数器记录未成交委托单存在的Tick数
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,OrderWaitCounts);
& & & & & & & & & & & & & & & & }else if(A_GetOpenOrderCount==0 And GetGlobalVar(2)==0)& & & & & & & & //没有委托单时直接发单平掉多余持仓
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition-Abs(CurrentContracts),Q_BidPrice);
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,0);
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & If(OrderWaitCounts==TickCnt1)& & & & & & & & & & & & & & & & & & & & //如果委托单持续TickCnt1个Tick数后仍没成交
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & A_DeleteOrder();& & & & & & & & & & & & & & & & & & & & & & & & & & & & //撤所有委托单
& & & & & & & & & & & & & & & & & & & & A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition-Abs(CurrentContracts),Q_BidPrice);& & & & //重新发单平掉多余持仓
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,0);& & & & & & & & & & & & & & & & & & & & & & & & & & & & //重置全局变量
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & }
我估计问题出在
If(OrderWaitCounts==TickCnt1)& & & & & & & & & & & & & & & & & & & & //如果委托单持续TickCnt1个Tick数后仍没成交
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & A_DeleteOrder();& & & & & & & & & & & & & & & & & & & & & & & & & & & & //撤所有委托单
& & & & & & & & & & & & & & & & & & & & A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition-Abs(CurrentContracts),Q_BidPrice);& & & & //重新发单平掉多余持仓
& & & & & & & & & & & & & & & & & & & & SetGlobalVar(2,0);& & & & & & & & & & & & & & & & & & & & & & & & & & & & //重置全局变量
& & & & & & & & & & & & & & & & }
这段里,因为里面有撤销委托操作和发单操作,如果是开仓单频繁发单就会导致资金不足警告,如果是平仓单就会导致持仓不足警告。我设计的思路是当OrderWaitCounts==TickCnt1的时候只要求发送一次,因为发送完全局变量就被重置为0了,这样即使不成交再进入该条件OrderWaitCounts又要重新开始计数等待,如果等到TickCnt1时再撤单重发。但实际情况是这段代码并没有只发送一次,还是频繁在发送,百思不其解,请管理员或诸位高手帮忙解答,谢谢了!
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ:
&进行 有偿 编写!
【字体: 】【】【】
没有相关内容
&本月热门排行
&用户常看内容
会员登录/注册

我要回帖

更多关于 建仓持仓平仓 的文章

 

随机推荐