開(kāi)拓者量化網(wǎng) 資訊頻道 程序化交易 交易心得 創(chuàng)造性發(fā)展程序化交易的方法

[轉(zhuǎn)] 創(chuàng)造性發(fā)展程序化交易的方法

2014-11-21 09:55 來(lái)源: 量投網(wǎng) 瀏覽:1749 評(píng)論:(0) 作者:hjh1350

本文不是一篇介紹如何編寫一個(gè)性能優(yōu)異模型的文章,本文的初衷是以拋磚引玉的方式來(lái)探討發(fā)展和創(chuàng)新程序化交易編程的思路、方式、方法。

人類所有的智慧和文明,來(lái)源于對(duì)歷史的積累和創(chuàng)新。在期貨交易中,交易的目的是盈利,每一次進(jìn)場(chǎng)和出場(chǎng),都是對(duì)未來(lái)行情發(fā)展的一種預(yù)測(cè),只是這種預(yù)測(cè)不是來(lái)自迷信,而是以歷史數(shù)據(jù)的概率統(tǒng)計(jì)和分析為基礎(chǔ),加上不斷發(fā)展和創(chuàng)新的產(chǎn)物。有人在多頭趨勢(shì)中做多,那是因?yàn)闅v史概率告訴他,趨勢(shì)大多具有慣性,不會(huì)馬上結(jié)束;有人在相對(duì)高點(diǎn)做空,同樣也是來(lái)自對(duì)歷史數(shù)據(jù)概率分析,行情總是以波浪形式在陰陽(yáng)轉(zhuǎn)換中輪回發(fā)展。因此,概率統(tǒng)計(jì)和分析是交易的基礎(chǔ)和靈魂,但概率在一定范圍內(nèi)不是固定不變的,它自身也在歷史的長(zhǎng)河中不斷發(fā)展和變化。

綜上所述,一個(gè)擬合歷史的交易模型不一定是性能優(yōu)良的模型,但一個(gè)不能擬合歷史的模型肯定不是性能優(yōu)良的程序化交易模型。

用簡(jiǎn)單的哲理解決復(fù)雜的問(wèn)題

光陰一去不復(fù)返,這是大家都知道的道理,它告戒我們要從我做起,從現(xiàn)在做起,今天的事情今天做,那么,在程序化交易的程序中,我們同樣可以用下面這一條簡(jiǎn)單的語(yǔ)句告訴計(jì)算機(jī)這一哲理。

TODAY:=ZIGZAG(DATE,00);這樣我們可以讓計(jì)算機(jī)在IF(DATE=TODAY,…)的控制下完成今天要做的任何事情,如只在今天(也就是圖表的最后一天)統(tǒng)計(jì)/繪圖甚至交易,當(dāng)然也可以根據(jù)個(gè)人習(xí)慣有其他姊妹寫法,前提是天天向上。如:TODAY:=IF(DATE=PEAK(DATE1,10),1,0);或者TODAY:=PEAK(DATE1,10);

程序化交易模型設(shè)計(jì)和調(diào)試過(guò)程中,難免發(fā)現(xiàn)這樣那樣的問(wèn)題。下面我們以大家非常熟悉一個(gè)簡(jiǎn)單的均線穿透模型為例來(lái)分析其中可能出現(xiàn)的問(wèn)題,以及解決方法。

MA1:=MA(CLOSE,N1);
MA2:=MA(CLOSE
N2);
CROSS(MA1
,MA2)BPK;
CROSS(MA2
,MA1)SPK;

這個(gè)程序化交易模型在使用中很容易出現(xiàn)指令反復(fù)和消失的現(xiàn)象,這是我們發(fā)現(xiàn)的問(wèn)題,那么我們現(xiàn)在來(lái)分析問(wèn)題。在K線數(shù)據(jù)中,最常用的數(shù)據(jù)有開(kāi)盤價(jià)、最高價(jià)、最低價(jià)、收盤價(jià),他們有如下特征。

