A:REF(BARPOS,BARSSINCE(Date<>Ref(Date,1)));
DRAWTEXT(BARPOS>A,LOW,'1');
//-去掉第一天,只在头一天之后的最低价显示1
B:BARSLAST(Date<>Ref(Date,1));
DRAWTEXT(CURRBARSCOUNT>B,HIGH,'2');
//-去掉最后一天,只在最后一天之前的最高价显示2
我想在回测时,去掉头尾两天。即回测 7.31-9.01这段时间,实际只回测08.01-08.31这一整个月。
就比如显示MA线好了,除了第一天和最后一天其他中间的时间段都显示它。
IF BARPOS>A and CURRBARSCOUNT>B Then F:ma(c,10); Else F:=ma(c,10);
date<>CURRENTDATE 这样写只能在实盘的最后一点数据用。假如回测一年前的数据那就没用了。
但是根据我自己的思路发现上面的代码只有去掉第一天的可以,去掉最后一天的不行。
求老师帮忙写个能在回测时去掉头尾两天的例子,谢啦.
没有别的办法了吗?
这是一种类似未来的判断,所以去不掉
类似这样的判断:
dd:valuewhen(islastbar,date);
date<dd 这个判断就是能判断小于最后一天的日期
但是dd的值无法被之前的历史k线所获取,是一个未来的值
懂了,意思就是回测的机制,不是说一次性丢出所有K线,而是一个K线一个K线的走?
那假如回测一个月,回测时获取CURRBARSCOUNT 的值,那么它是这一个月K线总数递减,还是比如说现在回测走到了第三天,那么他的值是这三天的总数递减?
1.一次性的计算也是要一根k线接一根k线过去的
2.CURRBARSCOUNT,这个函数倒是可以这没用去掉尾巴,CURRBARSCOUNT>=最后一天的k线数量
k线数量手工去数好了
就是说假如回测的是1个月 ,那么这么函数,就是这一个月K线总和的递减,,假如最后一天有80个K 那么只要 CURRBARSCOUNT>80
就可以是吧,
多谢,老师