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

TB數據回溯“潛”規則 [開拓者 TB]

  • 咨詢內容: 數據回溯
    在TradeBlazer公式中有三種類型的數據回溯:變量回溯、參數回溯和函數回溯。

    MaxBarsBack
    在討論回溯之前,我們需要了解公式中一個和數據回溯相關的系統函數MaxBarsBack,該函數返回公式應用執行所需的最大回溯Bar數目,該函數初始值為0,在公式應用從左到右每個Bar執行的過程中,會隨著代碼中對系統函數,序列變量等值的回溯調用而增加,所有Bar索引小于MaxBarsBack的輸出都是不準確的,會被忽略掉。

    變量回溯
    TradeBlazer公式共支持九種數據類型,但對于變量定義,引用類型是無效的,剩余六種數據類型中分為簡單和序列兩大類,簡單類型變量是單個的值,不能對其進行回溯,序列類型變量是和Bar長度一致的數據排列,我們可以通過回溯來獲取當前Bar以前的任意值。

    要使用變量回溯,需要在變量的后面,使用中括號"[nOffset]",nOffset是要回溯引用的Bar相對于當前Bar的偏移值,該值必須大于等于0,當nOffset = 0時,即為獲取當前Bar的變量值。

    例如,我們定義如下公式應用:

    Vars
        NumericSeries MyVal;
    Begin
        MyVal = Average(Close,10);
        PlotNumeric("MyVal",MyVal[3]);
    End

    以上公式定義數值型序列變量MyVal,MyVal等于收盤價的10個周期的平均值,然后將序列變量MyVal的前3個Bar數據輸出。

    以上公式MyVal的前9個數據因為需要計算的Bar數據不足,返回的值無效,從第10個Bar開始,MyVal獲取到正確的平均值,但是我們需要輸出的數據是MyVal[3],即前3個Bar的數據,因此,直到第13個Bar,有效的數據才會被輸出。以上公式的13是該公式需要的最少引用周期數,如果將輸出信息畫到超級圖表中,前12個Bar是沒有圖形顯示的。

    當nOffset>CurrentBar時,對于變量的回溯發生越界,這種情況下,將返回該變量的第一個Bar的值。

    參數回溯
    TradeBlazer公式支持的九種基本類型,在用戶函數的參數定義中全部支持,在其他的公式中參數定義只支持三種簡單類型。因此,關于參數的回溯問題,只對用戶函數有效,以下我們舉例說明用戶函數序列參數的使用。

    要使用參數回溯,需要在參數的后面,使用中括號"[nOffset]",nOffset是要回溯引用的Bar相對于當前Bar的偏移值,該值必須大于等于0,當nOffset = 0時,即為獲取當前Bar的參數值。

    例如,我們定義一個用戶函數MyFunc,腳本如下:

    Params
        NumericSeries   Price(0);
        Numeric         Length(10);
    Vars
        Numeric         MyAvg;
        Numeric         MyDeviation;
    Begin
        MyAvg = Summation(Price,Length)/Length;
        MyDeviation = MyAvg - Price[Length];
        Return MyDeviation;
    End

    以上的例子,對輸入的Price我們求其10個周期的平均值,然后求出該平均值和Price的前Length個Bar的值之間的差值,將其返回。對于Price[Length]這樣的參數回溯引用,其實現原理和上節所描述的變量回溯引用基本一致。

    函數回溯
    函數回溯分為系統函數的回溯和用戶函數的回溯。

    系統函數中回溯的使用主要是針對Bar數據。比如我們需要獲取上2個Bar的收盤價,腳本為Close[2];又或者我們需要獲取10個Bar前的成交量,腳本為Vol[10]。對于Bar數據的回溯是系統函數中最常用的,雖然也可以對行情數據和交易數據等進行回溯,但是大部分并無實質的意義,返回的結果和不回溯是一樣的,因此,不推薦如此使用。

    要對系統函數回溯引用,我們可以通過在函數名稱后面添加"[nOffset]"獲取其回溯值,nOffset是要回溯引用的Bar相對于當前Bar的偏移值,該值必須大于等于0,當nOffset = 0時,即為獲取當前Bar的參數值。

    帶有參數的函數回溯,需要將"[nOffset]"放到參數之后,另外,無參數和使用默認參數的情況下,函數調用的括號可以省略。例如:Close[2]等同于Close()[2]。

    用戶函數的回溯和系統函數原理基本一致,但考慮到系統的執行速度和效率等因素,目前,TradeBlazer公式不支持對用戶函數的回溯,如果您想要獲取用戶函數的回溯值,建議您將函數返回值賦值給一個序列變量,通過對序列變量的回溯來達到相同的目的。

    如下面的腳本所示,取Close的10個Bar平均值的4個周期前的回溯值:

    Vars
        NumericSeries AvgValue;
        Numeric       TmpValue;
    Begin   
        AvgValue = Average(Close,10);
        TmpValue = AvgValue[4];
        ...
    End

     

  • TB技術人員: 本帖最后由 bbenben 于 2013-10-3 06:31 編輯

    按照現行TB規則:
    Vars
        NumericSeries MyVal;
    Begin
        MyVal = Average(Close[5],10);
        PlotNumeric("MyVal",MyVal[3]);
    End

    以上公式定義數值型序列變量MyVal,MyVal等于5周期前收盤價的10個周期的平均值,然后將序列變量MyVal的前3個Bar數據輸出。

    以上公式MyVal的前14個數據因為需要計算的Bar數據不足,返回的值無效,從第15個Bar開始,MyVal獲取到正確的平均值,但是我們需要輸出的數據是MyVal[3],即前3個Bar的數據,因此,直到第18個Bar,有效的數據才會被輸出。以上公式的18是該公式需要的最少引用周期數,如果將輸出信息畫到超級圖表中,前17個Bar是沒有圖形顯示的。
    當nOffset>CurrentBar時,對于變量的回溯發生越界,這種情況下,將返回該變量的第一個Bar的值。
    =================================================================================
    但我們用超級圖表測試,從第10個Bar開始,MyVal獲取到有效的平均值,并可以輸出。
    按照現行規則MaxBarsBack=5+10+3,但系統中實際執行的卻是MaxBarsBack=9,從第10個bar開始輸出。
    漏洞啊


     

  • TB客服: 本帖最后由 bbenben 于 2013-10-3 06:39 編輯

    經過測試MaxBarsBack=max(5,10-1,3)=9
                  MaxBarsBack=max(20,10-1,20)=20
    而正確值應當是  MaxBarsBack=Sum(5,10,-1,3)=17
                              MaxBarsBack=Sum(20,10,-1,20)=49

     

  • 網友回復: 樓主講述的非常詳細。不過類似于close[3]這種,是需要向后移3個才能得到正確的值,之前也可以取到值的,以第1跟K線為例,close[3]會取到當天的收盤價,直到第四根K線才能回溯出正確的值

     

  • 網友回復: 樓主,講的太好了!

 

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