分析問(wèn)題:從上表價(jià)格特征和均價(jià)公式可知,導(dǎo)致指令反復(fù)和消失的原因是引用了盤中可變的CLOSE。

解決問(wèn)題:一個(gè)問(wèn)題可能存在多種解決途徑。下面列舉幾種常用的解決這個(gè)程序化交易模型指令反復(fù)和消失的方法。

選擇等待K線走完再發(fā)指令,即勾選文華軟件界面上的等待K線走完選項(xiàng)。

不勾選等待K線走完,但將程序化交易模型更改如下,用開(kāi)盤價(jià)測(cè)試比較準(zhǔn)確,程序化交易模型執(zhí)行會(huì)在開(kāi)盤價(jià)附近成交,信號(hào)顯示與指令同步,指令時(shí)效與上面等同。

MA1:=MA(CLOSEN1);
MA2:=MA(CLOSE
,N2);
REF(CROSS(MA1
MA2),1)BPK;
REF(CROSS(MA2
,MA1)1),SPK;

上面兩種方法雖然能解決問(wèn)題,但同時(shí)也帶來(lái)了與理想設(shè)計(jì)相比的延時(shí)現(xiàn)象,要達(dá)到理想效果,我們不妨以上穿為例來(lái)分析一下穿透的瞬態(tài),從簡(jiǎn)單平均算法的原理及開(kāi)平條件可以看出,穿透瞬態(tài)必然滿足如下條件,CLOSE=HIGH并且MA1>=MA2,并且CLOSE為MA1和MA2共用,由于HIGH具有上增長(zhǎng)不可逆特征,在這個(gè)瞬間我們用HIGH代替與之相等的CLOSE,就可以排除指令反復(fù)和消失現(xiàn)象。當(dāng)然,這只是針對(duì)這個(gè)連續(xù)持倉(cāng)的程序化交易模型,如果是斷續(xù)持倉(cāng)的程序化交易模型,則還需要考慮更多問(wèn)題,在接下來(lái)的[信號(hào)競(jìng)爭(zhēng)與仲裁]中會(huì)談到。

根據(jù)MA原理可知,下面兩行代碼等價(jià)。

