相關標簽: 開拓者程序化交易 、 交易開拓者 、 交易開拓者論壇 、 開拓者交易軟件 、 交易開拓者源碼破解 、 交易開拓者破解 、 交易開拓者無法使用 、 交易開拓者百分比止盈 、 tb交易開拓者 、
斷斷續續接觸TB一個多月了,乍看之下,TB似乎比較簡單,就是一個Bar一個Bar地去運行自己編寫的公式。 通過模擬帳戶測試了一段時間,才發現有很多東西需要進一步去弄清楚。 問題:TB在歷史數據測試中的運行機制和交易時間的運行機制有何區別? 下面是我的理解,請大家來不斷修改和完善。我認為,很多交易程序中的問題,都是由于對TB的運行機理不清楚而埋下了隱患。 <strong>【在歷史數據測試時】</strong>假設商品樣本中有2000條K線,TB的執行過程是: 1、先顯示出2000條K線。此時,由于有歷史數據,每根K線的數據都是現成的。最后一根K線,也是歷史數據。所有的數據都是靜止的,也沒有新的數據進來。 2、從第一條K線開始(最左邊的一條),開始執行交易公式,讀取參數值。然后,初始化局部變量,執行begin和end之間的代碼。 3、然后,進入下一根K線(Bar),再初始化局部變量,執行begin和end之間的代碼。 4、依次處理所有的K線。 5、在某根K線上,發現符合開倉條件,于是在超級圖表上顯示出開倉標識,并修改marketposition的值。 6、繼續運行下面的K線。 7、在某根K線上,發現符合平倉條件,于是在超級圖表上顯示出平倉標識,并在開倉和平倉價之間畫出連線。若該筆交易盈利,則用紅色連線,若該筆交易虧損,則用綠色連線。 8、繼續運行后面的K線,直到最后一條。 值得注意的是: 1、由于是歷史數據,每根Bar都是現成的,是沒有Tick的概念的。交易代碼,在每根bar上運行一遍。 2、由于參數是不能動態改變的,所以,雖然也是程序代碼的一部分,但沒有必要在每根Bar上都讀取一次。只在第一根Bar上讀取參數,以后共用即可。 3、由于是歷史數據,不會再發生改變,所以,不會出現信號時有時無的現象。 4、由于是歷史數據,沒有買賣盤的動態數據,所以,不會出現滑點,也不會出現成交不了的現象。 <strong>【在交易時間前啟動自動交易】</strong>假設商品樣本中有200條數據,假設在開盤前2分鐘啟動TB的自動交易,TB的執行過程是: 1、對于已經存在的200條K線,第一根的BarStatus是0,中間的是1,最后面一根是2。對于BarStatus小于2的K線,只在每根Bar上運行一次交易代碼。 2、從第一根K線,直到第200根K線,在每根K線上運行一次交易代碼。如果發現某些K線符合開倉或平倉條件,只是顯示標識符號,但不實際發出交易指令,因為還沒開盤。 3、開盤后,分筆交易數據(tick)開始傳過來。為了保持實時性,TB就必須對每個tick做出響應,就是在每個tick都運行一次程序代碼。 由此可見,交易時間里,每根最新的Bar上,程序代碼都被多次執行。這一點,和歷史數據測試時明顯不同。 4、由于在最新的一根bar上,交易代碼反復被Tick數據觸發,而此時下一根bar還沒出現,這條Bar的數據中,除了開盤價之外,其他的比如:收盤價、最高價、最低價都在隨著每個Tick的變動而變動。當下一根K線出現的瞬間,這條Bar的所有數據才能被確定下來。 如果交易代碼中的開平倉條件中,用到了close、high、low,則有可能使信號時有時無。同樣的一根Bar上,由于主力的拉升,價格突然走高,符合了買入條件,該Tick出現后,交易代碼執行一次,發現符合買入條件,就發出買入指令。下一筆,價格又被打壓下來,再次執行交易代碼,買入條件又不符合了,但剛才的買入指令已經發出去了,甚至已經成交了。價格如此反復幾次,就會在該Bar上反復買入多次。從而形成反復開倉。如果該Bar最終定型時,價格被打壓回來了,超級圖表上在該Bar上是不會顯示任何交易信號的,但實際上,卻在該Bar上買入了多次。 <strong>【在交易時間內啟動自動交易】</strong>假設商品樣本中有200條數據,假設在開盤后2分鐘啟動TB的自動交易,TB的執行過程是: 1、讀取出200條Bar,其中,有2條還是開盤后剛產生的。 2、在前199根Bar上,每根Bar上執行一次交易代碼。如果發現某些Bar上符合開平倉條件,僅僅顯示交易信號,但不實際發出交易指令。因為你遲到了,剛才的行情已經成為歷史了。 3、在新的Bar上,依據Tick去運行交易代碼。 由此可見,TB的交易指令,應該只能在Barstauts=2且有行情數據時才能發出。這一點,應該是TB內部的運行機制,不需要我們在TB代碼中去再寫一遍。 根據以上的分析,可得知: 1、如果交易代碼中,在開平倉指令外假如if(barstatus==2),則在歷史數據測試中,就不會顯示出交易信號。因為除了最后一根bar之外,前面的Bar都不復合條件。但這樣的代碼,在交易開始后,是可以正常運作的。 問題是,加上這個條件有什么用呢? 在歷史數據測試中,加上顯示不了信號;在交易時間,TB又僅僅處理最新的一根Bar中的Tick,加了也沒用。經常看到別人在代碼中加上barstatus==2,不知道是想干什么用。 2、使用最新Bar的數據去做判斷(Open除外),容易引發誤開倉或反復開倉。要消除,在買賣條件中,就只能用前面K線的數據去做判斷,或使用high>high[1],low<low[1]之類的判斷。 上面是我對TB運行機制的一些粗淺理解,望高手對其中的錯誤之處給與糾正。謝謝!
公式源碼導入教程: 【文華財經(贏智 贏順)如何導入模型指標源碼的教程方法】 【博易大師如何導入模型指標源碼的教程方法】 【大智慧新一代公式源碼導入方法教程】