程序化交易中策略的實現(xiàn)測試和優(yōu)化畢業(yè)論文_第1頁
程序化交易中策略的實現(xiàn)測試和優(yōu)化畢業(yè)論文_第2頁
程序化交易中策略的實現(xiàn)測試和優(yōu)化畢業(yè)論文_第3頁
程序化交易中策略的實現(xiàn)測試和優(yōu)化畢業(yè)論文_第4頁
程序化交易中策略的實現(xiàn)測試和優(yōu)化畢業(yè)論文_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、程序化交易中策略的實現(xiàn),測試和優(yōu)化畢業(yè)論文 程序化交易中策略的實現(xiàn),測試和優(yōu)化摘要:隨著以股指期貨為代表的金融衍生品的推出,我國金融市場變得日趨復雜多變,傳統(tǒng)的投資策略由于受到人類思維可以處理的信息量的限制、容易受到人類認知偏差和個人情感的影響、缺少相應風險控制策略的考慮,越來越不適合瞬息萬變的現(xiàn)代金融市場,引入已在國外金融市場得到廣泛應用的程序化交易就顯得非常必要。程序化交易是近三十年來興起于歐美發(fā)達國家 結合現(xiàn)代數(shù)學理論和計算機技術的一種新的金融市場分析和投資方式,相比傳統(tǒng)的基本面分析和技術面分析而言,具有紀律性、系統(tǒng)性、及時性、準確性和分散化的優(yōu)點。目前程序化交易方面的研究在發(fā)達國家市場

2、己經(jīng)相當成熟,并且被廣泛的應用于外匯、證券、期貨等市場。而在國內,由于受到期貨市場產(chǎn)品機構單一、交易制度不夠靈活等限制,程序化交易發(fā)展緩慢。 本文結合程序化交易的發(fā)展歷程和國內外程序化交易的發(fā)展現(xiàn)狀,采用理論研究和實證分析相結合的方法,以深圳開拓者科技有限公司開發(fā)的交易開拓者軟件為平臺,以其自帶的TB語言為基本語言,以股指期貨市場為基礎,探討如何實現(xiàn)不同類型的可以持續(xù)盈利的交易策略。首先,本文介紹了程序化交易的意義、優(yōu)缺點和交易策略的分類;其次,介紹了一般交易策略的設計流程,并依此流程開發(fā)出了若干種不同類型的交易策略,并對其進行了測試和優(yōu)化;再次,介紹了對程序化交易來說極其重要的風險控制和資金

3、管理思想、其常用的方法以及這些思想在交易策略中是如何實現(xiàn)的;最后,本文對程序化交易在中國金融市場發(fā)展的潛力和可能面臨的問題做出了展望。關鍵詞:程序化交易,交易策略,風險控制,資金管理目錄1,概述1.1 程序化交易概述1.1.1 什么是程序化交易程序化交易又稱計算機交易、算法交易,是利用計算機技術并且采用一定的數(shù)學模型去踐行投資理念,實現(xiàn)投資策略的過程。與傳統(tǒng)的投資策略不同,程序化交易不是靠個人感覺或單一技術指標來管理資產(chǎn),而是將適當?shù)耐顿Y思想、投資經(jīng)驗反映在量化模型中,利用電腦幫助人腦處理大量復雜的金融信息,幫助人腦總結市場的規(guī)律,建立可以重復使用并且反復優(yōu)化的投資策略,用來指導投資者(機構)

4、的投資決策并自動實現(xiàn)交易的過程。幫助投資者不論在上漲或下跌的市場行情中,都能輕松抓住趨勢波段,進而賺取波段獲利。1.1.2 和傳統(tǒng)投資策略相比的優(yōu)勢和劣勢傳統(tǒng)的投資策略,無論是基本面分析還是技術面分析,都存在著自身無法克服的缺點:受到人類思維可以處理的信息量的限制;容易受到認知偏差和人類情感的影響;更加強調收益率,對風險控制和資金管理缺乏考慮。程序化交易克服了這些缺點,具有紀律性、系統(tǒng)性、及時性、準確性、和分散化的特點。其中紀律性是指程序化交易中交易的進行時按照交易策略中的思想進行,不會隨著投資者情緒的變化而隨意更改,能夠克服貪婪、恐懼、僥幸等人類的弱點,同時也能克服人類常見的認知偏差,如損失

