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

TBV4公式升級說明[開拓者公式]

 

 
  •  經過很長一段時間的開發和調試工作,TBV4終于快要正式發布了,感謝各位朋友一路以來的關注和支持,這次升級主要是公式平臺的升級,修改可謂天翻地覆,杯具的就是,由于改動太多,沒法直接兼容TBV3的公式以及導入導出文件,請大家諒解!

    一、公式升級取消的功能點:
    1、內建平倉指令:
        已刪除8個內建平倉函數,準備等新版本穩定后以用戶函數的形式提供類似功能。
    2、保證金不足強平機制:
        舊版公式在測試和實際交易中,如果出現保證金不足的情況,會產生強制平倉的指令。考慮到保證金不足是以虛擬資金計算,如果設置不正確可能會導致實盤平倉的嚴重后果,所以取消該功能。
    3、延遲發單機制:
        舊版通過交易函數中使用delay參數達到延遲到下一個Bar開盤發單的效果,在實際應用中,通過Delay參數只能使用NextOpen等未來函數來獲取價格,整個設計過于復雜。考慮到可以通過獲取上一個Bar的條件值來進行判斷,在當前Bar開盤交易這種方法替代延遲發單的機制,決定取消該功能。
    4、公式類型調整:
        用戶字段,技術指標,K線型態,特征走勢,交易指令這5種類型公式統一為公式應用,公式應用既可以輸出線條,也可以進行交易。
    5、公式的條件表達式取消無效值傳遞機制:
        舊版本中,如果 a = 無效值 , b = 100, 則 a + b = 無效值。+-*/等數學運算及> < 等邏輯運算表達式都支持無效值傳遞機制。
        新版本中,如果 a = 無效值,b = 100,則 a + b <> 無效值。所以不能再用舊版本的方法來進行無效值判斷。
       進行這種調整是因為舊版本對所有的運算符進行了重載,但這種重載浪費大量的計算時間,導致公式執行效率低下,為了提高公式的運行效率,決定取消這種機制。
       在舊版本系統中,可能有以下類似的寫法:
       bInBoardRange = (Open < Q_LowerLimit + 10*MinMove*PriceScale) Or (Open > Q_UpperLimit - 10*MinMove*PriceScale);
       在不是當天的Bar上,因為Q_LowerLimit和Q_UpperLimit是無效值,因此整個表達式都是無效值。bInBoardRange的值為False,所以能夠正常使用。
       同樣的代碼,在新版中,由于沒有無效值的傳遞機制,在不是當天的Bar上,bInBoardRange的值可能是True,系統不能正常的運行。
       為了處理這種情況,需要進行有效性判斷,大致代碼如下:
       bInBoardRange  = false;
       If(Q_UpperLimit != InvalidNumeric && Q_LowerLimit != InvalidNumeric)
       {
          bInBoardRange = (Open < Q_LowerLimit + 10*MinMove*PriceScale) Or (Open > Q_UpperLimit - 10*MinMove*PriceScale);
      }



    二、公式升級增加的功能點:
    1、疊加商品可以進行交易和測試:
        舊版本只能使用Buy(1,MyPrice);這樣的語句進行交易,新版本可以使用Data1.Buy(1,MyPrice),以及Data1.MarketPosition這樣的函數獲取交易狀態。大部分函數都支持使用Data#.前綴進行調用。
       這樣可以方便的實現多個商品的,單個系統的組合測試,可以測試套利和對沖系統。
    2、PlotNumeric,PlotString,PlotBool畫線輸出函數增加定位點參數:
        以PlotNumeric距離,其他類似,PlotNumeric的前兩個參數保持不變,第三個參數修改為定位點參數,默認參數為0,其他的參數和舊版一致。
        當我們使用定位點函數時,對于PlotNumeric,將輸出一條線段,連接定位點和輸出值的點;PlotBool和PlotString將在指位置畫出相應的內容。
    3、增加投資組合函數:
        增加portfolio_XXX類型的函數,用戶獲取當前圖表,當前公式應用對應的投資組合的狀態和性能信息,原CurrentCapital用Portfolio_CurrentCapital代替。
    4、序列變量自動傳遞最新值:【new】
         舊版本中為了序列變量的上一個Bar值,需要編寫語句 MyVar = MyVar[1];
         新版本中變為自動傳遞,即可以省略這條語句,但隨之帶來的變化就是,序列變量的默認值,只會在第一個Bar有效。
    5、Bar數據和序列變量在回溯越界時取值調整:【new】
         舊版本中,Bar數據和序列變量,序列參數等值,當回溯的索引越界是,即Value[nOffset]的nOffset > CurrentBar時,會是無效值。
         新版本中,這種情況下會用該數據源的第1個值代替。
    6、疊加數據時補齊數據方式:【new】
         多個商品進行疊加時,可能在數據的前段出現某個商品有數據,但其他商品無數據,舊版本會使用無效值填充。
         新版本使用第一個有效的Bar的Open填充高開低收,成交量設置為0,持倉量設置為第一個有效Bar的持倉量。
    7、公式應用全局變量擴容:
        單個公式應用的全局變量從50個擴充500個。
    8、單個圖表內多個公式之間的相關性:
       舊版本中,單個圖表中的多個交易指令會相互影響,形成干擾。雖然利于將開平倉等指令進行模塊化,但不利于利用資源。
       新版本中,單個圖表中的多個公式應用就像以前的多個技術指標一樣,不再有相關性。這樣就可以很容易的單個圖表驅動多個交易系統,節省電腦資源。
    9、公式編譯提速:
       調整舊版本所有公式聯編的架構,客戶修改用戶函數時,需要重新編譯所有的自定義公式應用,編譯公式應用時,只需要編譯當前公式應用即可。
       如果客戶完全了解用戶函數和公式應用的調用關系,在開發調試用戶函數過程中先選擇單獨編譯用戶函數,等用戶函數算法穩定之后,再全部編譯一次,這樣可以大幅提升系統開發速度。
    10、交易策略參數優化提速:
       通過調整價格,公式運行速度得到近10倍的提升,并增加了多線程測試,在性能強勁的電腦上,可以達到舊版本幾十倍的測試速度。可以考慮攢錢買32核電腦進行測試了。
       另外,交易策略的參數優化增加了參數淘汰率,要使用淘汰算法,需要將重要的參數放在前面,測試完一個參數之后,按比例淘汰較差的參數。提升測試效率。
    11、投資組合測試報告:
       單個圖表可以支持多個交易系統的執行,同時我們增加了對多個交易系統的測試報告組合分析。方便評估多個系統的組合效果。
    12、公式導入導出中增加無源碼模式:
        對于用戶的公式應用,考慮到安全問題,我們增加了無源碼加密的方式,將執行文件直接導入導出,方便交易系統的應用。為了控制時間和權限,用戶可以在公式代碼中增加時間驗證和賬戶驗證,這樣編譯后的公式在應用過程中再無后顧之憂。
    13、訊號消失的處理機制調整:
        舊版本中,如果出現系統的訊號消失,會反復開倉,導致頭寸完全混亂,并可能出現巨大的虧損。
        新版本中,對于用戶操作失誤寫出的訊號消失的系統,第一次發單之后,不在重復發單,當出現訊號消失時,還會彈出提示,提醒用戶修改系統代碼。
    14、循環代碼體內調用序列函數的支持:
        函數代碼內有使用序列變量或序列參數進行計算的稱為序列函數,舊版本中在循環體內調用序列函數會出現計算出錯的問題,新版本對于這種情況進行了修復。
        但要確保這種寫法的正確執行,必須保證每個Bar,這個循環體的執行次數都是一樣的。否則仍然會出現錯誤。同樣的原理,If條件語句里面不能使用序列函數進行計算。
       下面是一個錯誤寫法的例子:
       If(MarketPosition!=1 && CrossOver(Avg1,Avg2))
       {
           Buy....   
       }
       因為MarketPosition在等于1的情況下,會導致后面的語句不被執行,這樣,就不是每個Bar都調用了該序列函數。就會出現數據計算出錯。
       正確的寫法如下:
        MyBuyCondition = CrossOver(Avg1,Avg2);
       If(MarketPosition!=1 && MyBuyCondition )
       {
          Buy...
       }
    15、函數序列參數的輸入值驗證:
         舊版本中,CrossOver這樣的函數,因為兩個參數都是序列參數,只能使用兩個序列變量,比如Avg1,Avg2作為參數進行傳入。不能使用CrossOver(Close,1000)這樣的寫法。為此,舊版本中還增加了CrossOverHor這樣的函數來處理這種情況。
         新版本中,可以直接傳入普通值進行計算,甚至傳入數據的回溯值。舊版本中CrossOver(Close[1],Avg1);這樣的寫法是正確的,但CrossOver(Close[1],Avg1[1])則是錯誤的,新版本則可以支持后面的寫法。
    16、用戶函數中可以使用所有系統函數:
        這樣可以很方便的封裝交易指令和算法。
    17、訊號發生的時間如果不在圖表最后Bar時間的附近,將會被忽略。
        日線及以上周期要求訊號發生的日期和最后Bar的日期相同;
        1分鐘及以上周期要求訊號發生的時間和最后Bar的時間誤差不超過5分鐘。
        Tick和10秒周期要求訊號發生的時間和最后Bar的時間誤差不超過1分鐘。
         通過這個時間限定,防止最后Bar上較早前的訊號在重新啟動時發單。
    18、使用引用參數的函數【new】
        舊版本在使用引用參數時可以傳入序列變量,普通變量和引用參數值。
        新版本在使用引用參數時只能傳入普通變量和引用參數值。
       

     

 

  • 補充:
    1、疊加商品可以進行交易和測試:
        舊版本只能使用Buy(1,MyPrice);這樣的語句進行交易,新版本可以使用Data1.Buy(1,MyPrice),以及Data1.MarketPosition這樣的函數獲取交易狀態。大部分函數都支持使用Data#.前綴進行調用。這樣可以方便的實現多個商品的,單個系統的組合測試,可以測試套利和對沖系統。
    3、增加投資組合函數:
        增加portfolio_XXX類型的函數,用戶獲取當前圖表,當前公式應用對應的投資組合的狀態和性能信息。
    只是希望TBV4比以前的版本皮實點,總感覺TB很好甚至是精美,可有點脆弱不皮實,也可能精美復雜的東西都不皮實,是我的要求太高了吧。

 

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

