返回列表 發帖

TB交易開拓者期貨程序化交易編程

TB交易開拓者期貨程序化交易編程

本文僅是寫給完全不懂編程的朋友的,僅是最基本的TB交易開拓者期貨程序化交易編程入門資料。希望能對朋友們有所幫助,編程其實是一種思想,編程的目的是把你的思想用各種圖形表現出來而已 我們期貨編程的目的是表現我們的交易思想 是為思想而編程,不是為編程而編程!通過寫交易策略來了解市場你不需要交什么學費,從歷史測試報告里很容易分析出來自己到底錯在哪里,如此你就很容易改進。

    TB里面代碼執行

    1,代碼從第一根K線開始執行,一直到最后一根K線:

    2,在每一根K線上,代碼都是從第一行開始執行,一直到最后一行; 我們就寫個輸出每日的收盤價的例子;

    打開TB,在左邊的TB公式里面,點擊新建技術指標, 然后在出來的公式編輯器里面輸入

    Begin

    End

    注意,除了參數和變量定義外,所有的代碼都必須包含在Begin和End之間

    我們再在Begin和End之間輸入一些代碼,完整的就是:

    Begin

    FileAppend("c:\\a.log",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盤價等于");FileAppend("C:\\a.log",Text(Close)); End

    我們再說說這兩行代碼是什么意思

    File就是文件,Append就是添加,現在明白了吧

    FileAppend就是添加一個文件,文件名是什么呢?就是你后面寫的a.log,這個文件的路徑在哪里呢?就是c:\\a.log里面的C盤,且在這個文件里面添加一行東西,

    這行東西的內容就是你后面所寫的Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盤價等于" 當然,如果這個文件已經存在,他就不會添加文件了,僅僅在這個文件的后面添加一行上面你寫的內容

    好了,再看看Text,Text的意思就是把那些不是字符串的東西如數字啊,等變成字符串.而Year,Month,Day就代表了

   正在執行你寫的代碼的那一根K線的年,月,日,年月日是數字,我們當然要用Text把它搞成字符串 CloseK線的收盤價啊,如果代碼執行到最后的那根K線

     我們點公式編輯器上面的工具欄的第五個按鈕(打勾的那個東西),校驗保存公式,稍微等一下,就OK了 我們在回到K線圖里面,TB把K線圖叫做超級圖表

在K線圖里面右鍵,選擇商品設置,然后吧里面的樣本數由默認的300改成5,意思是讓在超級圖表里面僅僅顯示5條K線,點確定后,你就看到在K線圖里面只顯示了5跟K線,

當然現在代碼還不能被執行,因為我們現在還需要把我們剛剛所寫的那個指標加到K線圖上面才能被執行的 我們上面說了,我們這個例子僅僅是把每日的收盤價寫到文件里面去啊,那么我們找一找文件在什么地方咯? FileAppend("c:\\a.log",很明顯,文件是在c盤的,文件的名字是a.log 好了,我們到c盤找到a.log文件,雙擊打開,我們就會看到下面的內容:

2007年9月24日的收盤價等于 67280

2007年9月25日的收盤價等于 67800

2007年9月26日的收盤價等于 67160

2007年9月27日的收盤價等于67300

2007年9月28日的收盤價等于68020

我們現在來分析下:

首先你寫的代碼在第一根K線上執行,先執行第一行代碼:

FileAppend("c:\\a.log",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盤價等于"); 這行代碼就輸出了第一根K線的年,月,日,就在a.log文件里輸出成"2007年9月24日的收盤價等于" 然后執行第二行代碼:

FileAppend("C:\\a.log",Text(Close));

折行代碼把第一根K線的收盤價輸出到a.log文件里面,于是就輸出了"67280"

好了,代碼在第一根K線上執行完畢,于是再轉到第二根K線,再執行第一行代碼,再執行第二行代碼.........

我一直非常愿意幫助客戶們解答在編程中的難點,但是卻不大愿意幫助客戶寫完整的公式策略。這其中有三個原因:

1、別人寫的交易策略,你難以調整它。

據統計,90%以上的交易策略會在2年半之內由于種種原因失效或者效率降低。通常的做法是一個季度左右,交易員就需要微調其策略,調整參數或改動某些條件。如果策略不是自己編寫的,調整起來就會有困難。

2、別人寫的交易策略,你很難徹底執行它。

系統交易最重要的好處在于它的執行能力。它可以使你的交易擺脫人性的弱點,擺脫心理因素的干擾。然而這一切的基礎,在于自信。人只會信任自己了解的東西,這是人性。如果一個交易策略是別人寫的,無論它的測試報告是多么天花亂墜,你都不會信任它,因為你不了解它。一旦市場出現了危機情況,你就會坐立不安,你就會總懷疑是不是策略有問題,然后就又把策略扔到一邊,回到憑感覺去操作的老路上去了。

3、最重要的一點在于:編程就是理解,編寫交易策略調試交易策略的過程其實就是理解市場的過程。這是一種非常寶貴的積累。大多數人都是通過在市場中虧錢,靠爆倉來理解市場的。成本高昂,而且難以總結。使用這種方法來了解市場,往往就算你虧了很多錢,交了大把學費,你仍然不知道自己到底輸在哪里。你總結不出來,你就不可能有長進,就不可能贏。而通過寫交易策略來了解市場你不需要交什么學費,從歷史測試報告里很容易分析出來自己到底錯在哪里,如此你就很容易改進。把編好的交易策略與模擬帳戶交易結合起來就可以為你帶來足夠逼真的實戰經驗。

編程其實是一種思想,編程的目的是把你的思想用各種圖形表現出來而已 我們期貨編程的目的是表現我們的交易思想,是為思想而編程,不是為編程而編程!

現在開始寫數據類型,變量和賦值。

數據類型分字符串類型,數值型,還有布爾型

字符串類型很簡單,用分號"括起來的東西就叫做字符串類型的數據,如"I love you",如"3345",.....數值型數據類型也同樣的簡單,數值大家知道吧,如1542啊,1.021啊....這些東西就是數值型的數據類型 當然,如果把一個數值型的東西用分號""括起來了那他就不再是數值型數據了,而是字符串類型的數據 如1688是數值型數據,但是"1688"就是字符串類型的數據了

還有就是布爾型,當然,沒有接觸過編程的朋友可能不明白布爾型的意思

說白點,布爾型就是真假型,意思就是布爾類型的數據只能取真(True)或假(False)值.

比如2>1,這個東西就是布爾類型的數據,因為2是大于1啊,所以這個表達式返回True(真) 那么2<1,大家說這個表達式是不是個布爾類型的數據呢?

也是,因為2大于1啊,所以2<1是錯誤的,就返回False(假)

大家明白了吧,就這三個類型,其中最只要的就是數值型數據類型 用的最多的也是數值型數據類型

如果明白了,那么請您就記住在TB里面數值型 Numeric

看下TB的幫助,數據類型里面還有個序列型,如果數值序列型,字符串序列型,布爾序列型 序列這個東西看起來很難理解

比如我們的K線圖上有10跟K線,Close就是收盤價

但是這個Close包含了第一根K線的收盤價,也包含了第二根K線的收盤價.......一直包含到第五根K線的收盤價

也就是說序列型的數據在每根K線上都有一個值的

說說變量

變量就是一個可以改變的東西

現在這個變量的值是100,但是等下我可以把它改成20, 只要您喜歡,你可以隨心所欲的改變這個值 能夠修改他的值的東西就叫做變量了記住:

在TB里面變量都是要先定義的!而且有著他獨到的定義方法,而且這個定義必須放到Begin的前面 如我們定義一個數值型變量a.就應該這樣Vars

Numeric a; Begin ......

End

當然你也可以定義兩個或者多個變量,如 Vars

Numeric a;Numeric b;

//.........更多變量定義 Begin......

End

大家也許想到了

我定義這個變量a,我要讓他等于2,這個東西很簡單

你可以在變量定義的時候就給他賦初值讓他一開始被定義就等于2,也可以在Begin下面寫.如Vars

Numeric a(2);Numeric b

//.........更多變量定義

Begin......End

明白了么|?那么變量b呢?我們沒有用括號()擴個東西啊,那么這個時候b這個變量等于什么呢? 很簡單,如果你在定義變量的時候沒有給他初值,那么b這個時候等于0 再看在Begin里面怎么修改這個變量的值 Vars

Numeric a(2);Numeric b;

附件: 您需要登錄才可以下載或查看附件。沒有帳號?注冊
十五年期貨從業,十年量化研究,零傭金開戶,交易所保證金,享高比率返傭!期貨量化無門檻返傭,上萬歐美量化策略,100G量化文檔,最新歐美期貨雜志,無論研究或實盤,均可免費獲得!詳情聯系論壇管理員。

返回列表
意甲联赛ac米兰国米