5、厭惡癥(指對避免損失有一種太過強烈的偏好,不能承擔風險)、沉淀效應(指更重視已經(jīng)花掉的錢,而忽視未來可能花掉的錢),處置效應(指早早兌現(xiàn)利潤,卻讓損失繼續(xù)下去)、結果偏好(只會根據(jù)一個決策的結果來判斷策略的好壞,而不是考慮決策本身的質量)、近期偏好(更重視近期的數(shù)據(jù)或經(jīng)驗,忽視歷史數(shù)據(jù)或經(jīng)驗)、錨定效應(過于依賴容易獲得的信息)、潮流效應(指盲目相信一件事,只因為許多人都相信它)、信奉小數(shù)(從太少的信息中得到?jīng)]有一句的結論)等;系統(tǒng)性是指程序化交易中包括了多層次的量化模型,多角度的觀察和海量數(shù)據(jù)的觀察,同時還融入了資金管理和風險控制的思想;及時性是指,程序化交易中能夠及時快速的跟蹤市場變化,并

6、能夠迅速捕捉有利的趨勢或波段,快速下單;準確性是指能夠準確評價交易機會,克服主觀情緒偏差,妥善運用套利思想;分散化是指在控制風險的條件下,引入投資組合的理念,靠概率而不是單個股票取勝。 程序化交易的缺點是相對于它的優(yōu)點而言的。首先就是嚴謹有余,而靈活不足,交易策略設定運行后一般不提倡隨意的更改。另外,由于由于程序化交易每次的交易量很大,對市場的沖擊很大,一旦系統(tǒng)崩潰或者錯誤,對金融市場可能造成毀滅性的打擊,如1987年美國的股災,程序化交易就和組合保險一起被列為最大元兇。最后,由于程序化交易的研究要求有較高的金融知識和軟件背景,人才培育和硬件設施都需要大量的投資,更適合機構投資者,客觀上造成了

7、對一般個體投資者的不公平。 1.1.3 國內外發(fā)展現(xiàn)狀 程序化交易起源于20世紀70年代的美國,很多的觀念和技術源于數(shù)理金融和計算機及網(wǎng)絡技術。目前程序化交易方面的研究在發(fā)達國家市場己經(jīng)相當成熟,并且被廣泛的應用于外匯、證券、期貨等市場。據(jù)統(tǒng)計,倫敦股票交易所超過50%的交易額來自程序化交易,而美國市場則高達80%以上(數(shù)據(jù)來源于恒生銀行2012年年度報告)。此外,香港期貨交易所的恒生指數(shù)期貨和新加坡交易所的日經(jīng)指數(shù)期貨均采用程序化交易。在歐美發(fā)達國家,大部分養(yǎng)老基金和信托基金公司都使用程序化策略處理大額度的交易來降低沖擊成本,幾乎所有的投資經(jīng)理都使用程序化交易系統(tǒng)來輔助交易與資產(chǎn)管理。但是在

8、國內,由于期貨市場產(chǎn)品結構太過單一、交易制度不夠靈活、市場流動性較差、風險管理機制不夠完善等限制,程序化交易發(fā)展緩慢,直到2000年國內才有一家期貨公司成立了將推廣程序化交易作為戰(zhàn)略重點的程序化交易研究小組。近年來,隨著股指期貨等金融衍生品的推出,程序化交易的研究和應用受到越來越多投資者特別是機構投資者的重視。但是總體而言,國內的程序化交易系統(tǒng)大多是復制國外的,和國內金融市場的實際現(xiàn)狀有不少差異,和發(fā)達國家的程序化交易水平也有很大差距,程序化交易的研究和本地化在中國有著很大的發(fā)展空間。1.2 交易策略的概述1.2.1交易策略的核心意義 如果說把服務器,網(wǎng)絡帶寬等基礎設施看做程序化交易的軀殼的話

9、,交易策略就是程序化交易的大腦和靈魂。它是投資者投資思想、投資經(jīng)驗、投資理念的體現(xiàn),它決定了何時進場、何時出場、如何管理資金、怎樣控制風險,它的好壞直接關系到一個程序化交易系統(tǒng)的性能。1.2.2交易策略的分類交易策略的分類有以下多種方式:一,根據(jù)持倉時間長短不同,策略分為:長線策略(指能夠)、中線策略和短線策略。二,根據(jù)交易頻率的不同,策略分為:日內高頻交易和低頻交易。三,根據(jù)根據(jù)所參考技術指標的不同,策略又可分為以下類型: 大勢型策略,指為大盤設計的專用策略,通常不在個股的分析研判中使用。 趨勢型策略,這類策略一般用到至少兩條線,當兩條或以上線交叉時,策略發(fā)出買賣信號。 均線型策略:這類策略

