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