设为首页收藏本站

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

Tick与新旧两个Bar的问题 [复制链接]

Rank: 5Rank: 5

精华
0
UID
5525
积分
1473
帖子
429
主题
93
阅读权限
60
注册时间
2009-9-22
最后登录
2022-5-23
跳转到指定楼层
1#
发表于 2010-11-18 13:17:49 |只看该作者 |倒序浏览
假如有两个Tick(Tick1、Tick2),正好分处在两个Bar(Bar1、Bar2),也就是说Tick1是Bar1的最后一个Tick,而Tick2是Bar2的第一个Tick。
当Tick1来临时,此时BarStatus==2,TB程序从Begin至End执行一遍。这个应该没有问题。
问题是:
(1)当Tick2来临时,此时TB是先补一个BarStatus==1,程序从Begin至End执行一遍,执行时用到的Open、High、Low、Close是Bar1的数据。然后在执行完BarStatus==1后BarStatus状态变为2,Tick2驱动TB重新从Begin至End执行一遍,此时程序用到的Open、High、Low、Close是Bar2的数据?还是相反?
(2)Tick2来临时,执行了BarStatus==1的程序分支,如果程序中涉及对公共变量(或数据库关键字)的变更,如何避免当BarStatus==2时,程序对相同公共变量(或数据库关键字)读写的逻辑混乱?因为当公共变量设定为元信号时,一旦状态改变意味着逻辑处理的不同。
(3)问题1感觉没有表述清楚。如果程序结构如下:
Begin
If (BarStatus==0){初始化语句; Return;}
If (BarStatus==2)
{ 对实际交易账户操作的程序段; }
Else
{ 对模拟台历史回测操作; }
End
问题:当Tick2来临时时,Tb是否要执行两遍程序?那么,
先执行BarStatus==1的分支,还是先执行BarStatus==2的分支,不同分支执行时,用的Open等数据是Bar1的还是Bar2的?

不知道表述的是否清楚了,先谢谢了!
上善若水,无欲则刚

Rank: 5Rank: 5

精华
0
UID
5525
积分
1473
帖子
429
主题
93
阅读权限
60
注册时间
2009-9-22
最后登录
2022-5-23
2#
发表于 2010-11-18 20:33:09 |只看该作者
请管理员帮忙解答,帮助我理解TB的运行机制,以避免编程时犯莫名其妙的错误。
上善若水,无欲则刚

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
5525
积分
1473
帖子
429
主题
93
阅读权限
60
注册时间
2009-9-22
最后登录
2022-5-23
3#
发表于 2010-11-19 09:13:58 |只看该作者
可能管理员太忙了,没空回答。
自己动手编了个测试程序,问题有了答案。
程序如下:
Begin
        If (BarStatus==0) { SetGlobalVar(2,0); Return; } //初始化计数器
        SetGlobalVar(2,GetGlobalVar(2)+1); //Ticks计数
    FileAppend("C:\\Test4.Log",Text(GetGlobalVar(2))+" "+TimeToString(Time)+" "+TimeToString(CurrentTime)+" "+
                IIFString(BarStatus==2,"#2","#1")+ " "+Text(CurrentBar)+" "+Text(Open)+" "+Text(High)+" "+Text(Low)+" "+Text(Close));
End
上善若水,无欲则刚

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
5525
积分
1473
帖子
429
主题
93
阅读权限
60
注册时间
2009-9-22
最后登录
2022-5-23
4#
发表于 2010-11-19 09:15:56 |只看该作者
本帖最后由 efrog 于 2010-11-19 09:37 编辑

一部分记录如下,大家可以根据结果推断上述问题的答案。
3013 09:13:00 09:13:47 #2 3013 6390 6392 6383 6387
3014 09:13:00 09:13:48 #2 3013 6390 6392 6383 6387
3015 09:13:00 09:13:51 #2 3013 6390 6392 6383 6388
3016 09:13:00 09:13:56 #2 3013 6390 6392 6383 6387
3017 09:13:00 09:13:57 #2 3013 6390 6392 6383 6387
3018 09:13:00 09:13:59 #2 3013 6390 6392 6383 6386
3019 09:13:00 09:14:01 #2 3013 6390 6392 6383 6385
注:这是Bar1的最后一个Tick,即Tick1

3020 09:13:00 09:14:02 #1 3013 6390 6392 6383 6385
注:当Tick2来临时,先补执行一次BarStatus为1的程序,其Open、High、Low、Close是完整的Bar1数据

3021 09:14:00 09:14:02 #2 3014 6386 6386 6386 6386
注:这是Bar2的第一个Tick,即Tick2

