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

[求助]序列長(zhǎng)度不夠時(shí)summation的一個(gè)奇怪問題 [開拓者 TB]

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

    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

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

     

  • TB技術(shù)人員: summation是序列函數(shù),運(yùn)算是不可以放在條件下的。。
    條件下取值受限是可能導(dǎo)致計(jì)算結(jié)果出錯(cuò)的。
    建議使用一個(gè)中間變量在,在條件外將summation的計(jì)算結(jié)果賦值 給基本變量。在條件內(nèi)可以該變量的結(jié)果代入其它的計(jì)算或判斷中。

     

  • TB客服:
    小米 發(fā)表于 2015-12-8 15:51
    summation是序列函數(shù),運(yùn)算是不可以放在條件下的。。
    條件下取值受限是可能導(dǎo)致計(jì)算結(jié)果出錯(cuò)的。
    建議使用 ...

    了解,謝謝版主的回答!

    那這樣的話,TB自帶的AdaptiveMovAvg()是不是計(jì)算有微小誤差。我就是自己用別的語言實(shí)現(xiàn)AdaptiveMovAvg()函數(shù)時(shí)與TB的結(jié)果做比較發(fā)現(xiàn)這個(gè)問題的。

    TB自帶的系統(tǒng)函數(shù)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的值是一個(gè)迭代值,用到了AMA[1],如果開始時(shí)候summation計(jì)算有誤的話,就會(huì)影響整個(gè)AMA序列)

     

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

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



    在上一樓的回復(fù)里,我有說到是“條件下取值受限是可能導(dǎo)致計(jì)算結(jié)果出錯(cuò)的”,強(qiáng)調(diào)可能二字并非咬字眼,而是因?yàn)闂l件的不同,其受影響的結(jié)果也可能有不同。
    如果您在自己寫的公式里,能保證在條件中使用序列函數(shù)的計(jì)算結(jié)果的正確性,是可以在條件下使用的。如果不能保證,才需要使用上述建議中的中間變量了。

    TB的絕大部分函數(shù)里都有類似的使用,這個(gè)計(jì)算結(jié)果是確保正確的的方會(huì)這么用。。
    您可以再驗(yàn)證一下該自帶函數(shù),如果計(jì)算結(jié)果確實(shí)不是您想要的,可以自己新建函數(shù)來實(shí)現(xiàn)所需的想法。

 

有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友

可聯(lián)系技術(shù)人員 QQ: 511411198  點(diǎn)擊這里給我發(fā)消息進(jìn)行 有償 編寫!不貴!點(diǎn)擊查看價(jià)格!


【字體: 】【打印文章】【查看評(píng)論

相關(guān)文章

    沒有相關(guān)內(nèi)容
主站蜘蛛池模板: 成人国产精品免费视频| 波多野结衣之双调教hd| 最近最新的免费中文字幕| 国产日韩在线视频| 一区二区在线视频免费观看| 男孩子和男孩子在一起do| 国产成人无码一区二区三区在线 | 在线观看高嫁肉柳1一4集中文| 亚洲日本在线观看| 美女毛片一区二区三区四区| 天堂а√在线中文在线新版| 久久久精品免费| 美女扒开内裤羞羞网站| 国产欧美色一区二区三区| chinese乱子伦xxxx国语对白| 日本19禁啪啪无遮挡免费动图| 你是我的女人中文字幕高清| 亚洲最大激情中文字幕| 挠胸挠乳尖视频| 亚洲男女一区二区三区| 老司机免费在线| 国产精品麻豆免费版| 一级片中文字幕| 欧美日韩一区二区三区自拍| 午夜成人无码福利免费视频| 麻豆福利在线观看| 女人被男人躁到呻吟的| 亚洲性久久久影院| 777奇米影视视频在线播放| 奇米影视在线观看| 久久91精品综合国产首页| 欧美xxxxx高潮喷水| 四虎影视在线观看永久地址| 久久综合热88| 国产裸体美女永久免费无遮挡| 久久久久久九九精品久小说| 欧美一级片在线看| 亚洲综合无码无在线观看| 香蕉视频在线观看网站| 国产精品成人一区二区三区| 九九99re在线视频精品免费|