本文不是一篇介紹如何編寫一個性能優(yōu)異模型的文章,本文的初衷是以拋磚引玉的方式來探討發(fā)展和創(chuàng)新程序化交易編程的思路、方式、方法. 溫故知新 人類所有的智慧和文明,來源于對歷史的積累和創(chuàng)新.”溫故而知新”,在期貨交易中同樣適用.交易的目的是盈利,每一次進場和出場,都是對未來行情發(fā)展的一種預(yù)測,只是這種預(yù)測不是來自迷信,而是以歷史數(shù)據(jù)的概率統(tǒng)計和分析為基礎(chǔ),加上不斷發(fā)展和創(chuàng)新的產(chǎn)物.有人在多頭趨勢中做多,那是因為歷史概率告訴他,趨勢大多具有慣性,不會馬上結(jié)束;有人在相對高點做空,同樣也是來自對歷史數(shù)據(jù)概率分析,行情總是以波浪形式在陰陽轉(zhuǎn)換中輪回發(fā)展.因此,概率統(tǒng)計和分析是交易的基礎(chǔ)和靈魂.但概率在一定范圍內(nèi)不是固定不變的,它自身也在歷史的長河中不斷發(fā)展和變化. 綜上所述,一個擬合歷史的交易模型不一定是性能優(yōu)良的模型,但一個不能擬合歷史的模型肯定不是性能優(yōu)良的模型. 用簡單的哲理解決復(fù)雜的問題 光陰一去不復(fù)返,這是大家都知道的道理,它告戒我們要從我做起,從現(xiàn)在做起,今天的事情今天做,那么,在程序化交易的程序中,我們同樣可以用下面這一條簡單的語句告訴計算機這一哲理. TODAY:=ZIGZAG(DATE,0,0); 這樣我們可以讓計算機在IF(DATE=TODAY,…..)的控制下完成今天要做的任何事情,如只在今天(也就是圖表的最后一天)統(tǒng)計/繪圖甚至交易,當(dāng)然也可以根據(jù)個人習(xí)慣有其他姊妹寫法, 前提是天天向上.如: TODAY:=IF(DATE=PEAK(DATE,1,1,0),1,0); 或者 TODAY:=PEAK(DATE,1,1,0); 發(fā)現(xiàn)問題 分析問題 解決問題 程序化交易模型設(shè)計和調(diào)試過程中,難免發(fā)現(xiàn)這樣那樣的問題.發(fā)現(xiàn)問題是好事,但不能頭痛醫(yī)頭,腳痛醫(yī)腳,如果不對產(chǎn)生問題的原因做深入細致的分析,找出從根本上解決問題的辦法,也許盡管問題暫時消失了,并不代表將來不發(fā)生同樣的問題.下面我們以大家非常熟悉一個簡單的均線穿透模型為例來分析其中可能出現(xiàn)的問題,以及解決方法. MA1:=MA(CLOSE,N1); MA2:=MA(CLOSE,N2); CROSS(MA1,MA2),BPK; CROSS(MA2,MA1),SPK; 這個模型在使用中很容易出現(xiàn)指令反復(fù)和消失的現(xiàn)象,這是我們發(fā)現(xiàn)的問題,那么我們現(xiàn)在來分析問題.在K線數(shù)據(jù)中,最常用的數(shù)據(jù)有開盤價、最高價、最低價、收盤價,他們有如下特征.
分析問題:從上表價格特征和均價公式可知,導(dǎo)致指令反復(fù)和消失的原因是引用了盤中可變的CLOSE. 解決問題:一個問題可能存在多種解決途徑.下面列舉幾種常用的解決這個模型指令反復(fù)和消失的方法. 選擇等待K線走完再發(fā)指令,即勾選文華軟件界面上的等待K線走完選項. 不勾選等待K線走完,但將模型更改如下,用開盤價測試比較準(zhǔn)確,模型執(zhí)行會在開盤價附近成交,信號顯示與指令同步,指令時效與上面等同. MA1:=MA(CLOSE,N1); MA2:=MA(CLOSE,N2); REF(CROSS(MA1,MA2),1),BPK; REF(CROSS(MA2,MA1),1),SPK; 上面兩種方法雖然能解決問題,但同時也帶來了與理想設(shè)計相比的延時現(xiàn)象,要達到理想效果,我們不妨以上穿為例來分析一下穿透的瞬態(tài),從簡單平均算法的原理及開平條件可以看出,穿透瞬態(tài)必然滿足如下條件,CLOSE=HIGH并且MA1>=MA2,并且CLOSE為MA1和MA2共用,由于HIGH具有上增長不可逆特征,在這個瞬間我們用HIGH代替與之相等的CLOSE,就可以排除指令反復(fù)和消失現(xiàn)象.當(dāng)然,這只是針對這個連續(xù)持倉的模型,如果是斷續(xù)持倉的模型,則還需要考慮更多問題,在接下來的[信號競爭與仲裁]中會談到. 根據(jù)MA原理可知,下面兩行代碼等價. MA1:=MA(CLOSE,N1); MA1:=(REF(MA(CLOSE,N1-1),1)*(N1-1)+CLOSE)/N1; 現(xiàn)在就可以用如下代碼來表達原模型的思想并解決指令反復(fù)和消失現(xiàn)象. MA1H:=(REF(MA(CLOSE,N1-1),1)*(N1-1)+HIGH)/N1; MA2H:=(REF(MA(CLOSE,N2-1),1)*(N2-1)+HIGH)/N2; MA1L:=(REF(MA(CLOSE,N1-1),1)*(N1-1)+LOW)/N1; MA2L:=(REF(MA(CLOSE,N2-1),1)*(N2-1)+LOW)/N2; CROSS(MA1H,MA2H),BPK; CROSS(MA2L,MA1L),SPK; 發(fā)現(xiàn)規(guī)律和利用規(guī)律 通過對歷史數(shù)據(jù)的統(tǒng)計和分析,前輩們已經(jīng)總結(jié)了很多有價值的規(guī)律,如果善于觀察,我們也許還能發(fā)現(xiàn)一些另外的不曾被重視的規(guī)律. 舉個例子,在設(shè)計追蹤止損模塊時,按照追蹤止損定義,設(shè)定獲利閥值和回撤止損值都是固定的某一數(shù)值,在實際應(yīng)用中,雖然有一定效果,但效果并不是特別理想,觀察發(fā)現(xiàn),這個止損的合理值與最近一段時期的振幅有很大關(guān)系,并且這種關(guān)聯(lián)的表現(xiàn)近似為一個頂點在第一象限的二次函數(shù)圖象.那么,假設(shè)D為最小止損值,X為振幅,Y為實際止損值,文華語言的函數(shù)關(guān)系式可如下表示. Y:=MAX(D,-A*SQUARE(X)+B*X+D); 止損值肯定有一定的范圍,所以必須先定義最小值D和最大值,這可以通過統(tǒng)計分析得出,同時還可以找到對應(yīng)止損最大值的幅度,設(shè)這個已知幅度為F,由于函數(shù)曲線的頂點在第一象限,頂點值即最大止損值,將已知最大止損值設(shè)定為TOP,那么可以用下面方程組計算 出A和B. -B/(2*A)=F; ① (4*A*D-B2)/4A=TOP; ② 解上面方程組,求出A和B.的解.然后將A,B,D帶入上面的函數(shù)表達式,就完成了Y(即止損值)的自適應(yīng)變化.Y將在最小止損值D到最大止損值TOP這個范圍內(nèi)根據(jù)X的變化而變化,它實際上就是上面拋物線函數(shù)在第一象限的部分連續(xù)曲線段. 通過這個例子,我們將它應(yīng)用到反手操作上,實際效果也不錯. 信號競爭與仲裁 在編程過程中,編程邏輯相當(dāng)重要,但并不是排除了所有單條語句或單個模塊的邏輯錯誤,就代表整個模型不再有沖突,當(dāng)有這種沖突發(fā)生時,我們稱之為競爭.為方便說明問題,下面還是列舉一個簡單例子. HIGH>REF(HHV(HIGH,4),1),BK; LOW<REF(LLV(LOW,4),1),SK; 很顯然,如果將上面兩條語句的條件部分應(yīng)用在持續(xù)持倉的系統(tǒng)中(只使用BPK和SPK),由于平臺有自動過濾機制,不會有多大問題,但如果將它應(yīng)用在不過濾系統(tǒng)或有混合指令的斷續(xù)交易系統(tǒng)中,若在空倉狀態(tài)下,當(dāng)本周最高價大于前四周最高價且最低價小于前4周最低價,這時在同一周期內(nèi)即做多又做空,形成了沖突,也就是我說的信號競爭,模型到底是多還是空呢?這就需要引入仲裁機制.對競爭進行仲裁,方法很多,可以利用趨勢仲裁,也可以使用已經(jīng)發(fā)生的某一狀態(tài)或指標(biāo)等來進行仲裁.在交易模型設(shè)計中,競爭是允許的,仲裁也不是必須的,但必須根據(jù)實際情況全面考慮各種因數(shù),然后決定是否使用仲裁. 信號競爭與仲裁更多的被應(yīng)用在對信號的分析和統(tǒng)計上. 驗證 程序開發(fā)過程中和設(shè)計完成后,都要進行驗證,驗證的方法很多,既可以對單條語句或單個模塊進行驗證,也可以對整個模型進行驗證.我們一般采用的有圖形化驗證,歷史數(shù)據(jù)測試,K線復(fù)盤,實時模擬測試等等.經(jīng)過這些初步驗證,各方面性能指標(biāo)達到滿意后,還要進行一段時間的實盤驗證.所有的驗證過程中,都有可能發(fā)現(xiàn)新問題,只有在全部問題關(guān)閉后,才可以正式投入使用. 責(zé)任編輯:翁建平 |
【免責(zé)聲明】本文僅代表作者本人觀點,與本網(wǎng)站無關(guān)。本網(wǎng)站對文中陳述、觀點判斷保持中立,不對所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔(dān)全部責(zé)任。
本網(wǎng)站凡是注明“來源:七禾網(wǎng)”的文章均為七禾網(wǎng) levitate-skate.com版權(quán)所有,相關(guān)網(wǎng)站或媒體若要轉(zhuǎn)載須經(jīng)七禾網(wǎng)同意0571-88212938,并注明出處。若本網(wǎng)站相關(guān)內(nèi)容涉及到其他媒體或公司的版權(quán),請聯(lián)系0571-88212938,我們將及時調(diào)整或刪除。
七禾研究中心負責(zé)人:劉健偉/翁建平
電話:0571-88212938
Email:57124514@qq.com
七禾科技中心負責(zé)人:李賀/相升澳
電話:15068166275
Email:1573338006@qq.com
七禾產(chǎn)業(yè)中心負責(zé)人:果圓/王婷
電話:18258198313
七禾研究員:唐正璐/李燁
電話:0571-88212938
Email:7hcn@163.com
七禾財富管理中心
電話:13732204374(微信同號)
電話:18657157586(微信同號)
七禾網(wǎng) | 沈良宏觀 | 七禾調(diào)研 | 價值投資君 | 七禾網(wǎng)APP安卓&鴻蒙 | 七禾網(wǎng)APP蘋果 | 七禾網(wǎng)投顧平臺 | 傅海棠自媒體 | 沈良自媒體 |
? 七禾網(wǎng) 浙ICP備09012462號-1 浙公網(wǎng)安備 33010802010119號 增值電信業(yè)務(wù)經(jīng)營許可證[浙B2-20110481] 廣播電視節(jié)目制作經(jīng)營許可證[浙字第05637號]
技術(shù)支持 本網(wǎng)法律顧問 曲峰律師 余楓梧律師 廣告合作 關(guān)于我們 鄭重聲明 業(yè)務(wù)公告
中期協(xié)“期媒投教聯(lián)盟”成員 、 中期協(xié)“金融科技委員會”委員單位