打印本文
關(guān)閉窗口
TBV4公式升級說明
作者:開拓者 TB 來源:cxh99.com 發(fā)布時間:2015年06月27日
咨詢內(nèi)容:
經(jīng)過很長一段時間的開發(fā)和調(diào)試工作,TBV4終于快要正式發(fā)布了,感謝各位朋友一路以來的關(guān)注和支持,這次升級主要是公式平臺的升級,修改可謂天翻地覆,杯具的就是,由于改動太多,沒法直接兼容TBV3的公式以及導(dǎo)入導(dǎo)出文件,請大家諒解!
一、公式升級取消的功能點:
1、內(nèi)建平倉指令:
已刪除8個內(nèi)建平倉函數(shù),準備等新版本穩(wěn)定后以用戶函數(shù)的形式提供類似功能。
2、保證金不足強平機制:
舊版公式在測試和實際交易中,如果出現(xiàn)保證金不足的情況,會產(chǎn)生強制平倉的指令??紤]到保證金不足是以虛擬資金計算,如果設(shè)置不正確可能會導(dǎo)致實盤平倉的嚴重后果,所以取消該功能。
3、延遲發(fā)單機制:
舊版通過交易函數(shù)中使用delay參數(shù)達到延遲到下一個Bar開盤發(fā)單的效果,在實際應(yīng)用中,通過Delay參數(shù)只能使用NextOpen等未來函數(shù)來獲取價格,整個設(shè)計過于復(fù)雜??紤]到可以通過獲取上一個Bar的條件值來進行判斷,在當前Bar開盤交易這種方法替代延遲發(fā)單的機制,決定取消該功能。
4、公式類型調(diào)整:
用戶字段,技術(shù)指標,K線型態(tài),特征走勢,交易指令這5種類型公式統(tǒng)一為公式應(yīng)用,公式應(yīng)用既可以輸出線條,也可以進行交易。
5、公式的條件表達式取消無效值傳遞機制:
舊版本中,如果 a = 無效值 , b = 100, 則 a + b = 無效值。+-*/等數(shù)學(xué)運算及> < 等邏輯運算表達式都支持無效值傳遞機制。
新版本中,如果 a = 無效值,b = 100,則 a + b <> 無效值。所以不能再用舊版本的方法來進行無效值判斷。
進行這種調(diào)整是因為舊版本對所有的運算符進行了重載,但這種重載浪費大量的計算時間,導(dǎo)致公式執(zhí)行效率低下,為了提高公式的運行效率,決定取消這種機制。
在舊版本系統(tǒng)中,可能有以下類似的寫法:
bInBoardRange = (Open < Q_LowerLimit + 10*MinMove*PriceScale) Or (Open > Q_UpperLimit - 10*MinMove*PriceScale);
在不是當天的Bar上,因為Q_LowerLimit和Q_UpperLimit是無效值,因此整個表達式都是無效值。bInBoardRange的值為False,所以能夠正常使用。
同樣的代碼,在新版中,由于沒有無效值的傳遞機制,在不是當天的Bar上,bInBoardRange的值可能是True,系統(tǒng)不能正常的運行。
為了處理這種情況,需要進行有效性判斷,大致代碼如下:
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這樣的函數(shù)獲取交易狀態(tài)。大部分函數(shù)都支持使用Data#.前綴進行調(diào)用。
這樣可以方便的實現(xiàn)多個商品的,單個系統(tǒng)的組合測試,可以測試套利和對沖系統(tǒng)。
2、PlotNumeric,PlotString,PlotBool畫線輸出函數(shù)增加定位點參數(shù):
以PlotNumeric距離,其他類似,PlotNumeric的前兩個參數(shù)保持不變,第三個參數(shù)修改為定位點參數(shù),默認參數(shù)為0,其他的參數(shù)和舊版一致。
當我們使用定位點函數(shù)時,對于PlotNumeric,將輸出一條線段,連接定位點和輸出值的點;PlotBool和PlotString將在指位置畫出相應(yīng)的內(nèi)容。
3、增加投資組合函數(shù):
增加portfolio_XXX類型的函數(shù),用戶獲取當前圖表,當前公式應(yīng)用對應(yīng)的投資組合的狀態(tài)和性能信息,原CurrentCapital用Portfolio_CurrentCapital代替。
4、序列變量自動傳遞最新值:【new】
舊版本中為了序列變量的上一個Bar值,需要編寫語句 MyVar = MyVar[1];
新版本中變?yōu)樽詣觽鬟f,即可以省略這條語句,但隨之帶來的變化就是,序列變量的默認值,只會在第一個Bar有效。
5、Bar數(shù)據(jù)和序列變量在回溯越界時取值調(diào)整:【new】
舊版本中,Bar數(shù)據(jù)和序列變量,序列參數(shù)等值,當回溯的索引越界是,即Value[nOffset]的nOffset > CurrentBar時,會是無效值。
新版本中,這種情況下會用該數(shù)據(jù)源的第1個值代替。
6、疊加數(shù)據(jù)時補齊數(shù)據(jù)方式:【new】
多個商品進行疊加時,可能在數(shù)據(jù)的前段出現(xiàn)某個商品有數(shù)據(jù),但其他商品無數(shù)據(jù),舊版本會使用無效值填充。
新版本使用第一個有效的Bar的Open填充高開低收,成交量設(shè)置為0,持倉量設(shè)置為第一個有效Bar的持倉量。
7、公式應(yīng)用全局變量擴容:
單個公式應(yīng)用的全局變量從50個擴充500個。
8、單個圖表內(nèi)多個公式之間的相關(guān)性:
舊版本中,單個圖表中的多個交易指令會相互影響,形成干擾。雖然利于將開平倉等指令進行模塊化,但不利于利用資源。
新版本中,單個圖表中的多個公式應(yīng)用就像以前的多個技術(shù)指標一樣,不再有相關(guān)性。這樣就可以很容易的單個圖表驅(qū)動多個交易系統(tǒng),節(jié)省電腦資源。
9、公式編譯提速:
調(diào)整舊版本所有公式聯(lián)編的架構(gòu),客戶修改用戶函數(shù)時,需要重新編譯所有的自定義公式應(yīng)用,編譯公式應(yīng)用時,只需要編譯當前公式應(yīng)用即可。
如果客戶完全了解用戶函數(shù)和公式應(yīng)用的調(diào)用關(guān)系,在開發(fā)調(diào)試用戶函數(shù)過程中先選擇單獨編譯用戶函數(shù),等用戶函數(shù)算法穩(wěn)定之后,再全部編譯一次,這樣可以大幅提升系統(tǒng)開發(fā)速度。
10、交易策略參數(shù)優(yōu)化提速:
通過調(diào)整價格,公式運行速度得到近10倍的提升,并增加了多線程測試,在性能強勁的電腦上,可以達到舊版本幾十倍的測試速度??梢钥紤]攢錢買32核電腦進行測試了。
另外,交易策略的參數(shù)優(yōu)化增加了參數(shù)淘汰率,要使用淘汰算法,需要將重要的參數(shù)放在前面,測試完一個參數(shù)之后,按比例淘汰較差的參數(shù)。提升測試效率。
11、投資組合測試報告:
單個圖表可以支持多個交易系統(tǒng)的執(zhí)行,同時我們增加了對多個交易系統(tǒng)的測試報告組合分析。方便評估多個系統(tǒng)的組合效果。
12、公式導(dǎo)入導(dǎo)出中增加無源碼模式:
對于用戶的公式應(yīng)用,考慮到安全問題,我們增加了無源碼加密的方式,將執(zhí)行文件直接導(dǎo)入導(dǎo)出,方便交易系統(tǒng)的應(yīng)用。為了控制時間和權(quán)限,用戶可以在公式代碼中增加時間驗證和賬戶驗證,這樣編譯后的公式在應(yīng)用過程中再無后顧之憂。
13、訊號消失的處理機制調(diào)整:
舊版本中,如果出現(xiàn)系統(tǒng)的訊號消失,會反復(fù)開倉,導(dǎo)致頭寸完全混亂,并可能出現(xiàn)巨大的虧損。
新版本中,對于用戶操作失誤寫出的訊號消失的系統(tǒng),第一次發(fā)單之后,不在重復(fù)發(fā)單,當出現(xiàn)訊號消失時,還會彈出提示,提醒用戶修改系統(tǒng)代碼。
14、循環(huán)代碼體內(nèi)調(diào)用序列函數(shù)的支持:
函數(shù)代碼內(nèi)有使用序列變量或序列參數(shù)進行計算的稱為序列函數(shù),舊版本中在循環(huán)體內(nèi)調(diào)用序列函數(shù)會出現(xiàn)計算出錯的問題,新版本對于這種情況進行了修復(fù)。
但要確保這種寫法的正確執(zhí)行,必須保證每個Bar,這個循環(huán)體的執(zhí)行次數(shù)都是一樣的。否則仍然會出現(xiàn)錯誤。同樣的原理,If條件語句里面不能使用序列函數(shù)進行計算。
下面是一個錯誤寫法的例子:
If(MarketPosition!=1 && CrossOver(Avg1,Avg2))
{
Buy....
}
因為MarketPosition在等于1的情況下,會導(dǎo)致后面的語句不被執(zhí)行,這樣,就不是每個Bar都調(diào)用了該序列函數(shù)。就會出現(xiàn)數(shù)據(jù)計算出錯。
正確的寫法如下:
MyBuyCondition = CrossOver(Avg1,Avg2);
If(MarketPosition!=1 && MyBuyCondition )
{
Buy...
}
15、函數(shù)序列參數(shù)的輸入值驗證:
舊版本中,CrossOver這樣的函數(shù),因為兩個參數(shù)都是序列參數(shù),只能使用兩個序列變量,比如Avg1,Avg2作為參數(shù)進行傳入。不能使用CrossOver(Close,1000)這樣的寫法。為此,舊版本中還增加了CrossOverHor這樣的函數(shù)來處理這種情況。
新版本中,可以直接傳入普通值進行計算,甚至傳入數(shù)據(jù)的回溯值。舊版本中CrossOver(Close[1],Avg1);這樣的寫法是正確的,但CrossOver(Close[1],Avg1[1])則是錯誤的,新版本則可以支持后面的寫法。
16、用戶函數(shù)中可以使用所有系統(tǒng)函數(shù):
這樣可以很方便的封裝交易指令和算法。
17、訊號發(fā)生的時間如果不在圖表最后Bar時間的附近,將會被忽略。
日線及以上周期要求訊號發(fā)生的日期和最后Bar的日期相同;
1分鐘及以上周期要求訊號發(fā)生的時間和最后Bar的時間誤差不超過5分鐘。
Tick和10秒周期要求訊號發(fā)生的時間和最后Bar的時間誤差不超過1分鐘。
通過這個時間限定,防止最后Bar上較早前的訊號在重新啟動時發(fā)單。
18、使用引用參數(shù)的函數(shù)【new】
舊版本在使用引用參數(shù)時可以傳入序列變量,普通變量和引用參數(shù)值。
新版本在使用引用參數(shù)時只能傳入普通變量和引用參數(shù)值。
公式升級,改動較多,未能一一列出,等待繼續(xù)完善!
TB技術(shù)人員:
好期待新版本啊 ,
TB客服:
非常需要:
1、疊加商品可以進行交易和測試:
舊版本只能使用Buy(1,MyPrice);這樣的語句進行交易,新版本可以使用Data1.Buy(1,MyPrice),以及Data1.MarketPosition這樣的函數(shù)獲取交易狀態(tài)。大部分函數(shù)都支持使用Data#.前綴進行調(diào)用。這樣可以方便的實現(xiàn)多個商品的,單個系統(tǒng)的組合測試,可以測試套利和對沖系統(tǒng)。
3、增加投資組合函數(shù):
增加portfolio_XXX類型的函數(shù),用戶獲取當前圖表,當前公式應(yīng)用對應(yīng)的投資組合的狀態(tài)和性能信息。
只是希望TBV4比以前的版本皮實點,總感覺TB很好甚至是精美,可有點脆弱不皮實,也可能精美復(fù)雜的東西都不皮實,是我的要求太高了吧。
網(wǎng)友回復(fù):
期待新版本。
“最終目標文件編譯錯誤”這個問題有沒有解決?
網(wǎng)友回復(fù):
回復(fù) 4#
CFXQM
應(yīng)該是解決了
打印本文
關(guān)閉窗口
主站蜘蛛池模板:
最近中文2019字幕第二页
|
免费精品久久天干天干
|
国产午夜亚洲精品不卡免下载
|
国产床戏无遮挡免费观看网站
|
国产农村妇女一级毛片视频片
|
国产情侣激情在线视频免费看
|
国产精品99久久精品爆乳
|
国产精品v片在线观看不卡
|
国产欧美一区二区精品久久久
|
国产产在线精品亚洲AAVV
|
午夜成人无码福利免费视频
|
人妻少妇精品中文字幕av蜜桃
|
亚洲精品乱码久久久久久不卡
|
亚洲天天做日日做天天看
|
亚洲啪啪AV无码片
|
久久国产精品-国产精品
|
三级黄色录像片
|
99热精品在线播放
|
欧美色图五月天
|
艳妇乳肉豪妇荡乳AV
|
美女和男生一起差差差
|
牛牛在线精品免费视频观看
|
欧美乱xxxxx
|
无码天堂亚洲国产AV
|
手机在线看片国产
|
好大好硬好爽免费视频
|
国产超级乱淫视频播放免费
|
国产精品欧美亚洲韩国日本久久
|
在线观看亚洲电影
|
国产成人精品免费视频大全
|
免费看a级毛片
|
久久国产乱子伦精品在
|
99re5在线精品视频热线
|
蜜芽忘忧草二区老狼果冻传媒
|
欧美日韩视频在线观看高清免费网站
|
日韩电影免费在线观看网址
|
日韩亚洲人成网站
|
成人国产精品免费视频
|
师尊要被cao坏了by谦野
|
在线精品小视频
|
国产真实系列在线
|