设为首页收藏本站

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

平仓的时候只平了大部分仓位还剩余点是怎么回事? [复制链接]

Rank: 3Rank: 3

精华
0
UID
83507
积分
207
帖子
74
主题
22
阅读权限
40
注册时间
2011-12-1
最后登录
2014-2-21
跳转到指定楼层
1#
发表于 2012-2-3 11:04:10 |只看该作者 |倒序浏览
If((A_TotalPosition!=InvalidNumeric && A_TotalPosition!=0) || MarketPosition!=0)        //如果有持仓先进行平仓
                {       
                        If(A_TotalPosition!=InvalidNumeric && A_TotalPosition!=0)
                        {
                                        buyPosition = A_BuyPosition();
                                        sellPosition = A_SellPosition();
                                        cangWei = A_TotalPosition();
                        }
                        Else If(MarketPosition!=0)
                        {
                                        buyPosition = CurrentContracts;
                                        sellPosition = Abs(CurrentContracts);
                                        cangWei = MarketPosition();
                        }
                       
                        If(sellCon && cangWei>0)       
                        {
                                        Sell(buyPosition,Open-offSet*MinPoint);
                                        flag = -1;
                        }
                        If(buyCon && cangWei<0)
                        {
                                        BuyToCover(sellPosition,Open+offSet*MinPoint);
                                        flag = 1;
                        }
                }
               
                If((A_TotalPosition!=InvalidNumeric && A_TotalPosition!=0) || MarketPosition==0)
                {
                        If(A_FreeMargin != InvalidNumeric)        //计算实盘和模拟盘的头寸大小
                        {
                                        freeMoney = A_FreeMargin();
                        }
                        Else
                        {       
                                        freeMoney = Portfolio_CurrentCapital();
                        }
                       
                        lots = IntPart(freeMoney*ZiJin/(0.15*ContractUnit*CloseD(1)));
                        If(lots>=300) lots=300;
                        If(buyCon && flag!=-1)
                        {
                                        Buy(lots,Open+offSet*MinPoint);
                        }
               
                        If(sellCon && flag!=1)
                        {
                                        SellShort(lots,Open-offSet*MinPoint);
                        }

我扔服务器上连续运行了了几天结果是:买开46手,买平33,卖开32买平31。奇怪了

我于昨晚上关闭重开了TB。然后早晨的结果更怪异,直接不平仓直接开仓。我这个代码我看了几遍都没看出所以然来。而且历史回溯也一切正常。

Rank: 3Rank: 3

精华
0
UID
83507
积分
207
帖子
74
主题
22
阅读权限
40
注册时间
2011-12-1
最后登录
2014-2-21
2#
发表于 2012-2-3 11:37:56 |只看该作者
对了,我勾选了商品0映射到商品1的那个选项。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20906
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
3#
发表于 2012-2-3 14:33:44 |只看该作者
回复 2# hyqspuy01


用Commentary输出buyPosition、sellPosition、lots输出检查,
或者使用fileappend将上面几个参数输出到文件。
还有可能是A_BuyPosition()取账户中多仓数量,同时有未成交单,平仓之后未成交单成交了。

使用道具 举报

初级操盘手

懒惰的投机者

Rank: 8Rank: 8

精华
0
UID
68068
积分
6712
帖子
483
主题
31
阅读权限
100
注册时间
2011-9-27
最后登录
2022-2-18
4#
发表于 2012-4-11 16:23:38 |只看该作者
如楼上所说。
LZ应该正确取值,很有可能是取值问题。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-28 18:57

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部