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