田成志+胡元瑞



摘 要:程序化交易是證券市場上的熱門話題,但公開文獻(xiàn)對此研究較少,國內(nèi)研究集中于使用傳統(tǒng)技術(shù)分析指標(biāo)構(gòu)建交易系統(tǒng)。本文嘗試另辟蹊徑利用震蕩交易行情在狹窄區(qū)間內(nèi)運(yùn)動的本質(zhì),分倉交易獲取整體利潤又以技術(shù)指標(biāo)為輔助提高交易成功率,以編寫一個(gè)程序化震蕩交易系統(tǒng)。程序采用MetaQuotes Language 4 (MQL4) 語言編寫,交易測試平臺為外盤交易常使用的MT4平臺,交易品種為玉米(CORNUSD)現(xiàn)貨差價(jià)合約(CFD)。使用歷史數(shù)據(jù)對交易程序測試,結(jié)果顯示該交易程序具有穩(wěn)定的盈利能力。
關(guān)鍵詞:農(nóng)產(chǎn)品差價(jià)合約;程序化交易;MQL4
一、研究背景
證券交易交易實(shí)質(zhì)上是人與人的博弈,所謂“國之利器,不可示人”,在充滿資金博弈和利益角逐的證券市場就更是如此,少有人愿意將愿意將自己的交易策略公之于眾,實(shí)踐也告訴我們歷史上那些曾經(jīng)能夠獲取超額利潤的交易策略在為公眾所知之后都逐漸失效(雷宗光,2007),因而學(xué)術(shù)界對程序化交易研究的公開資料稀少。
國內(nèi)關(guān)于程序化交易的研究主要有:將國外成熟的交易系統(tǒng)用于中國市場尤其是A股和滬深300指數(shù)的測試,如將20世紀(jì)90年代在美國市場炙手可熱的海龜交易系統(tǒng)用于滬深300指數(shù)的測試(龍成,2015);使用經(jīng)典技術(shù)分析指標(biāo)構(gòu)建程序化交易系統(tǒng),如王垚鑫(2013)用威廉指標(biāo)構(gòu)建用于滬深300股指期貨的交易程序、李成林(2013)將移動平均線(MA)用于上證50ETF的研究。
本文的嘗試不使用傳統(tǒng)技術(shù)指標(biāo)作為程序化交易系統(tǒng)的根本策略,轉(zhuǎn)而思考震蕩行情的本質(zhì)--在一定區(qū)間內(nèi)的往復(fù)運(yùn)動,利用這種往復(fù)運(yùn)動構(gòu)建一種簡單明了的交易規(guī)則在整個(gè)震蕩區(qū)間內(nèi)獲取平均利潤,降低對技術(shù)指標(biāo)所提供的精確入場時(shí)機(jī)的依賴,僅僅使用技術(shù)指標(biāo)作為是否入場的信號過濾器。
二、交易工具
差價(jià)合約(Contracts for Difference,CFD),根據(jù)路透金融詞典的定義是:不涉及實(shí)物商品或證券的交換,僅結(jié)算價(jià)和合約價(jià)的差額作現(xiàn)金結(jié)算的交易方式(黃健洋,2013)。
差價(jià)合約的價(jià)格變化與對應(yīng)標(biāo)的物同步,持有差價(jià)合約的交易者并不擁有真實(shí)的商品或證券,買入或者賣出以外匯、股票、大宗商品為標(biāo)的物的差價(jià)合約因此不涉及所有權(quán)的轉(zhuǎn)移,交易的盈虧全部以現(xiàn)金結(jié)算,不能進(jìn)行實(shí)物交割。也就是說差價(jià)合約能讓投資者可以在不持有真實(shí)資產(chǎn)的情況下,獲得對應(yīng)標(biāo)的物的投資收益。
外匯差價(jià)合約的特點(diǎn)有:
1.高杠桿。外匯差價(jià)合約由做市商或經(jīng)紀(jì)商提供,這些交易商允許投資者使用保證金進(jìn)行交易。在純經(jīng)紀(jì)商模式下,經(jīng)紀(jì)商為投資者提供融資,比如經(jīng)紀(jì)商允許投資者使用2%保證金進(jìn)行交易,剩余的98%資金由經(jīng)紀(jì)商提供并收取融資利息;在做市商模式下,做市商并不把全部合約投放到真實(shí)市場中,而是通過不同交易者的交易進(jìn)行內(nèi)部對沖,不能對沖的部分再投放市場或者由做市商自己作為交易對手方,做市商衡量交易風(fēng)險(xiǎn)后提一個(gè)不同于真實(shí)市場價(jià)格的報(bào)價(jià)給投資者,差價(jià)部分即為做市商的收益。做市商模式中沒有實(shí)際的融資發(fā)生,不收取融資利息。當(dāng)前差價(jià)合約多數(shù)采取做市商模式,因而做市商能給投資者提供極高的杠桿,美國全國期貨協(xié)會(NFA)規(guī)定的外匯CFD最高杠桿倍數(shù)為50倍,英國金融服務(wù)管理局(FSA)允許的最高杠桿為400倍,在新西蘭、俄羅斯、塞浦路斯等國家的監(jiān)管則更為寬松,在當(dāng)?shù)刈缘慕灰咨棠芴峁?000倍甚至2000倍的杠桿(李樂,2009)。
2.無到期日。差價(jià)合約不同于期權(quán)期貨,有固定的交割日,在交割日到來之前價(jià)值會不斷降低或者價(jià)格波動不斷趨于現(xiàn)貨價(jià)格。差價(jià)合約沒有到期日,能夠無限期持有,因而也被成為現(xiàn)貨期貨。投資者能夠按照自己的投資目標(biāo)自由安排持倉時(shí)間,只要保證金充足就能繼續(xù)持有合約直到自愿離場。沒有確定的到期日就給交易者提供長期持倉的自由,對比期權(quán)期貨等衍生品合約具有顯著的優(yōu)勢(姜濤,2009)。
表1信息為某交易商提供的交易條件。
玉米差價(jià)合約交易單位為手,1手合約的價(jià)值為10萬美元,報(bào)價(jià)方式是4位數(shù)報(bào)價(jià)法,如報(bào)價(jià)3.675的含義是3.675美元每蒲式耳,報(bào)價(jià)的第四位數(shù)為1點(diǎn)(房瑞景,2007)。通常交易商接受最小交易單位為0.01手的交易單。點(diǎn)差是交易商的利潤來源,交易商提供的CORNUSD點(diǎn)差為1點(diǎn),如果投資者需要買入該合約,市場報(bào)價(jià)為3.675則交易商提供給投資者的買入價(jià)格是3.676。
玉米CFD保證金占用率極低帶來了很高的資金利用率;合約無到期日,可以在整個(gè)震蕩期內(nèi)實(shí)施策略,因此本文選用玉米CFD作為交易測試品種。
三、程序化交易模型和交易程序
1.程序化交易平臺
Meta Trader 4(MT4)是由MetaQuotes Software公司在2005年推出的行情接收軟件,是目前使用最廣泛的外盤交易軟件(戴夫,2013)。外匯零售市場90%的交易都是通過MT4完成,它流行的原因有界面簡潔卻功能強(qiáng)大,能方便的查看各個(gè)時(shí)間周期的行情,繪制各種技術(shù)指標(biāo)、使用各種技術(shù)分析工具,同時(shí)整合行情分析和交易功能做到所見即所得,投資者觀察到行情發(fā)動可以立即在行情界面下單,交易數(shù)據(jù)顯示在行情界面;更重要的MT4軟件內(nèi)嵌了MQL4語言,用戶可以使用該語言編寫自動化交易程序、腳本、指標(biāo),在MT4內(nèi)完成測試、修改、掛機(jī)執(zhí)行(Blackledge J,2011)。MQL4語言是一種面向過程的語言,它的高效執(zhí)行和編寫的自由度都逼近專業(yè)的計(jì)算機(jī)編程語言,可以認(rèn)為是簡化版的C語言(Eka H,2013)。
本文使用MT4作為交易測試平臺,MQL4語言作為自動化交易程序編寫所用的計(jì)算機(jī)語言。
2.程序化交易策略
分倉策略是一種忽略擺動指數(shù)提供的入場時(shí)機(jī)和精確入場點(diǎn)位,而利用震蕩行情總是在狹小區(qū)間內(nèi)來回波動的特性,通過分倉攤平成本,最求整體判斷正確獲取平均利潤的震蕩交易方式(John J.Murphy,1994)。
(1)依據(jù)其走勢的復(fù)雜程度將整個(gè)震蕩走勢劃為等分,震蕩走勢越簡單劃分的份數(shù)就越少,若價(jià)格在震蕩區(qū)間內(nèi)是最簡單的直上直下就不需要劃分(肖斌卿,2010)。
(2)綜合判斷趨勢和政治經(jīng)濟(jì)環(huán)境確定價(jià)格走勢的趨向性,在震蕩區(qū)間內(nèi)僅進(jìn)行多頭交易或空頭交易。
(3)在等分的區(qū)間上部、中部、下部分別的下半部分開立多頭頭寸,固定止盈為略小于三分之一震蕩區(qū)間,若出現(xiàn)虧損則在下一個(gè)交易區(qū)間執(zhí)行補(bǔ)倉操作,頭寸分布比例為1:2:4或者1:1.5:2.25。最多允許同時(shí)持有三個(gè)頭寸。
(4)當(dāng)價(jià)格突破震蕩區(qū)間,結(jié)束震蕩交易策略,了結(jié)所有頭寸。
3.交易程序?qū)傩?/p>
4.交易程序思想
該程序的基本交易方法是在整個(gè)震蕩區(qū)間內(nèi)等距加倍分布頭寸,以虧損加倉方式攤平成本來獲得整體利潤(崔健,2015)。
(1)進(jìn)場策略
使用虧損加倉的分倉交易策略優(yōu)點(diǎn)是能夠攤平成本使凈值表現(xiàn)穩(wěn)定,但在極端情況下凈值曲線會出現(xiàn)巨大回測。因此在分倉交易中第一筆交易的成功率很重要,第一筆交易成功就不需要虧損加倉,也不會出現(xiàn)加倉導(dǎo)致的風(fēng)險(xiǎn)暴露成倍放大。使用擺動指數(shù)的震蕩交易策略優(yōu)點(diǎn)是成功率高,所以該交易程序使用了MACD指標(biāo)作為過濾器,只有在MACD發(fā)出買入或賣出信號后程序才會開倉進(jìn)行第一筆交易以提高止盈成功率(Victor.sperandeo,1999)。
后續(xù)加倉只有在達(dá)到預(yù)設(shè)的加倉距離后才能開立頭寸,交易方向與第一筆交易相同。
(2)出場策略
該程序出場策略分為兩個(gè),被動離場策略和主動離場策略。
被動離場策略,程序提供了應(yīng)對極端狀況的保護(hù)性止損,由程序使用者自行設(shè)定。一般設(shè)置在震蕩區(qū)間外一定距離,當(dāng)價(jià)格發(fā)生不利變化突破震蕩區(qū)間,程序在止損位平倉所有頭寸(科林,2010)。
(3)主動離場策略
①固定點(diǎn)數(shù)止盈。固定止盈點(diǎn)數(shù)為震蕩區(qū)間的某個(gè)比例,分倉交易中一組交易單的最新一筆達(dá)到止盈點(diǎn)數(shù),對該組交易內(nèi)所有頭寸進(jìn)行平倉鎖定利潤,降低風(fēng)險(xiǎn)暴露。等待下一次MACD發(fā)出入場指令,開始下一次分倉交易(羅威,2016)。
②固定點(diǎn)數(shù)追蹤止盈。程序提供追蹤止盈功能,當(dāng)利潤大于(固定止盈點(diǎn)數(shù)+追蹤止盈點(diǎn)數(shù))時(shí)進(jìn)行追蹤止盈,當(dāng)利潤回測點(diǎn)數(shù)>=追蹤止盈點(diǎn)數(shù)時(shí)主動平倉保護(hù)利潤(李曉楓,2012)。
③主觀監(jiān)控的結(jié)束策略使用。震蕩走勢不可能永遠(yuǎn)持續(xù),為了避免震蕩走勢結(jié)束時(shí)的資金凈值曲線劇烈波動,交易程序使用者應(yīng)該根據(jù)預(yù)估的震蕩持續(xù)時(shí)間、綜合判斷國際經(jīng)濟(jì)形勢、該國經(jīng)濟(jì)的繁榮與蕭條、貨幣當(dāng)局可以采取的措施,價(jià)格圖形發(fā)出的信號以主動結(jié)束震蕩策略的使用,轉(zhuǎn)而積極準(zhǔn)備趨勢交易。一個(gè)值得關(guān)注的技術(shù)指標(biāo)是波動率,震蕩走勢實(shí)際是波動率的下降,統(tǒng)計(jì)數(shù)據(jù)證明,趨勢行情開始前的價(jià)格波動率往往是最低點(diǎn),所以當(dāng)價(jià)格波動率降到極低就應(yīng)該高度警惕(鄭振龍,2010)。
四、交易程序測試
選取CORNUSD,2015年9月14日-2016年4月20日的走勢作交易測試。作斐波那契數(shù)列,在回調(diào)50%的價(jià)位開始震蕩交易。震蕩區(qū)間為3.431-3.897,振幅大概為460點(diǎn)。該輪上漲后期漲勢比較糾結(jié),由此判斷震蕩走勢趨于復(fù)雜,將震蕩區(qū)間5等分,固定止盈點(diǎn)數(shù)和開倉間隔略小于1/5區(qū)間為80點(diǎn)。僅交易多頭。
1.整體表現(xiàn)
從表3的各項(xiàng)指標(biāo)可以看出,分倉策略震蕩機(jī)交易系統(tǒng)的各項(xiàng)數(shù)據(jù)都達(dá)到了優(yōu)秀水平。
模型最大的優(yōu)點(diǎn)是盈虧比,通常程序化震蕩交易系統(tǒng)的盈虧比能達(dá)到2就很不錯了,盈虧比為3就是很優(yōu)秀的水平,分倉震蕩交易系統(tǒng)的盈虧比達(dá)到了5.59,甚至超越了表現(xiàn)優(yōu)秀的趨勢交易系統(tǒng)所能實(shí)現(xiàn)的盈虧比,而且這些趨勢交易系統(tǒng)的高盈虧比往往是建立在低勝率基礎(chǔ)上的(楊寶明,1992)。
其次使用擺動指數(shù)MACD作為信號過濾器,交易程序勝率為53.43%,達(dá)到了程序化震蕩交易系統(tǒng)的一般水平。
2.圖表分析
資金凈值曲線
分倉策略震蕩交易程序的資金凈值曲線表現(xiàn)穩(wěn)健,幾乎以線性增長,這符合策略設(shè)計(jì)的原理和構(gòu)想。模型設(shè)計(jì)是以小止盈逐筆兌現(xiàn)利潤,所以出現(xiàn)資金曲線的穩(wěn)定增長、凈值和余額回撤都極小是在意料之中。該類資金曲線符合投資者要求看到凈值時(shí)刻上升并且長期穩(wěn)定上升沒有重大回撤的心理,易于使用者對策略的堅(jiān)持。
該段震蕩走勢最終是以向上突破結(jié)束的,這符合我們對震蕩走勢趨向性的判斷,因此凈值曲線表現(xiàn)良好。但如果出現(xiàn)判斷錯誤,震蕩走勢最終以反向突破的情況,在結(jié)束策略執(zhí)行的階段會出現(xiàn)明顯的凈值回撤。
3.交易盈虧分布圖
盈虧分布圖中,由于采用固定點(diǎn)數(shù)止盈,盈利主要分布在62、125、252三個(gè)區(qū)域。在62附近止盈代表著入場即成功實(shí)現(xiàn)盈利目標(biāo),在125附近止盈的交易是在虧損狀態(tài)下加倉一次的交易,而盈利在252附近的交易是在虧損狀態(tài)下兩次加倉的交易。總體來看盈利交易共31筆,加倉2次的交易8筆,占25.8%,多數(shù)交易可以直接止盈或者僅加倉一次,這說明策略整體風(fēng)險(xiǎn)暴露處于較低水平,能夠有效降低極端情況下出現(xiàn)巨額虧損的概率。
五、總結(jié)
經(jīng)歷史行情數(shù)據(jù)回測,使用分倉策略的交易程序能夠在震蕩行情下獲得穩(wěn)定的盈利表現(xiàn),但是獲得這種穩(wěn)定盈利的概率與對震蕩行情的正確判斷高度相關(guān)。這種對震蕩行情、趨勢行情的準(zhǔn)確判斷和預(yù)測通過計(jì)算機(jī)程序是難以完成的,因?yàn)槌掷m(xù)時(shí)間在數(shù)月的震蕩行情都有其經(jīng)濟(jì)根源,這種震蕩行情的打破也往往與重大的經(jīng)濟(jì)事件相關(guān),所以本文在策略的設(shè)計(jì)中將這項(xiàng)任務(wù)交給人來完成。交易的核心是人,使用該交易程序的投資者需要時(shí)刻關(guān)注市場環(huán)境的發(fā)展變化,交易的成功源自于個(gè)體對市場的正確判斷,該交易程序不能在判斷錯誤后幫助投資者一次又一次僥幸的逃過虧損。
參考文獻(xiàn):
[1]雷宗光.證券交易策略博弈研究[D].武漢理工大學(xué),2007.
[2]龍成.基于海龜法則的量化模型研究[D].廣西大學(xué),2015.
[3]王垚鑫.滬深300股指期貨程序化交易模型設(shè)計(jì)[D].西南財(cái)經(jīng)大學(xué),2013.
[4]李成林.移動平均線交易策略有效性比較研究[D].上海交通大學(xué),2013.
[5]黃健洋.我國引入差價(jià)合約的可行性研究[D].河北大學(xué),2013.
[6]李樂.介紹一種新型的金融衍生工具--差價(jià)合約[J].經(jīng)濟(jì)研究參考,2009(28):37-39.
[7]姜濤,任榮明.差價(jià)合約交易研究[J].價(jià)格理論與實(shí)踐,2009(6):57-58.
[8]房瑞景,崔振東,周腰華,等.中美玉米期貨市場價(jià)格發(fā)現(xiàn)功能的實(shí)證研究[J].價(jià)格月刊,2007(12):16-20.
[9]戴夫,C.MT4自動交易[M].中國經(jīng)濟(jì)出版社,2013.
[10]Blackledge J, Murphy K. Forex Trading using MetaTrader 4 with the Fractal Market Hypothesis[J]. Dublin Institute of Technology, 2011:1-9.