StandardDev函数
2022-06-10 06:22

Params
    //此处添加参数
Vars
    //此处添加变量
    Series<Numeric> LNDIFF;//DIFF对数值
    Series<Numeric> LNDEA;
    Series<Numeric> LNMACD;

Events
    OnBar(ArrayRef<Integer> indexs)
    {
        LNDIFF= 10000*(XAverage(Ln(Close),12) - XAverage(Ln(Close), 26));//改造后的LNDIFF 
        LNDEA =XAverage(LNDIFF,9);//LNDIFF的M个周期指数平滑移
        LNMACD= 2*(LNDIFF-LNDEA);
        PlotString("K线数",TEXT(CurrentBar+1),LOW);
        PlotString("标准差",TEXT(StandardDev(LNDIFF,(CurrentBar+1),2)),LOW);//当前K线以前所有k线的LNDIFF样本标准差
        PlotString("LNDIFF",TEXT(LNDIFF),LOW);
        PlotString("AVGLNDIF",TEXT(Averagefc(LNDIFF,(CurrentBar+1))),LOW);//当前K线以前所有k线的LNDIFF的平均值
    }

 不能正确输出样本标准差和AVGLNDIF,请老师们指教

评论区
qdyxr0001

谢谢您的解答。

2022-06-13 17:11
qdyxr0001

别人指出软件有问题,与别的软件不一样,到底有没有问题,是你们要检查的,不是我需要给你们检查。

2022-06-12 11:02
qdyxr0001

只要有点统计学知识就知道TBquant是错的。我并没有假定文华是对的。我没必要跟你浪费时间了,一批固步自封的家伙。

2022-06-12 10:56
qdyxr0001

有点基本的统计学知识就知道TBQUANT是错的

2022-06-12 10:53
qdyxr0001

2022-06-11 21:05
qdyxr0001

我要计算当前k线以前所有lndiff值的标准差,如果我的其他开仓条件同时满足lndiff在lndiff标准差的两倍范围内则开仓,超过则不开仓。发现的这个问题,文华财经上没问题,代码移植到TBQUANT出现不开仓情况。检查发现的。那就不浪费你时间了,继续用文华财经就是了。再就是STANDARDERD不能用变量做参数,也不好实现。其实我也是在浪费时间。

你的图STANDARDDEV(LNDIFF,5000,2),参数是这么设的吗?k线总数是50000吗?你的图形STANDARDDEV函数的第二个参数值一定很小或者k线总数很少。我没说算法上有什么不同,我是说可能调用函数时代入的数据总数少。

 

 

2022-06-11 19:57
qdyxr0001

我用系统提供的standarddev函数验算了,并且与文华财经做了对比,std是文华财经的一个函数,我也自编了递推函数做了对比,文华财经与我做的递推函数基本一致,而与tbquant差别很大,另外在参数比较小时确实正确。稍微有点统计学知识就能知道在一个10000数据的样本改变20个数据,并且数据离散性不大,样本标准差绝对不会改变那么大,这点我会负责任。另外函数的代码与文华财经没有区别,所以我一开始认为样本数量有限制。

BARNUMBER=BARNUMBER[1]+1;
            AVGLNDIF=AVGLNDIF[1]+(LNDIFF-AVGLNDIF[1])/BARNUMBER;
            LNDIFPF=LNDIFPF[1]+SQR(LNDIFF);
            LNDIFSTD=IIF(BARNUMBER>=2,Sqrt((LNDIFPF-BARNUMBER*SQR(AVGLNDIF))/(BARNUMBER-1)),0);

编一个递推公式递推出沪深300指数15分钟线从指数开始推出时的数据计算每根k线的样本标准差,然后与调用函数计算出的标准差对比一下,就知道了。函数没问题。

你的验证方法有问题,这个问题不能用小样本验算,样本数量要超过5000.

2022-06-11 18:14
qdyxr0001

可以把上面的公式加载到沪深300的15分钟k线上,总k线数为50000,观察一下样本标准差的值,在20根k线之内标准差有的15,有的30以上,明显是错误。1个10000数据的样本只变化20个数据标准差应该变化很小。标准差在很小的范围由22变为14。

2022-06-11 10:03
qdyxr0001

Params
    //此处添加参数
Vars
    //此处添加变量
    Series<Numeric> LNDIFF;//DIFF对数值
    Series<Numeric> LNDEA;
    Series<Numeric> LNMACD;

Events
    OnBar(ArrayRef<Integer> indexs)
    {
        LNDIFF= 10000*(XAverage(Ln(Close),12) - XAverage(Ln(Close), 26));//改造后的LNDIFF 
        LNDEA =XAverage(LNDIFF,9);//LNDIFF的M个周期指数平滑移
        LNMACD= 2*(LNDIFF-LNDEA);
        //PlotString("K线数",TEXT(CurrentBar+1),LOW);
        PlotString("标准差",TEXT(STD(LNDIFF,10000,2)),LOW);//当前K线以前所有k线的LNDIFF样本标准差
        //PlotString("LNDIFF",TEXT(LNDIFF),LOW);
        PlotString("AVGLNDIF",TEXT(Averagefc(LNDIFF,10000)),LOW-40);//当前K线以前所有k线的LNDIFF的平均值
    }

这样改为常量数值也错误。

2022-06-11 08:43
qdyxr0001

K线数量在48000,STANDARDEV  AVERAGE等函数的数值个数有没有限制?,可以加载到000300的15分钟线看一下,标准差、平均值起伏很大。

2022-06-10 06:51
顶部