MA1:=MA(CLOSE,N1);
MA1:=(REF(MA(CLOSEN1-1),1)*(N1-1)+CLOSE)/N1;
現(xiàn)在就可以用如下代碼來(lái)表達(dá)原模型的思想并解決指令反復(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;

通過(guò)對(duì)歷史數(shù)據(jù)的統(tǒng)計(jì)和分析,前輩們已經(jīng)總結(jié)了很多有價(jià)值的規(guī)律,如果善于觀察,我們也許還能發(fā)現(xiàn)一些另外的不曾被重視的規(guī)律。

舉個(gè)例子,在設(shè)計(jì)追蹤止損模塊時(shí),按照追蹤止損定義,設(shè)定獲利閥值和回撤止損值都是固定的某一數(shù)值,在實(shí)際應(yīng)用中,雖然有一定效果,但效果并不是特別理想,觀察發(fā)現(xiàn),這個(gè)止損的合理值與最近一段時(shí)期的振幅有很大關(guān)系,并且這種關(guān)聯(lián)的表現(xiàn)近似為一個(gè)頂點(diǎn)在第一象限的二次函數(shù)圖象。那么,假設(shè)D為最小止損值,X為振幅,Y為實(shí)際止損值,文華語(yǔ)言的函數(shù)關(guān)系式可如下表示。Y:=MAX(D,-A*SQUARE(X)+B*X+D);

止損值肯定有一定的范圍,所以必須先定義最小值D和最大值,這可以通過(guò)統(tǒng)計(jì)分析得出,同時(shí)還可以找到對(duì)應(yīng)止損最大值的幅度,設(shè)這個(gè)已知幅度為F,由于函數(shù)曲線的頂點(diǎn)在第一象限,頂點(diǎn)值即最大止損值,將已知最大止損值設(shè)定為TOP,那么可以用下面方程組計(jì)算出AB

-B/(2*A)=F; 
(4*A*D-B*B)/4A=TOP;

解上面方程組,求出AB的解,然后將AB,D帶入上面的函數(shù)表達(dá)式,就完成了Y(即止損值)的自適應(yīng)變化,Y將在最小止損值D到最大止損值TOP這個(gè)范圍內(nèi)根據(jù)X的變化而變化,它實(shí)際上就是上面拋物線函數(shù)在第一象限的部分連續(xù)曲線段。

通過(guò)這個(gè)例子,我們將它應(yīng)用到反手操作上,實(shí)際效果也不錯(cuò)。

在編程過(guò)程中,編程邏輯相當(dāng)重要,但并不是排除了所有單條語(yǔ)句或單個(gè)模塊的邏輯錯(cuò)誤,就代表整個(gè)模型不再有沖突,當(dāng)有這種沖突發(fā)生時(shí),我們稱之為競(jìng)爭(zhēng)。為方便說(shuō)明問(wèn)題,下面還是列舉一個(gè)簡(jiǎn)單例子。

HIGH>REF(HHV(HIGH,4)1),BK;

LOW 很顯然,如果將上面兩條語(yǔ)句的條件部分應(yīng)用在持續(xù)持倉(cāng)的系統(tǒng)中(只使用BPKSPK),由于平臺(tái)有自動(dòng)過(guò)濾機(jī)制,不會(huì)有多大問(wèn)題,但如果將它應(yīng)用在不過(guò)濾系統(tǒng)或有混合指令的斷續(xù)交易系統(tǒng)中,若在空倉(cāng)狀態(tài)下,當(dāng)本周最高價(jià)大于前四周最高價(jià)且最低價(jià)小于前4周最低價(jià),這時(shí)在同一周期內(nèi)即做多又做空,形成了沖突,也就是我說(shuō)的信號(hào)競(jìng)爭(zhēng),模型到底是多還是空呢?這就需要引入仲裁機(jī)制。對(duì)競(jìng)爭(zhēng)進(jìn)行仲裁,方法很多,可以利用趨勢(shì)仲裁,也可以使用已經(jīng)發(fā)生的某一狀態(tài)或指標(biāo)等來(lái)進(jìn)行仲裁。在交易模型設(shè)計(jì)中,競(jìng)爭(zhēng)是允許的,仲裁也不是必須的,但必須根據(jù)實(shí)際情況全面考慮各種因數(shù),然后決定是否使用仲裁。

信號(hào)競(jìng)爭(zhēng)與仲裁更多的被應(yīng)用在對(duì)信號(hào)的分析和統(tǒng)計(jì)上。

程序開(kāi)發(fā)過(guò)程中和設(shè)計(jì)完成后,都要進(jìn)行驗(yàn)證,驗(yàn)證的方法很多,既可以對(duì)單條語(yǔ)句或單個(gè)模塊進(jìn)行驗(yàn)證,也可以對(duì)整個(gè)程序化交易系統(tǒng)模型進(jìn)行驗(yàn)證。我們一般采用的有圖形化驗(yàn)證,歷史數(shù)據(jù)測(cè)試,K線復(fù)盤,實(shí)時(shí)模擬測(cè)試等等。經(jīng)過(guò)這些初步驗(yàn)證,各方面性能指標(biāo)達(dá)到滿意后,還要進(jìn)行一段時(shí)間的實(shí)盤驗(yàn)證。所有的驗(yàn)證過(guò)程中,都有可能發(fā)現(xiàn)新問(wèn)題,只有在全部問(wèn)題關(guān)閉后,才可以正式投入使用。


評(píng)分:     

評(píng)論列表(0)
第 1- 0 條, 共 0 條.

您需要 [注冊(cè)] 或  [登陸] 后才能發(fā)表點(diǎn)評(píng)