设为首页收藏本站

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

BarStatus != 2的时候buy指令也能发单吗? [复制链接]

Rank: 5Rank: 5

精华
0
UID
4613
积分
953
帖子
162
主题
37
阅读权限
60
注册时间
2009-6-10
最后登录
2019-3-30
跳转到指定楼层
1#
发表于 2010-4-1 09:32:56 |只看该作者 |倒序浏览
如题。我的buy指令在BarStatus != 2的时候怎么也把委托单发到模拟柜台了?
奇怪,不是说只有BarStatus == 2的时候才往外发吗

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20906
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
2#
发表于 2010-4-1 09:58:19 |只看该作者
BarStatus != 2不能发单,具体看看你的公式

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
4613
积分
953
帖子
162
主题
37
阅读权限
60
注册时间
2009-6-10
最后登录
2019-3-30
3#
发表于 2010-4-1 09:59:54 |只看该作者
当时情况是这样的:
我在测试最后一根BAR上出现信号,也成交后,因为我要测试TB关闭重启后禁止重复发单。我通过了时间戳+全局变量来控制。经测试,确实不会重复发单,当然,重启TB后,最后一根BAR上的信号也没了,因为通过变量判断已经发过单,就不允许再执行buy指令了。

接下来,新的BAR出现了,这时问题也发生了,原先的BAR变成了倒数第二个BAR,BAR的状态应该变为1,也确实变为了1,因为日志中记录的委托价格和BarStatus==2是不一样的。但是,倒数第二根BAR的buy指令除了产生图表信号外,还把委托发送到模拟柜台成交了。

烦请管理员给看看,多谢了

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
4613
积分
953
帖子
162
主题
37
阅读权限
60
注册时间
2009-6-10
最后登录
2019-3-30
4#
发表于 2010-4-1 10:02:07 |只看该作者
原帖由 lh948 于 2010-4-1 09:58 发表
BarStatus != 2不能发单,具体看看你的公式


确实是在BarStatus == 1的时候发的单,日志中记录的能区分。因为它确实发生了,不然不会没事说这个的

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20906
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
5#
发表于 2010-4-1 10:08:51 |只看该作者
行情在更换一个最新的tick的时候,会同时在上一个bar的最后一个tick和新bar的第一个tick同时计算,会造成你说的情况

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
4613
积分
953
帖子
162
主题
37
阅读权限
60
注册时间
2009-6-10
最后登录
2019-3-30
6#
发表于 2010-4-1 10:13:41 |只看该作者


9:05:21的那笔是barstatus== 2时,满足条件时buy发的单成交的。
接下来我关闭TB,重启,打开自动交易,由于有控制,buy指令不再被执行,图表上也没信号
9:30:01的那笔就是barstatus==1时,buy指令发送的,是按信号价位发送。结果被交易助手1秒不成交即撤单了
9:30:03的那笔是交易助手撤单后按当前最新价重发成交的。
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
4613
积分
953
帖子
162
主题
37
阅读权限
60
注册时间
2009-6-10
最后登录
2019-3-30
7#
发表于 2010-4-1 10:20:08 |只看该作者
原帖由 lh948 于 2010-4-1 10:08 发表
行情在更换一个最新的tick的时候,会同时在上一个bar的最后一个tick和新bar的第一个tick同时计算,会造成你说的情况


这种情况只在出现新的BAR的时候才会在上一个BAR的最后一个tick和新BAR的第一个tick同时计算吗?新BAR的第二个tick来了后就只在新BAR上计算了吧

请教一下,那我的问题怎么解决会比较好呢

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20906
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
8#
发表于 2010-4-1 10:33:32 |只看该作者
需要看你的公式才知道该怎么改

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
4613
积分
953
帖子
162
主题
37
阅读权限
60
注册时间
2009-6-10
最后登录
2019-3-30
9#
发表于 2010-4-1 13:15:07 |只看该作者
公式很简单啊
就是
if (barstatus !=2)
{
...
buy(...)
}
else if (barstatus == 2)
{
if (已发单时间戳)
    return;
....
buy(...)
}

会同时在上一个bar的最后一个tick和新bar的第一个tick同时计算,会造成你说的情况
在上一个bar的最后一个tick计算也不用把单子发出去呀,这算不算一个bug啊

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20906
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
10#
发表于 2010-4-1 13:36:39 |只看该作者

回复 9# tradingart 的帖子

不算是bug,原来就是这么设计的
历史的开仓条件和最后bar开仓条件一样吗?如果条件都一样,没有必要要用barstatus判断

使用道具 举报

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

bottom

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

GMT+8, 2024-5-21 12:09

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部