可聯系技術人員 QQ: 262069696  點擊在線交流進行 有償 編寫!不貴!點擊查看價格!

 


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

相關文章

    沒有相關內容
  主站蜘蛛池模板: 久久久夜间小视频| 免费看黄的网站在线看| 91精品国产综合久| 小屁孩cao大人免费网站| 久久亚洲sm情趣捆绑调教| 欧美亚洲另类在线| 亚洲精品视频在线观看你懂的| 精品国产一区二区三区香蕉| 国产一卡2卡3卡4卡无卡免费视频| 97久久天天综合色天天综合色| 国产精品无码素人福利免费| 99国内精品久久久久久久| 妞干网在线视频观看| 中文字幕亚洲综合久久综合| 日本成人福利视频| 久久精品青青大伊人av| 欧洲肉欲K8播放毛片| 亚洲国产精品综合久久2007| 永久在线毛片免费观看| 人人干人人干人人干| 男男同志chinese中年壮汉| 又粗又紧又湿又爽a视频| 色综合一区二区三区| 国产又猛又黄又爽| 欧美黑人两根巨大挤入| 国产精品美女免费视频观看| 99re热久久| 在线视频欧美日韩| gogo免费在线观看| 奇米影视7777狠狠狠狠色| www视频在线观看天堂| 少妇粉嫩小泬喷水视频| 东京一本一道一二三区 | 黑执事第二季免费观看| 国产精品狼人久久久久影院| 91最新地址永久入口| 国内精品久久久久久久影视麻豆 | 美女张开腿让男人桶的视频 | 教师mm的s肉全文阅读| 丰满的己婚女人| 放荡的闷骚娇妻h交换3p|