3022 09:14:00 09:14:03 #2 3014 6386 6386 6386 6386
3023 09:14:00 09:14:04 #2 3014 6386 6387 6386 6387
3024 09:14:00 09:14:06 #2 3014 6386 6388 6386 6388
3025 09:14:00 09:14:07 #2 3014 6386 6388 6386 6388
3026 09:14:00 09:14:07 #2 3014 6386 6388 6386 6388
3027 09:14:00 09:14:10 #2 3014 6386 6390 6386 6390
3028 09:14:00 09:14:11 #2 3014 6386 6390 6386 6389
3029 09:14:00 09:14:11 #2 3014 6386 6390 6386 6390
3030 09:14:00 09:14:14 #2 3014 6386 6390 6386 6386
3031 09:14:00 09:14:16 #2 3014 6386 6390 6386 6388
3032 09:14:00 09:14:17 #2 3014 6386 6390 6386 6388
3033 09:14:00 09:14:18 #2 3014 6386 6390 6386 6390
3034 09:14:00 09:14:19 #2 3014 6386 6391 6386 6391
3035 09:14:00 09:14:19 #2 3014 6386 6391 6386 6391
3036 09:14:00 09:14:20 #2 3014 6386 6393 6386 6393
3037 09:14:00 09:14:20 #2 3014 6386 6393 6386 6391
3038 09:14:00 09:14:21 #2 3014 6386 6393 6386 6393
3039 09:14:00 09:14:22 #2 3014 6386 6395 6386 6395
3040 09:14:00 09:14:22 #2 3014 6386 6395 6386 6393
3041 09:14:00 09:14:23 #2 3014 6386 6395 6386 6395
3042 09:14:00 09:14:23 #2 3014 6386 6395 6386 6394
3043 09:14:00 09:14:24 #2 3014 6386 6395 6386 6394
3044 09:14:00 09:14:27 #2 3014 6386 6395 6386 6393
3045 09:14:00 09:14:28 #2 3014 6386 6395 6386 6392
3046 09:14:00 09:14:29 #2 3014 6386 6396 6386 6396
3047 09:14:00 09:14:37 #2 3014 6386 6396 6386 6394
3048 09:14:00 09:14:38 #2 3014 6386 6396 6386 6391
3049 09:14:00 09:14:39 #2 3014 6386 6396 6386 6395
3050 09:14:00 09:14:41 #2 3014 6386 6396 6386 6391
3051 09:14:00 09:14:41 #2 3014 6386 6396 6386 6392
3052 09:14:00 09:14:42 #2 3014 6386 6396 6386 6393
3053 09:14:00 09:14:44 #2 3014 6386 6396 6386 6391
3054 09:14:00 09:14:45 #2 3014 6386 6396 6386 6391
3055 09:14:00 09:14:49 #2 3014 6386 6396 6386 6390
3056 09:14:00 09:14:50 #2 3014 6386 6396 6386 6391
3057 09:14:00 09:14:52 #2 3014 6386 6396 6386 6390
3058 09:14:00 09:14:55 #2 3014 6386 6396 6386 6391
3059 09:14:00 09:15:00 #2 3014 6386 6396 6386 6392
3060 09:14:00 09:15:00 #2 3014 6386 6396 6386 6391
3061 09:14:00 09:15:01 #2 3014 6386 6396 6386 6390
3062 09:14:00 09:15:03 #1 3014 6386 6396 6386 6390
3063 09:15:00 09:15:03 #2 3015 6389 6389 6389 6389
3064 09:15:00 09:15:03 #2 3015 6389 6389 6387 6387
3065 09:15:00 09:15:04 #2 3015 6389 6389 6387 6387
3066 09:15:00 09:15:05 #2 3015 6389 6389 6387 6389
3067 09:15:00 09:15:07 #2 3015 6389 6391 6387 6391
3068 09:15:00 09:15:08 #2 3015 6389 6391 6387 6391
上善若水,无欲则刚

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
5#
发表于 2010-11-19 12:00:08 |只看该作者
在新旧bar交易的时候,新bar的第一个tick出现的时候,公式会计算一遍前一根bar,然后再运行新的这个tick
这个帖子里有关于这个的处理,你可以看看http://tradeblazer.net/forum/thread-5506-1-1.html

它分为了CurrentBar==BarCount-2和BarStatus == 2两种情况

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
116920
积分
625
帖子
530
主题
64
阅读权限
60
注册时间
2013-3-15
最后登录
2014-5-7
6#
发表于 2013-8-28 11:33:24 |只看该作者
我有点想不太明白的是为什么新Bar的第一个Tick还要先运行一下前一个Bar的数据?
这样的设计出于什么目的?

如果我理解有误,一起各位不惜赐教。谢谢

使用道具 举报

Rank: 2

精华
0
UID
163068
积分
56
帖子
38
主题
12
阅读权限
30
注册时间
2011-1-1
最后登录
2022-12-12
7#
发表于 2015-7-23 09:19:20 |只看该作者
TB运行机制的说明太少了,好多东西靠猜。不知道他们领导咋想的。

使用道具 举报

Rank: 1

精华
0
UID
182978
积分
8
帖子
7
主题
1
阅读权限
10
注册时间
2014-3-20
最后登录
2018-7-6
8#
发表于 2015-9-21 20:15:08 |只看该作者
新旧bar交易的时候,新bar的第一个tick出现的时候,公式会计算一遍前一根bar的最好一个tick,然后再运行新的这个tick,终于知道了这个知识

使用道具 举报

Rank: 1

精华
0
UID
205956
积分
10
帖子
9
主题
1
阅读权限
10
注册时间
2015-3-26
最后登录
2016-5-21
9#
发表于 2015-9-25 15:28:58 |只看该作者
mark

使用道具 举报

Rank: 4

精华
0
UID
24858
积分
301
帖子
38
主题
9
阅读权限
50
注册时间
2011-1-26
最后登录
2018-1-23
10#
发表于 2017-4-13 22:36:17 |只看该作者
mark

使用道具 举报

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

bottom

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

GMT+8, 2024-5-16 04:00

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部