- 精华
- 0
- 在线时间
- 119 小时
- UID
- 1117
- 积分
- 403
- 帖子
- 62
- 阅读权限
- 50
- 注册时间
- 2008-1-27
- 最后登录
- 2019-3-30
- 精华
- 0
- UID
- 1117
- 积分
- 403
- 帖子
- 62
- 主题
- 28
- 阅读权限
- 50
- 注册时间
- 2008-1-27
- 最后登录
- 2019-3-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 编辑 ] |
|