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

标题: 用NthCon求均线的最大最小值 [打印本页]

作者: seal_2011    时间: 2019-9-20 22:47:00     标题: 用NthCon求均线的最大最小值

例如 价格下穿10日均线时,与上次下穿10日均线之间 的最大值,同样求最小值。先用NthCon函数求两次穿越间隔的周期数,再用Highest Lowest函数求最大最小值。

结果是,间隔的周期数是对的,但后面求得最大值和最小值是错的。
下面是语句,不知道是哪里错了?

Params
        Numeric shrt(10);
       
Vars
        NumericSeries mean_shrt;
        NumericSeries maxprice;
        NumericSeries minprice;
        Bool goldcross;
        Bool deadcross;
        Numeric goldbar;
        Numeric deadbar;
       
Begin

        mean_shrt=AverageFC(close,shrt);
        goldcross=CrossOver(Close,mean_shrt);
        deadcross=CrossUnder(Close,mean_shrt);
        goldbar=NthCon(goldcross,1);
        deadbar=NthCon(deadcross,1);
       
        If(goldcross)
        {
                minprice=Lowest(Low[1],deadbar);
                maxprice=maxprice[1];
        }
       
        else if (deadcross)
        {
                maxprice=Highest(High[1],goldbar);
                minprice=minprice[1];
        }
        Else
        {
                maxprice=maxprice[1];
                minprice=minprice[1];
        }

        Commentary("goldbar="+Text(goldbar));
        Commentary("deadbar="+Text(deadbar));
        PlotNumeric("maxprice",maxprice);
        PlotNumeric("minprice",minprice);
       
End

作者: Yuen_Lee    时间: 2019-9-21 22:15:53

要将Lowest()和Highest()移到条件语句外,因为函数输入变量里含有序列变量
作者: seal_2011    时间: 2019-9-22 16:05:36

Yuen_Lee 发表于 2019-9-21 22:15
要将Lowest()和Highest()移到条件语句外,因为函数输入变量里含有序列变量

语句怎么改?只有条件是真,才用到Lowest()和Highest()函数
另外,是不是只要函数输入有序列变量,就不能用在条件语句里吗?
作者: Yuen_Lee    时间: 2019-9-23 10:45:20

可以先设两个临时变量,在IF语句前记录Lowest和Highest的值,如
r1 = Lowest(...);
r2 = Highest(...);

If(goldcross)
{
    minprice = r1;
    ...
}
else if (deadcross)
{
    maxprice = r2;
    ...
}
作者: seal_2011    时间: 2019-9-24 12:54:13

Yuen_Lee 发表于 2019-9-23 10:45
可以先设两个临时变量,在IF语句前记录Lowest和Highest的值,如
r1 = Lowest(...);
r2 = Highest(...);

非常感谢




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