10、是通過不同算法得到的平均線技術指標,通過不同期限的均線穿越的情況來發(fā)出買賣信號。 路徑型策略:這類策略也稱為阻力支撐型策略,在期貨或股票的價格走勢圖上,常有所謂的阻力位和支撐位(如下圖),也即價格會在前期高點或低點價格處反彈的傾向(只是傾向,并不一定)。因此根據(jù)投資者是否相信支撐位和阻力位堅守不破,這類策略又可分為趨勢跟蹤策略和反趨勢策略,采用趨勢跟蹤策略的投資者相信價格會突破阻力位或支撐位(也即在接近阻力位時會繼續(xù)上漲,在接近支撐位時會繼續(xù)下跌),他們會在阻力位被突破時買入做多,在支撐位被突破時賣出做空。在市場短期突破支撐位時,他們賣出以退出多頭交易,在市場短期突破阻力位時,他們買入以退出空

11、頭交易。而采用反趨勢交易策略的投資者們則相信價格不會突破阻力位或支撐位(也即在接近阻力位時會反彈,在接近支撐位時也會反彈),他們會在支撐位附近買入做多,在阻力位附近賣出做空,從而賺取之間的差價。 能量型策略:這類策略采用能量指標作為市場行情判斷的依據(jù),銅材采用情緒指標、心理線、成交量變異率、威廉多空力度線等能量指標來判斷市場上多空力量(即買賣力量)的對比,判斷多空雙方的情緒是高亢還是沮喪。如果多方力量強于空方力量,此時價格有下跌趨勢,應做空;相反,如果空方力量強于多方力量,此時價格有上漲趨勢,應做多。成交量型策略:這類策略是指通過對與成交量存在聯(lián)系的技術指標的判斷來判斷市場行情是利于空方還是多

12、方,從而判斷是做多還是做空。超賣超賣型策略:這種策略使用的指標大多為判斷市場處于超買超賣狀態(tài),如果市場處于超買狀態(tài)(對股票、期貨等的過度買入),則股價隨時可能下跌,應該做空;相反如果處于超賣狀態(tài)(對股票、期貨等的過度賣出),則股價隨時可能上升,應該做多。常用的技術指標有:CCI(即順勢指標,是專門用來測量股價是否已經(jīng)超出常態(tài)分布范圍)、KDJ(即隨機指標,是利用價格波動的真實波幅來反映價格走勢的強弱和超買超賣現(xiàn)象,在價格尚未上升或者下降之前發(fā)出買賣信號)、RSI(即相對強弱指標,是通過特定時期內股價的變動情況計算市場買賣力量對比,來判斷股票價格本質強弱,推測股票價格未來變動方向)、CMO(即C

13、handeMomentumOsciliator,錢德動量擺動指標,是由圖莎爾?錢德發(fā)明的,與其他動量指標擺動指標如相對強弱指標(RSI)和隨機指標(KDJ)不同,錢德動量指標在計算公式的分子中采用上漲日和下跌日的數(shù)據(jù)。在第三章的論述中,我們將介紹一個以此指標為基礎編寫的超買超賣型策略)等。 在本文中,我們將以最后一種分類為主,特別討論筆者編寫的常用并且適合股指期貨市場的趨勢型、均線型、路徑型和超賣超賣型四種策略。并對每個策略所依據(jù)的原理、代碼實現(xiàn)、測試結果、優(yōu)化結果、模擬交易結果做詳細的說明和解釋。1.2.3研究平臺、語言和市場概述 在本文中,我們使用的研究平臺是深圳開拓者科技有限公司開發(fā)的交

