大伊人青草狠狠久久-大伊香蕉精品视频在线-大伊香蕉精品一区视频在线-大伊香蕉在线精品不卡视频-大伊香蕉在线精品视频75-大伊香蕉在线精品视频人碰人

您現在的位置:程序化交易>> 期貨公式>> 交易開拓者(TB)>> 開拓者知識>>正文內容

[求助]序列長度不夠時summation的一個奇怪問題 [開拓者 TB]

  • 咨詢內容: 要求10個bar的(close-close[1])的summation,一個很簡單的程序,如下:

    Params
            Numeric length(10);
    Vars
            Numeric closeSum1(0);
            Numeric closeSum2(0);
    Begin
            if(CurrentBar == 0)
            {
                    //do nothing
            }Else
            {
                    closeSum1 = Summation( Abs( close - close[1] ), length );               
            }
            closeSum2 = Summation(Abs( close - close[1] ),length);
            FileAppend("f:\\test.csv",Text(close)+","+Text(closeSum1)+","+Text(closeSum2));
    End

    最后輸出的數據結果如下:
    tbb.jpg (222.59 KB, 下載次數: 0) 2015-12-8 14:25:12 上傳

     

  • TB技術人員: summation是序列函數,運算是不可以放在條件下的。。
    條件下取值受限是可能導致計算結果出錯的。
    建議使用一個中間變量在,在條件外將summation的計算結果賦值 給基本變量。在條件內可以該變量的結果代入其它的計算或判斷中。

     

  • TB客服:
    小米 發表于 2015-12-8 15:51
    summation是序列函數,運算是不可以放在條件下的。。
    條件下取值受限是可能導致計算結果出錯的。
    建議使用 ...

    了解,謝謝版主的回答!

    那這樣的話,TB自帶的AdaptiveMovAvg()是不是計算有微小誤差。我就是自己用別的語言實現AdaptiveMovAvg()函數時與TB的結果做比較發現這個問題的。

    TB自帶的系統函數AdaptiveMovAvg()就是在條件判斷里用了summation,程序如下:

    Params
            NumericSeries Price(1);
            Numeric EffRatioLength(10);
            Numeric FastAvgLength(2);
            Numeric SlowAvgLength(30);
    Vars
            Numeric NetChg(0);
            Numeric TotChg(0);
            Numeric EffRatio(0);
            Numeric ScaledSFSqr(0);
            NumericSeries AMAValue;       
            Numeric SFDiff;
    Begin
            if(CurrentBar == 0)
            {
                    AMAValue = Price;
            }Else
            {
                    NetChg = Abs( Price - Price[EffRatioLength] );
                    TotChg = Summation( Abs( Price - Price[1] ), EffRatioLength );               
                    EffRatio = IIF(TotChg > 0, NetChg / TotChg, 0);
                    SFDiff = 2 / ( FastAvgLength + 1 ) - 2 / ( SlowAvgLength + 1 );               
                    ScaledSFSqr = Sqr( 2 / ( SlowAvgLength + 1 ) + EffRatio * SFDiff );               
                    AMAValue = AMAValue[1] + ScaledSFSqr * ( Price - AMAValue[1] );
            }
            Return AMAValue;
    End


    (AMA的值是一個迭代值,用到了AMA[1],如果開始時候summation計算有誤的話,就會影響整個AMA序列)

     

  • 網友回復: 本帖最后由 小米 于 2015-12-9 09:02 編輯
    mosquitog 發表于 2015-12-8 18:53
    了解,謝謝版主的回答!

    那這樣的話,TB自帶的AdaptiveMovAvg()是不是計算有微小誤差。我就是自己用別的 ...



    在上一樓的回復里,我有說到是“條件下取值受限是可能導致計算結果出錯的”,強調可能二字并非咬字眼,而是因為條件的不同,其受影響的結果也可能有不同。
    如果您在自己寫的公式里,能保證在條件中使用序列函數的計算結果的正確性,是可以在條件下使用的。如果不能保證,才需要使用上述建議中的中間變量了。

    TB的絕大部分函數里都有類似的使用,這個計算結果是確保正確的的方會這么用。。
    您可以再驗證一下該自帶函數,如果計算結果確實不是您想要的,可以自己新建函數來實現所需的想法。

 

有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友

可聯系技術人員 QQ: 511411198  點擊這里給我發消息進行 有償 編寫!不貴!點擊查看價格!


【字體: 】【打印文章】【查看評論

相關文章

    沒有相關內容
主站蜘蛛池模板: 成人免费一区二区三区在线观看 | 天天射天天射天天射 | 99精品视频观看 | 伊人狼人视频 | 亚洲国产高清视频在线观看 | 国产精品无码久久综合网 | 国产精品一区二区在线播放 | 亚洲人和日本人hd | 久草热视频 | 99视频在线播放 | 国产视频久| 特级毛片aaa免费版 特级毛片a级毛免费播放 | 一级a毛片 | 成人毛片在线视频 | 亚洲图片欧美日韩 | 久久精品国产无限资源 | 欧美人zoxxxx另类 | 黄色理伦 | www.涩| 欧美日本高清视频在线观看 | 日本边添边爱边做视频 | 日本一区二区三区久久 | 免费精品美女久久久久久久久 | 四虎e456tcom| 国产精品福利在线观看免费不卡 | 欧美丰满大乳大屁股毛片 | 99国产情在线视频 | 国产精品国产自线拍手机观看 | 婷婷色综合久久 | 呦女亚洲一区精品 | 四虎影视在线永久免费观看 | 亚洲视频免费一区 | 亚洲精品国产福利一区二区三区 | 国产三级在线精品男人的天堂 | 亚洲久久久久久久 | 久色影视 | 天天操夜夜操 | 亚洲天堂一区二区 | 一日本道加勒比高清一二三 | 成年女人色毛片免费 | 男人在线网站 |