设为首页收藏本站

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

两种写法得出的结论不一样,求高手解答一下。 [复制链接]

Rank: 3Rank: 3

精华
0
UID
212247
积分
128
帖子
83
主题
23
阅读权限
40
注册时间
2015-6-28
最后登录
2019-11-15
跳转到指定楼层
1#
发表于 2017-10-22 15:29:45 |只看该作者 |倒序浏览

    想在早上十点的时候,取 9-10点之间的  最高价与最低价,  用了两种方法写,感觉上是都是可行的,第一种方法得出的结论不对,只是当前K线的高低点。


Params


Vars

  Numeric   high10;
  numeric   low10;
     
Begin


If(time==0.1000)
{
High10=Highest(high,59);
  Low10=Lowest(low,59);
SetGlobalVar(0,High10);
SetGlobalVar(1,Low10);

PlotNumeric("aa",high10,0,-1,0);
PlotNumeric("bb",low10,0,-1,0);
}
//PlotString("H10",text(high10),h,-1,0);
//PlotString("L10",text(low10),l,-1,0);


End
上面这种方法得出的是 10点根K线的最高最低价。
Params


Vars

  Numeric   high10;
  numeric   low10;
     
Begin

  High10=Highest(high,59);
  Low10=Lowest(low,59);
If(time==0.1000)
{
SetGlobalVar(0,High10);
SetGlobalVar(1,Low10);

PlotNumeric("aa",high10,0,-1,0);
PlotNumeric("bb",low10,0,-1,0);
}
//PlotString("H10",text(high10),h,-1,0);
//PlotString("L10",text(low10),l,-1,0);


End

把最高价最低价定义 放在时间外,又正常了,这是为何?


Rank: 1

精华
0
UID
125429
积分
3
帖子
3
主题
0
阅读权限
10
注册时间
2013-7-24
最后登录
2017-10-31
2#
发表于 2017-10-22 15:54:34 |只看该作者
time 是Bar的开始时间,在当根Bar没结束前time==0.1000你里面的代码每来个tick都会执行,直到当根Bar完成,High,Low也会更新,自然取不到正确值。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
212247
积分
128
帖子
83
主题
23
阅读权限
40
注册时间
2015-6-28
最后登录
2019-11-15
3#
发表于 2017-10-22 16:27:20 |只看该作者
cf_55390 发表于 2017-10-22 15:54
time 是Bar的开始时间,在当根Bar没结束前time==0.1000你里面的代码每来个tick都会执行,直到当根Bar完成, ...

用的历史回测,不是实时的。不存在这种问题。

使用道具 举报

Rank: 1

精华
0
UID
125429
积分
3
帖子
3
主题
0
阅读权限
10
注册时间
2013-7-24
最后登录
2017-10-31
4#
发表于 2017-10-22 18:40:11 |只看该作者
这个可能是Highest,Lowest底层封装的机制问题,写在外面是每个BAR执行一遍(历史回测)在条件T=0.1000里是只执行一次,你看看在实盘下或模拟盘中能否取到该值。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
212247
积分
128
帖子
83
主题
23
阅读权限
40
注册时间
2015-6-28
最后登录
2019-11-15
5#
发表于 2017-10-22 20:57:11 |只看该作者
cf_55390 发表于 2017-10-22 18:40
这个可能是Highest,Lowest底层封装的机制问题,写在外面是每个BAR执行一遍(历史回测)在条件T=0.1000里是 ...

第二个是  每根K先运算了一遍,然后再满足条件 time==0.1000 然后取到了
正确的最高最低价。  

第一个是  时间满足了 time==0,而做的 highest 与lowest 却只计算了当前的K线。前面的59根K线都没能通过这个函数计算得到。

现象是如此,底层的东西不清楚

使用道具 举报

Rank: 1

精华
0
UID
125429
积分
3
帖子
3
主题
0
阅读权限
10
注册时间
2013-7-24
最后登录
2017-10-31
6#
发表于 2017-10-23 23:50:31 |只看该作者
If(Time>0.233700)
{
High10=Highest(high,59);
Low10=Lowest(low,59);
SetGlobalVar(0,High10);
SetGlobalVar(1,Low10);

PlotNumeric("aa",high10,0,-1,0);
PlotNumeric("bb",low10,0,-1,0);
}
PlotString("H10",text(high10),h,-1,0);
PlotString("L10",text(low10),l,-1,0));
这样写盘中能取到0.233700之后的最高,最低值
If(Vol>0)
{
High10=Highest(high,59);
Low10=Lowest(low,59);
SetGlobalVar(0,High10);
SetGlobalVar(1,Low10);

PlotNumeric("aa",high10,0,-1,0);
PlotNumeric("bb",low10,0,-1,0);
}
PlotString("H10",text(high10),h,-1,0);
PlotString("L10",text(low10),l,-1,0);
这样写在盘中能取到正确值。

使用道具 举报

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

bottom

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

GMT+8, 2024-4-27 18:41

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部