设为首页收藏本站

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

模拟账户交易怎么平不了仓呀? [复制链接]

Rank: 4

精华
0
UID
1117
积分
403
帖子
62
主题
28
阅读权限
50
注册时间
2008-1-27
最后登录
2019-3-30
跳转到指定楼层
1#
发表于 2008-3-18 15:35:30 |只看该作者 |倒序浏览
几个问题请求回复:
1)
       if(BarStatus==2)
          {
            If(A_TotalPosition < 0) // 有空仓的情况
            {
                          If(Time >0.145430 && Time < 0.150030)
                   BuyToCover(0,Q_AskPrice +PriceScale*MinMove;);      //闭市前5分钟强制平仓
            }
           else
           {
                If(MarketPosition ==-1)                 
                       If(Time >0.144530 && Time < 0.150030)
                    BuyToCover;                                       //闭市前5分钟强制平仓
        }
              模拟账户交易,已开空仓,调试显示A_TotalPosition = - 58,收市了平不了仓。不知道什么原因。
         测试的历史数据显示,MarketPosition ==-1 的仓位平了,也就是BarStatus !=2的情况正确平仓了。
   查看了消息中心,事件:用户下单失败。详细说明:用户买平仓失败,持仓不足,持有58手空单,打算平84手。
可以是我的事Bar上的历史有84手,实际账户里有空单58手,应该平的是我的帐户里的58手才对,怎么会平84手呢?要怎么改程序才行?


2)
大概琢磨明白了,为了回溯测试和实际交易,实际上在一个交易程序中需要两种写法。
比如说 回溯 用 MarketPosition判断仓位, 交易用 A_TotalPosition ;还有一些关于资金的函数也得针对两种情况分开写,
用BarStatus==2 的分支分别出是回溯测试还是交易,并且A_ 函数只在关联了账户,而且要在开盘交易时间内才能得到数值。
是这样的吗?

3)
BuyToCover;   
  市价平仓,实际执行过程中,这个市价是怎么实现的? 不会是为了保证成交,用涨停价? 如果是流动性小的商品就会有问题。

请求解答,多谢!

[ 本帖最后由 live4fun 于 2008-3-18 16:17 编辑 ]

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25127
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
2#
发表于 2008-3-18 22:14:54 |只看该作者
1、保证每次信号都是真实并且不会消失,并且发出来之后都成交了。
2、需要关联了帐户,收盘时间也可以使用
3、直接写BuyToCover是使用默认价格平仓,即当前Bar的收盘价。并不是市价平仓。要想保证成交。1要考虑委托时预留一些空间,2要利用交易助手的撤单重发功能
交易开拓者 - 期货程序化与量化系统自动交易领航者

网站已支持在线开通模拟账户功能

使用道具 举报

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

bottom

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

GMT+8, 2024-5-14 03:31

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部