14、易開拓者軟件。這是一款移植于國外的程序化交易軟件,是目前國內市場占有率僅次于文華財經(jīng)的軟件,但是其函數(shù)庫以及系統(tǒng)自帶公式應用比文華財經(jīng)更為強大,交易穩(wěn)定性方面也更為穩(wěn)定。策略編寫語言是交易開拓者自帶的TB語言,而基本市場則選擇流動性比較好的股指期貨市場(但是并不局限于此,很多策略還適合于其他市場,將在第三章描述中詳細介紹)。2,不同類型交易策略的實現(xiàn)、測試和優(yōu)化2.1交易策略的設計流程 在下面幾節(jié)每個策略的開發(fā)中,我們都使用下圖所示的設計流程: 首先,介紹策略所參考的技術指標,其核心思想,開倉平倉,止盈止損等條件;其次,介紹策略的代碼實現(xiàn);再次,介紹策略在股指期貨市場中歷史數(shù)據(jù)中的測試結果,最

15、后針對市場的具體行情進行參數(shù)的優(yōu)化(可能還包括結構的優(yōu)化),最后我們會進入模擬盤利用當前真實數(shù)據(jù)進行檢驗,根據(jù)是否達到預期效果進行模型的修改和完善。2.2趨勢型策略2.2.1空中花園策略 核心思想:這是一個日內策略,主要是利用當日開盤的第一根K線是收陽還是收陰來判斷日內趨勢可能的運動方向,在當日高開或者低開時最有效。這是最快的一種入場方式,盡管有著很高的出錯概率,但是我們通過條件的判斷和止盈止損的加入,努力使錯誤的判斷帶來的損失最小化,而使正確的判斷帶來的盈利最大化。 做多條件:1,當日開盤價昨日收盤價*(1+K); 2,當前Bar的最高價當日第一個Bar的最高價。如果1和2同時滿足,判斷當前

16、有上漲趨勢,在當前Bar做多。式中,K為浮動比例參數(shù),用戶自己根據(jù)實際情況設定。 做空條件:1,當日開盤價昨日收盤價*(1-K); 2,當前Bar的最低價當日第一個Bar的最高價如果1和2同時滿足,判斷當前有下跌趨勢,在當前Bar做空。式中,K為浮動比例參數(shù),用戶自己根據(jù)實際情況設定。 止盈條件: 持多倉時,如果最高價平均入場價*(1+止盈點) 賣出平倉 持空倉時,如果最低價平均入場價*(1-止盈點) 買入平倉 止損條件: 持多倉時,如果最低價平均入場價*1-止損點賣出平倉 持空倉時,如果最高價平均入場價*(1+止損點)買入平倉 代碼實現(xiàn): / / 簡稱: HangingGarden / 名稱

17、: / 類別: 公式應用 / 類型: 用戶應用 / 輸出: / Params Numericlots1; /每次買賣手術 NumericbeginTime930; /交易開始時間9:30 NumericendTime1500;/交易結束時間15:00 Numericfloatby1;/大于或低于這一波動幅度時,判斷為上漲或下跌 NumericstopLoss10; / 止損點 NumerictakeProfit2;/止盈點 Numericoffset1;/滑點設置 Vars BoolSeriesrisingFalse; BoolSeriesfallingFalse; NumericSeries

18、firstHigh0; NumericSeriesfirstLow0; Numeric MyEntryPrice ;/入市價格 Numeric MyExitPrice;/出市價格 Numeric MinPoint;/止損時最小變動單位 Numeric i_offset;/交易時可接受的價格浮動范圍 Begin IfDate!Date1 and CurrentBar2/當前bar為當日開盤的第一根bar firstHighHigh; firstLowLow; ifOpenCloseD1*1+floatby/100 risingTrue; /判斷收陽 ifOpenCloseD1*1-floatby

19、/100 fallingTrue;/判斷收陰 Else risingrising1; fallingfalling1; firstHighfirstHigh1; firstLowfirstLow1; IfTime0.0001*beginTime And Time endTime*0.0001 And CurrentBar2 /是否在交易允許時間內 MyEntryPriceAvgEntryPrice; /平均入場價 i_offset offset*MinMove*PriceScale; MinPointMinMove*PriceScale; ifMarketPosition0/當前未持倉時 If

20、risingTrue and HighfirstHigh /做多條件滿足,做多 Buylots,Open+i_offset; PlotNumeric"Open",Open; Return; IffallingTrue and LowfirstLow /做空條件滿足,做空 SellShortlots,Open-i_offset; PlotNumeric"Open2",Open; Return; ifMarketPosition1 /當前持多倉時 /止盈 ifHighMyEntryPrice*1+TakeProfit*0.01 MyExitPriceMyEn

