设为首页收藏本站

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

实在看不明白,求帮助 [复制链接]

Rank: 2

精华
0
UID
173160
积分
82
帖子
53
主题
19
阅读权限
30
注册时间
2013-9-30
最后登录
2018-4-3
跳转到指定楼层
1#
发表于 2013-10-18 13:11:46 |只看该作者 |倒序浏览
本帖最后由 research 于 2013-10-18 13:15 编辑

以下是网友穿堂风在本论坛发过的一个策略(链接为;http://bbs.tb18.net/thread-15508-1-1.html)其中的一部分,因为没有基础,看不明白,贴上来请教;
params
... ...
Numeric f1(0.35);
Numeric f2(0.07);
Numeric f3(0.25);
... ...
Vars
NumericSeries ssetup(0);
NumericSeries bsetup(0);
NumericSeries senter(0);
NumericSeries benter(0);
NumericSeries bbreak(0);
NumericSeries sbreak(0);
NumericSeries ltoday(0);
NumericSeries hitoday(9999);
...  ...
Begin
... ...
if(BarStatus==0)
{
        startnow=0;
        div=max(xdiv,1);
}

if(Date != Date[1])
{
        SetGlobalVar(0,0);
        SetGlobalVar(1,0);
        startnow=startnow+1;
        ssetup=hitoday[1]+f1*(Close[1]-ltoday[1]);
        senter=((1+f2)/2)*(hitoday[1]+Close[1])-(f2)*ltoday[1];
        benter=((1+f2)/2)*(ltoday[1]+Close[1])-(f2)*hitoday[1];
        bsetup=ltoday[1]-f1*(hitoday[1]-Close[1]);
        bbreak=ssetup+f3*(ssetup-bsetup);
        sbreak=bsetup-f3*(ssetup-bsetup);
        hitoday=High;
        ltoday=Low;


       rfilter=(hitoday[1]-ltoday[1])>=i_rangemin;
}

if(High>hitoday)
{
        hitoday=High;
}
if(Low<ltoday)
{
        ltoday=Low;
}
不明白主要在红色位置:当第一个tick进来时,hitoday[1],ltoday[1]都应该取初值,算出ssetup,senter,benter,bsetup等,后面对hitoday,ltoday赋值。我的问题是,按TB(V4)的解释下次如果是同一根BAR运行公式的话,变量值又会传递上一根BAR的值(这里我理解还应该是初值),只有这根BAR的最后一个tick运行完后,序列变量的值才能保留下来。也就是说在当天开盘的第一根BAR中hitoday[1]与 ltoday[1]始终取初值计算。我知道我的理解是错的,但又不知道错在哪,请求帮助,非常感谢!

Rank: 1

精华
0
UID
140858
积分
43
帖子
29
主题
12
阅读权限
10
注册时间
2013-7-1
最后登录
2017-1-31
2#
发表于 2013-10-18 13:47:21 |只看该作者
本帖最后由 jrqh116098 于 2013-10-18 13:51 编辑

真是要感谢“穿堂风”,无数新手都是看他的代码入门的,我也是,这组代码我也看过。说实在的,你的问题,我并没有完全搞明白。我的理解是,当天的第一根K线一旦开始,不管是否有结束,hitoday[1]与 ltoday[1]肯定是已经固定下来了,而且这2个值就是前一个交易日的最高点和最低点。“变量值又会传递上一根BAR的值”,这怎么可能呢,上根K线的所有值都已经确定了。只有过了第一根K线,ssetup等值就会发生变化,因为hitoday[1]与 ltoday[1]已经开始变化了.

使用道具 举报

Rank: 2

精华
0
UID
173160
积分
82
帖子
53
主题
19
阅读权限
30
注册时间
2013-9-30
最后登录
2018-4-3
3#
发表于 2013-10-18 14:28:45 |只看该作者
很感谢你回复我的问题,有讨论才能把问题搞明白。“变量值又会传递上一根BAR的值”,我理解的是和上一个BAR对应的序列变量的值,也就是开始运行之前序列变量的值,所以我就认为还是初值。

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
116229
积分
2373
帖子
2247
主题
18
阅读权限
70
注册时间
2013-3-4
最后登录
2019-3-24
4#
发表于 2013-10-21 10:24:26 |只看该作者
说一点我的理解。

这里发生赋值和计算的条件是当前bar是日期和前一根bar是日期不同,所以之后如果是同一日期的话,就不会重复计算了。如果还是当前bar,不同的tick,是会再次计算的。hitoday[1]是上一个bar的值,而不是上一次计算的值,这里如果是同bar不同的tick计算,它都是上一个bar的值,固定不变。
hitoday,ltoday两个变量分别保存的是当日的最高值和最低值,如果是当日的第一个bar,是会赋值为当前的high值的,之后,同一日期,不同的bar再进行比较。

使用道具 举报

Rank: 2

精华
0
UID
173160
积分
82
帖子
53
主题
19
阅读权限
30
注册时间
2013-9-30
最后登录
2018-4-3
5#
发表于 2013-10-21 11:20:05 |只看该作者
谢谢版主回复

使用道具 举报

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

bottom

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

GMT+8, 2024-5-24 05:28

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部