可聯系技術人員 QQ: 1145508240  有需要幫忙請點擊這里留言!!!進行 有償 編寫!不貴!點擊查看價格!


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

相關文章

    沒有相關內容
主站蜘蛛池模板: 日韩小视频在线观看| 精品久久久久久无码专区不卡| 国语自产偷拍精品视频偷| 久久久久亚洲av片无码| 欧美激情一区二区三区蜜桃视频| 啦啦啦资源在线观看视频| 欧美污视频网站| 欧美成a人片在线观看| 国产aⅴ精品一区二区三区久久| 2021国产精品视频网站| 巨胸喷奶水视频www网免费| 久久综合九色综合91| 波多野结衣在线观看中文字幕| 国产极品视觉盛宴| av色综合网站| 日韩精品福利在线| 亚洲爆乳无码专区www| 香港黄页亚洲一级| 小兔子救了蛇被蛇两根进去| 久久综合AV免费观看| 欧美精品v欧洲精品| 兽皇videos极品另类| 1000部啪啪毛片免费看| 日本a在线视频| 亚洲乱人伦在线| 波多野结衣上班| 动漫人物桶动漫人物免费观看 | 亚洲精品网站在线观看你懂的| 美女免费精品高清毛片在线视| 国产性夜夜春夜夜爽1a片| 2021国产精品视频网站| 大胸校花被老头粗暴在线观看| 两根手指就抖成这样了朝俞| 日本老头变态xxxx| 亚洲av无码专区在线观看下载| 欧美精品在线视频| 人人看人人添人人谢| 精品国产天堂综合一区在线| 国产在线91区精品| 欧美极度极品另类| 国产精品国产免费无码专区不卡|