设为首页收藏本站

 找回密码
 注册
查看: 4049|回复: 4
打印 上一主题 下一主题

A_BuyPosition和A_SellPosition返回的仓位不是实时的吗 [复制链接]

Rank: 2

精华
0
UID
117262
积分
54
帖子
28
主题
7
阅读权限
30
注册时间
2013-5-21
最后登录
2015-10-21
跳转到指定楼层
1#
发表于 2015-6-16 02:43:03 |只看该作者 |倒序浏览
在策略中使用A_BuyPosition和A_SellPosition实时监测仓位,如果是多空仓位都是0那就发开仓信号,如果有仓位那就不开仓
但是在实际使用的时候发现买入以后并不是马上变更的,而是会过了几个Tick才发生仓位变更,一般会有十几个到几十个Tick才会变
我是用FileAppend测出来的,
而且更加奇怪的是,Buy,或者SellShort应该开多次仓,但是实际模拟发现只开仓了一次,照理是延迟几个tick,就应该开几次的,这是为什么那?是否这函数有其他内部处理?
我查了下,好像有人提过仓位返回 延迟的问题,不知道有啥解决的方法吗
我用的是模拟账户实时测试的结果,谢谢

    if( ((A_BuyPosition() ==0 &&  A_SellPosition() ==0 ) || (A_BuyPosition() ==InvalidNumeric || A_SellPosition() ==InvalidNumeric  ) ))  
                {       
                  
                  if ( 满足开多仓条件  )
                        {
                                Buy(lots,open);

                                If(Date==CurrentDate && A_BuyPosition() !=InvalidNumeric ) //输出
                                        FileAppend("D:\\Bid.csv",DateTimeToString(Date + Time) + ",多头建仓," + Text(open)+","+Text(A_BuyPosition)+","+Text(A_SellPosition));
                                return;
                        }

                  if (  满足开空仓条件 )
                        {
                                SellShort(lots,open);

                                If(Date==CurrentDate && A_BuyPosition() !=InvalidNumeric )  //输出
                                        FileAppend("D:\\Bid.csv",DateTimeToString(Date + Time) + ",空头建仓," + Text(open)+","+Text(A_BuyPosition)+","+Text(A_SellPosition));
                                return;
                        }
                       
                }

Rank: 2

精华
0
UID
117262
积分
54
帖子
28
主题
7
阅读权限
30
注册时间
2013-5-21
最后登录
2015-10-21
2#
发表于 2015-6-16 02:47:53 |只看该作者
我又看了一下Buy和SellShort的参数说明,
在第一次以后的几次进入,没有开仓成功 是否跟全局设置中,能否连续建仓的设置有关?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
3#
发表于 2015-6-16 09:49:14 |只看该作者
1.a_buyposition,a_sellposition是读帐户里该合约的实际持仓数量。。
   这个是实时变化的,正因为是实时变化,所以交易者才更需要考虑从委托单发出--交易所撮合成交---成交回报返回本地这个流程走完所需的时间 。。一般来说,在网络理想的状态下,只需要2个tick左右就可以得到回报了。不用等十几tick吧。
2.buy ,sellshort函数的发单 是在底层有控制的,某bar上的某一个信号只在第一次执行buy时才会发单 ,之后不会重复发单。而a_sendorder是没有底层控制的,所以需要交易者自己使用全局变量来控制发单 次数,避免重复委托。
3.a_xxxx函数做判断,而使用buy,sellshort来交易,这样的写法是不可以的。。会导致buy,sell的信号消失,从而影响后续的交易。

使用道具 举报

Rank: 2

精华
0
UID
117262
积分
54
帖子
28
主题
7
阅读权限
30
注册时间
2013-5-21
最后登录
2015-10-21
4#
发表于 2015-6-17 12:48:04 |只看该作者
小米 发表于 2015-6-16 09:49
1.a_buyposition,a_sellposition是读帐户里该合约的实际持仓数量。。
   这个是实时变化的,正因为是实时变 ...

谢谢回复,
1 可能是我网络问题吧,成交回报比较慢,现在用的是模拟服务器,可能有点关系?
2 你的意思是说用 A_XXXPosition来判断,然后用A_SendOrder来发单,或者用全局变量来控制发单次数,比较好是吗 有没有相关的例子。。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
5#
发表于 2015-6-17 14:14:49 |只看该作者
larryxin 发表于 2015-6-17 12:48
谢谢回复,
1 可能是我网络问题吧,成交回报比较慢,现在用的是模拟服务器,可能有点关系?
2 你的意思是 ...

1.非电信的网络来使用模拟帐户,是可能会有成交回报慢的问题。
2.我没有说a_sendorder来发单 会比较好。只是想说,如果一定使用a_xxx类函数条件,那么发单指令也得用a_sendorder的。。。帮助文档里的策略进阶,有一个用a_xxx发单及全局变量控制次数的例子,可以参考一下。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-28 04:28

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部