开拓者期货期权程序化系统交易论坛

标题: 求助:如何取倒500日到倒250日(前年到去年当日)最高价 [打印本页]

作者: willxue    时间: 2019-6-23 10:11:56     标题: 求助:如何取倒500日到倒250日(前年到去年当日)最高价

        //倒500日~倒250日振幅
        myhigh=0;
        mylow=999999;
        if (currentbar>BarCount-250*2 && currentbar<=BarCount-250)
        {
                myhigh=1;
                if(high>myhigh) myhigh = high;
                if(low<mylow) mylow = low;
               
        }

合约是ru888,非实时(收盘后),输出结果:
myhigt, mylow还是0和999999,另外,输出barcount=4241
请问为什么循环不起作用,取不到区间极值,或者可有更简单的办法,非常感谢!
作者: Yuen_Lee    时间: 2019-6-28 09:38:09

指针每到一个Bar时都会执行一次这段语句,所以你看到的结果只是在最后一个Bar时的。可以用全局变量来记录高点和低点值,这样就可以得到想要的结果。

If(BarStatus == 0)
{
        SetGlobalVar(0,0);
        SetGlobalVar(1,999999);
}

If(currentbar>BarCount-250*2 && currentbar<=BarCount-250)
{
        If(High>GetGlobalVar(0)) SetGlobalVar(0,High);
        If(Low<GetGlobalVar(1)) SetGlobalVar(1,Low);
}

最后的最高和最低值结果用GetGlobalVar(0)和GetGlobalVar(1)调出。

作者: bahuang    时间: 2019-6-28 13:02:34

本帖最后由 bahuang 于 2019-6-28 13:04 编辑

是取前250日到前500日之间最高值?
总之你们的理解和描述都有问题. 怎么形容呢 如果取前2日到前5日最高值, 则每一个k线上都要取前2日到前5日
for i=2 to 5
{
        If(high > hst)
                hst = high;
}
你们的思路就算求出来, 也只能求出来最后一个k线的该值, 或者实盘中再形成新k可用
作者: Yuen_Lee    时间: 2019-6-28 14:44:58

bahuang 发表于 2019-6-28 13:02
是取前250日到前500日之间最高值?
总之你们的理解和描述都有问题. 怎么形容呢 如果取前2日到前5日最高值,  ...

谢谢bahuang的参与!我认为willxue希望得到的是日线结果,而且仅想知道当前日线时的结果,所以也仅仅“求出来最后一个K线的值”就可以了。我刚将我的程序放到TB验证了一下,能得到willxue想要的结果,加上下列的结果输出就能看到。

If(currentbar == BarCount-1)
FileAppend("C:\\log.txt", Text(Date)+"\t"+Text(GetGlobalVar(0))+"\t"+Text(GetGlobalVar(1)));

作者: qsb588986    时间: 2019-7-7 22:39:50

本帖最后由 qsb588986 于 2019-7-7 22:44 编辑






欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2