21、tryPrice*1+TakeProfit*0.01; sell0,MyExitPrice,Open; /PlotBool"sellshort",True; Return; /止損 if Low MyEntryPrice-Stoploss * MinPoint MyExitPrice MyEntryPrice-Stoploss * MinPoint; Sell0,MinMyExitPrice,Open; /PlotBool"sellshort",true; Return; /做空條件滿足,平多倉,開空倉 IffallingTrue and Lowfirs

22、tLow SellShortlots,Open; PlotNumeric"Open2",Open; ifMarketPosition-1/持空倉時 /止盈 iflowMyEntryPrice*1-TakeProfit*0.01 MyExitPriceMyEntryPrice*1-TakeProfit*0.01; BuyToCover0,MinMyExitPrice,Open; Return; /止損 ifhighMyEntryPrice*1+Stoploss*MinPoint MyExitPriceMyEntryPrice*1+Stoploss*MinPoint; BuyT

23、oCover0,MyExitPrice,Open; Return; /做多條件滿足,平空倉,開多倉 IfrisingTrue and HighfirstHigh Buylots,AvgEntryPrice; PlotNumeric"Open",Open; End 測試結果: 我們測試采用的是股指1小時線,采用的數(shù)據(jù)是近三年數(shù)據(jù)(因為中國股指期貨2010年上市),手續(xù)費的設置為交易總金額的3%(遠高于實盤中手續(xù)費(1%左右),可以抵消其他因素造成的偏差,保證結果的有效性),保證金率設置的是10%,參數(shù)為默認參數(shù),測試結果的表格如下: 優(yōu)化過程:我們將參數(shù)分別進行優(yōu)化, (這里

24、加上參數(shù)從多少到多少,步長為多少,給出最后最好的結果) 優(yōu)化后的交易測試結果為: 模擬交易: 這里補充上從什么時候到什么時候,用的是什么商品,盈利有多少 總結: 這個策略還適合什么商品,有什么優(yōu)勢和不足2.3均線型策略2.3.1MACD_MSN策略核心思想:MACD(Moving Average Convergence and Divergence在均線策略中是一種最常用的指標,它是一種運用短期(通常為12日)移動平均線與長期(通常為26日)移動平均線之間的聚合與分離狀況,對買進、賣出時機作出研判的技術指標。其計算公式為:n日EMA2/n+1×當天收盤指數(shù)+n-1/n+1×

25、昨天的n日EMADIF(12,26) 12日EMA-26日EMADEA (N)最近N日的DIF之和/NN日MACD (DIFF-DEA)×2本策略中根據(jù)對兩個不同周期的MACD的計算,并且通過短周期MACD和長周期MACD的穿越情況,判斷是做多還是做空。做多條件:前一個bar :短周期MACD長周期MACD 而當前bar:短周期MACD長周期MACD。做空條件:前一個bar :短周期MACD長周期MACD 而當前bar:短周期MACD長周期MACD。止盈條件:為了讓利潤充分增長,該策略未加入止盈。止損條件:持多倉時:如果當日開盤價低于前一日開盤價一定幅度,賣出平倉。代碼實現(xiàn):/ 簡稱

26、: MACD_MSN/ 名稱: / 類別: 公式應用/ 類型: 用戶應用/ 輸出:/ParamsNumeric lots2;Numericshortlength2;/短周期Numericlonglength13;/長周期Numeric TakeProfit2; /多少個點數(shù)時 止盈Numeric StopLoss10; /多少個點數(shù)時 止損VarsNumericSeriesshortMACD;NumericSerieslongMACD;NumericshortMACD1;NumericShortMACD2;NumericlongMACD1;NumericlongMACD2;Boolbuycon

27、ditionFalse;BoolsellconditionFalse;Numericp;NumericmyentryPrice0;NumericmyexitPrice0;NumericMinPoint0;BeginIfCurrentBar26,longlength /前26,longlength個bar不執(zhí)行myentryPriceQ_AvgPrice;/平均入場價pMinMove*PriceScale;/最小變動幅度shortMACDcalMACD326,12,shortlength;/計算短周期MACD/PlotNumeric"shortMACD",shortMACD;

28、longMACDcalMACD326,12,longlength;/計算長周期MACD/PlotNumeric"longMACD",longMACD;shortMACD1shortMACD0;/當前bar短周期MACDshortMACD2shortMACD1;/前一個bar短周期MACDlongMACD1longMACD0;/當前bar長周期MACDshortMACD2shortMACD1;/前一個bar短周期MACD/判斷做多條件是否滿足IfshortMACD1longMACD1 and shortMACD2longMACD2buyconditionTrue;sellco

29、nditionfalse;/判斷做空條件是否滿足IfshortMACD1longMACD1 and shortMACD2longMACD2sellconditionTrue;buyconditionfalse;/如果當前持多倉,當日開盤價低于止損點,止損IfOpen OpenD1 - StopLoss*P And Date! Date1 and MarketPosition1Selllots,Open;return;/做多條件滿足,做多IfbuyconditionBuylots,Open;/做空條件滿足,做空IfsellconditionSellShortlots,Open;End/ 編譯版本

30、GS2010.12.08/ 用戶版本2013/04/12 13:09/ 版權所有msnwzgl/ 更改聲明TradeBlazer Software保留對TradeBlazer平臺/每一版本的TrabeBlazer公式修改和重寫的權利/測試結果:優(yōu)化記錄:優(yōu)化后結果:總結:2.3.2MACD_MSN5策略實際上是MACD_MSN3 MACD_MSN5策略是MACD及其中間指標(DIFF和DEA)的另一種應用方式,它通過DIFF和DEA的正負以及二者穿越情況的判斷來確定市場行情適合做多還是做空。其核心思想為: 做多條件:DIFF,DEA均為正,DIFF向上突破DEA 做空條件:DIFF、DEA均為

31、負,DIFF向下跌破DEA 其他條件:DEA線與K線發(fā)生背離,為行情反轉信號;MACD由正變負為 做空信號,由負變正為做多信號。 其中DIFF、DEA、MACD的計算公式為: n日EMA2/n+1×當天收盤指數(shù)+n-1/n+1×昨天的n日EMA DIF(12,26) 12日EMA-26日EMA DEA (N)最近N日的DIF之和/N N日MACD (DIFF-DEA)×2 止損條件:當當前bar的開盤價低于上一個bar的開盤價超過一定幅度時,賣出平倉。 止盈條件:為了讓利潤充分增長,不加入止盈條件。實現(xiàn)代碼:/ 簡稱: MACD_MSN/ 名稱: / 類別: 公式

32、應用/ 類型: 用戶應用/ 輸出:/ParamsNumeric lots1;Numeric StopLoss10; /多少個點數(shù)時 止損Numeric shortlength12;Numericlonglength26;VarsNumericSeriesshortMACD;NumericSerieslongMACD;NumericSeriesDIFF;NumericSeriesDEA;BoolbuyconditionFalse;BoolsellconditionFalse;Numericp;NumericmyentryPrice0;NumericmyexitPrice0;NumericMinP

33、oint0;BeginIfCurrentBar26,longlengthmyentryPriceQ_AvgPrice;MinPointMinMove*PriceScale;DIFFcalDIFFshortlength,longlength; /計算DIFFDEAcalDEAshortlength,longlength; /計算DEApMinMove*PriceScale;IfDIFF0 AND DEA0 AND CrossOverDIFF,DEA /判斷做多條件是否滿足buyconditionTrue;sellconditionfalse;IfDIFF0 AND DEA0 AND CrossU

34、nderDIFF,DEA /判斷做空條件是否滿足sellconditionTrue;buyconditionfalse;IfOpen OpenD1*1-Stoploss/100 And Date! Date1 /止損SellShortlots,Open;return;Ifbuycondition/做多條件滿足,做多Buylots,Open;Ifsellcondition/做空條件滿足,做空SellShortlots,Open;End/ 編譯版本GS2010.12.08/ 用戶版本2013/04/12 13:09/ 版權所有msnwzgl/ 更改聲明TradeBlazer Software保留對

35、TradeBlazer平臺/每一版本的TrabeBlazer公式修改和重寫的權利/測試結果:2.4路徑型策略2.4.1DBox策略 DBox 策略是起源于美國一個專業(yè)舞蹈演員同時也是在股票市場上獲得很大成功的Nicolas Darvas上世紀50年代所使用的策略。這個策略本質上屬于一個突破跟蹤策略。它使用一種稱之為“box”的概念,當價格突破box的上下邊界時進行交易。一個box由“bottom”底部和“top”(頂部)組成,bottom和top的形成和改變如下: 1,如果價格在最近3個bar中都未創(chuàng)新高,那么高于后3個bar的最近的新高價就成為box的頂部。 2,如果價格在最近3個bar中都

36、未創(chuàng)新低,那么低于后3個bar的最近的新低價就成為box的底部。 3,如果當前bar的最高價高于box的頂部或者低于box的底部,那么box被打破,1、2過程重新開始。 做多條件:當前bar最高價高于box頂部(注意此時做多后,box被打破) 做空條件:當前bar最低價低于box底部 止盈條件: 持多倉時,如果最高價平均入場價*(1+止盈點) 賣出平倉 持空倉時,如果最低價平均入場價*(1-止盈點) 買入平倉 止損條件: 持多倉時,如果最低價平均入場價*1-止損點賣出平倉 持空倉時,如果最高價平均入場價*(1+止損點)買入平倉實現(xiàn)代碼:/ 簡稱: Dbox_sn/ 名稱: Dbox_sn/ 類

37、別: 公式應用/ 類型: 用戶應用/ 輸出:/Params:Numericlots1;NumericBoxlength3;Numericoffset1;Numerictakeprofit2;Numeric stoploss10;NumericbackLength5;numeric periodHigh10;/最高價平滑時回撤周期NumericperiodLow10;/最低價平滑時回撤周期VarsNumericSeriesDayHigh;NumericSeriesDaylow;NumericSeriestodayHigh;NumericSeriestodaylow;NumericSeriesbo

38、xTop;NumericSeriesboxBottom;Numerici_offset;BoolSeriesTopestablishedFalse;BoolSeriesBottomestablishedFalse;BoolSeriesBoxestablishedFalse;NumericSeriesTopcount0;NumericSeriesbottomCount0;NumericSeriesnewHigh0;NumericSeriesnewLow0;Numeric MyEntryPrice ;/入市價格Numeric MyExitPrice;/出市價格Numeric MinPoint;/止

39、損時最小變動單位BeginifCurrentBarperiodHigh,periodLowdayHighhigh;dayLowLow;elsedayHighAverageFCdayHigh,periodHigh; /對最高價格平滑處理dayLowAverageFCdayLow,periodLow;/對最低價平滑處理MyEntryPriceAvgEntryPrice;i_offset offset*MinMove*PriceScale; /交易時可接受的價格浮動范圍IfCurrentBarbacklengthtodayHighhigh;todaylowlow;IfCurrentBarbackle

40、ngthtodayHighhigh;todaylowLow;newHighHighesttodayHigh,backLength;/計算近來新高newLowLowesttodaylow,backlength;/計算近來新低PlotNumeric"newHigh",newHigh;PlotNumeric"newLow",newLow;IfhighnewHigh1 And Topestablished1FalseTopcountTopcount1+1;IfTopcount3/連續(xù)3個bar未創(chuàng)新高,頂部形成boxTopnewHigh;Topestablish

41、edTrue;PlotBool"Topestablished",True;IfhighnewHigh1 And Topestablished1False/創(chuàng)新高后,重新開始計算newHighhigh;Topcount0;IfLownewLow1 And Bottomestablished1FalsebottomCountbottomCount1+1;IfbottomCount3/連續(xù)3個bar未創(chuàng)新低,底部形成boxBottomnewLow1;BottomestablishedTrue;PlotBool"Bottomestablished",False;

42、IflownewLow1 And Bottomestablished1False/創(chuàng)新低后,重新開始計算newLowLow;bottomCount0;IfBottomestablished1True And Topestablished1True/頂部和底部形成后,box形成BoxestablishedTrue;IfBoxestablishedTrue ifMarketPosition0 /未持倉時IfHighboxTop1/做多條件滿足,做多Buylots,Open;return;IfLowboxBottom1/做空條件滿足,做空SellShortlots,Open;return;ifMar

43、ketPosition1/持多倉時/止盈ifDayHighMyEntryPrice*1+TakeProfit*0.01MyExitPriceMyEntryPrice*1+TakeProfit*0.01;sell0,MyExitPrice,Open;Return;/止損if Daylow MyEntryPrice-Stoploss * MinPointMyExitPrice MyEntryPrice-Stoploss * MinPoint;Sell0,MinMyExitPrice,Open;Return;IfLowboxBottom1/做空條件滿足,做空SellShortlots,Open;re

44、turn;ifMarketPosition-1/持空倉時/止盈ifdaylowMyEntryPrice*1-TakeProfit*0.01MyExitPriceMyEntryPrice*1-TakeProfit*0.01;BuyToCover0,MinMyExitPrice,Open;Return;/止損ifdayHighMyEntryPrice*1+Stoploss*MinPointMyExitPriceMyEntryPrice*1+Stoploss*MinPoint;BuyToCover0,MyExitPrice,Open;Return;IfHighboxTop1/做多條件滿足,做多Buy

45、lots,Open;return;IfHighboxTop1 Or LowboxBottom1 /box被打破BoxestablishedFalse;TopestablishedFalse;BottomestablishedFalse;End/ 編譯版本GS2010.12.08/ 用戶版本2013/05/09 12:51/ 版權所有l(wèi)itianyi/ 更改聲明TradeBlazer Software保留對TradeBlazer平臺/每一版本的TrabeBlazer公式修改和重寫的權利/測試結果:優(yōu)化結果:總結2.4.2Dual_Thrust策略 Dual_Thrust策略是開盤區(qū)間突破系統(tǒng)的延

46、伸,其中后者是指以今日開盤價加減一定比例的昨日振幅以確定做多和做空的上下軌,當日內突破上軌時(平空)做多,日內突破下軌時(平多)做空,當日收盤平倉出場。而Dual_Thrust 是在幅度Range的計算上引入了前N日的四個價位(N 日high,N日low,N日close,N日open),使得一定時期內的振幅相對穩(wěn)定。其中兩個振幅range的計算中,該策略中使用的是:Range(M周期最高high - M周期最低收盤, M周期最高收盤 - M周期最低low ),其中在sellRange和buyRange的計算中,M的取值不同。 另外,本策略開平倉條件判斷時最高價和最低價并不是真實的最高價和最低價

47、,而是將之前數(shù)據(jù)和當前bar數(shù)據(jù)進行平滑處理(移動平均)得到的,這樣可以消除噪點,使開平倉信號的判斷更為精確。 做多條件:當前bar最高價突破上軌。 做空條件:當前bar最低價跌破下軌。 止盈條件: 持多倉時,如果最高價平均入場價*(1+止盈點) 賣出平倉 持空倉時,如果最低價平均入場價*(1-止盈點) 買入平倉 止損條件: 持多倉時,如果最低價平均入場價*1-止損點賣出平倉 持空倉時,如果最高價平均入場價*(1+止損點)買入平倉實現(xiàn)代碼:/ 簡稱: DualThrust/ 名稱: DualThrust/ 類別: 公式應用/ 類型: 用戶應用/ 輸出:ParamsNumeric Kbuy0.5

48、;/ 可以接受的價格變化幅度,可以修改Numeric Ksell0.5; / 可以接受的價格變化幅度,可以修改,不必和Kbuy相同Numeric Mday10;/做空參考的周期數(shù)Numeric Nday10; /做多參考的周期數(shù)Numeric lots1;/交易手數(shù)Numeric offset0; Numeric TakeProfit2; /多少個點數(shù)時 止盈Numeric StopLoss10; /多少個點數(shù)時 止損Numeric beginTime900;/交易開始時間Numeric endTime1500;/交易截止時間numeric periodHigh10;/最高價平滑時回撤周期Nu

49、mericperiodLow10;/最低價平滑時回撤周期VarsNumeric BuyRange0;/做多的range Numeric SellRange0;/做空的rangeNumeric BuyTrig0;/當價格波動值達到該點時,觸發(fā)做多策略Numeric SellTrig0;/當價格波動值達到該點時,觸發(fā)做空策略Numeric BuyPostion0; /買入價格Numeric SellPostion0;/賣出價格Numeric i_offset;/可以接受的誤差范圍Numeric HH; /N日最高highNumeric LL; /N日最低lowNumeric HC; /N日最高cl

50、ose Numeric LC; /N日最低closeNumeric MyEntryPrice ;/入市價格Numeric MyExitPrice;/出市價格Numeric MinPoint;/止損時最小變動單位NumericSeries dayHigh;NumericSeriesdayLow;Begin/對最高價和最低價進行平滑處理,以便減小最大回撤ifCurrentBarperiodHigh,periodLowdayHighhigh;dayLowLow;elsedayHighAverageFCdayHigh,periodHigh;dayLowAverageFCdayLow,periodLow;MyEntryPriceAvgEntryPrice; i_offset offset*MinMove*PriceScale; /交易時可接受的價格浮動范圍 HHHighestHighD1,Mday;/M日最高價

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論