国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Zigzag的K線趨勢拐點(diǎn)識別算法設(shè)計(jì)與實(shí)現(xiàn)

2018-01-18 15:45蔣慧敏
關(guān)鍵詞:拐點(diǎn)期貨

蔣慧敏

摘 要:使用Zigzag指標(biāo)預(yù)測期貨價(jià)格的走勢是構(gòu)造期貨程序化交易系統(tǒng)中K線特征趨勢算法交易模型的關(guān)鍵技術(shù)之一。針對期貨程序化交易系統(tǒng)中Zigzag指標(biāo)函數(shù)的實(shí)際開發(fā)需要,提出了一種基于Zigzag的K線趨勢中的高點(diǎn)、低點(diǎn)和拐點(diǎn)的識別算法。為了提高K線特征趨勢交易模型的收益率,借助該算法對特定的期貨時(shí)間序列進(jìn)行K線模式識別,并對其Zigzag的深度、偏差和后退等參數(shù)進(jìn)行優(yōu)化。實(shí)驗(yàn)結(jié)果表明:該算法識別精度高,穩(wěn)定性好,能很好地滿足期貨程序化交易系統(tǒng)的K線趨勢拐點(diǎn)快速識別的需要。

關(guān)鍵詞:拐點(diǎn);識別算法;Zigzag指標(biāo);K線;期貨

中圖分類號: TP319 文獻(xiàn)標(biāo)志碼:A

Design and Implementation of the K-line Trend Inflection Point Recognition Algorithm Based on Zigzag

JIANG Hui-min

(Department of Information Engineering,Hefei University of Technology,Xuanchen,Anhui 242000,China)

Abstract:Applying Zigzag index to predict the trend of futures prices is one of the concerns of building algorithm trading model for K-line trend features in future program trading system.According to the actual development of Zigzag index function in a futures program trading system, the recognition algorithm of the high, low and inflection points for K-line trend based on Zigzag is proposed.In order to improve the return rate on the K-line trend trading model, the above algorithm in specific K-line pattern recognition of futures time series is employed, and the deep, deviation and back parameters of Zigzag are optimized.The experimental results show that the algorithm with high identification accuracy and good stability can meet the needs of rapid recognition of K-line trend inflection point in the futures program trading system.

Key words:inflection;recognition algorithm;Zigzag index;K-line;futures

1 引 言

期貨程序化交易(program trading)是應(yīng)用計(jì)算機(jī)和網(wǎng)絡(luò)系統(tǒng),預(yù)先設(shè)置好交易模型,并在模型條件被觸發(fā)時(shí),由計(jì)算機(jī)瞬間完成組合交易指令、實(shí)現(xiàn)自動(dòng)下單的一種新興電子交易手段。期貨程序化交易的核心價(jià)值體現(xiàn)在支持投資者交易策略的算法交易(algorithmic trading)模型的快速構(gòu)建、測評和自動(dòng)化執(zhí)行[1-2]。而在高速大規(guī)模期貨時(shí)間數(shù)據(jù)流下,設(shè)計(jì)和實(shí)現(xiàn)期貨時(shí)間序列K線趨勢特征模式的快速識別算法,是構(gòu)建期貨價(jià)格趨勢技術(shù)分析算法交易模型的核心技術(shù)和難點(diǎn)之一。

目前,研究人員提出了不少有效的基于曲線圖模式的技術(shù)分析方法用于預(yù)測期貨價(jià)格的走勢。比如,head and shoulder、cup and handle等基于形狀的模式。此外,存在許多技術(shù)指標(biāo)(technical indictor)用于估計(jì)期貨價(jià)格的反轉(zhuǎn)點(diǎn),例如,Zigzag、Moving Average、Relative strength index(RSI)[6]。本文針對某期貨程序化交易平臺中Zigzag指標(biāo)函數(shù)開發(fā)的實(shí)際需求,提出了一種基于Zigzag的K線趨勢中的高點(diǎn)、低點(diǎn)和拐點(diǎn)的識別算法,然后應(yīng)用于該平臺系統(tǒng)中的Zigzag指標(biāo)函數(shù)。Zigzag[4]指標(biāo)函數(shù)主要用途是來標(biāo)識過去價(jià)格中的相對高低點(diǎn)(inflection point,拐點(diǎn)),并以這些點(diǎn)之間的連線來表示這段價(jià)格變動(dòng)的趨勢,如圖1所示。最后,使用Zigzag指標(biāo)函數(shù)對特定的期貨時(shí)間序列模式進(jìn)行K線模式識別,并對其Zigzag參數(shù)進(jìn)行優(yōu)化。

2 識別框架

期貨時(shí)間序列(time series)數(shù)據(jù)是期貨交易系統(tǒng)中按照時(shí)間順序觀察收集得到開盤價(jià)、最高價(jià)、收盤價(jià)、最低價(jià)等一系列價(jià)格數(shù)據(jù)。期貨時(shí)間序列的本質(zhì)包括:高維度和經(jīng)常更新,數(shù)值性,連續(xù)性。為了減少原始數(shù)據(jù)的維度(數(shù)據(jù)點(diǎn)的數(shù)量),文獻(xiàn)[7]使用了最簡單的收集樣品數(shù)據(jù),但是,這種方法會受抽樣率限制,如果抽樣率太低就會扭曲時(shí)間序列特征。文獻(xiàn)[8]提出了MSM(Multi-scaled Segment Mean)時(shí)間序列表述方法,并在此基礎(chǔ)上提出了一種新的多步過濾機(jī)制。

K線(K-line)[3]是根據(jù)期貨每天走勢所形成的四個(gè)價(jià)位(包括開盤價(jià),收盤價(jià),最高價(jià),最低價(jià))繪制而成。通過K線圖,我們即可以看到期貨價(jià)格的基本趨勢,因此,K線圖在各種技術(shù)分析手段中被廣泛運(yùn)用。根據(jù)K線的計(jì)算周期,可以分為分K線,日線,月K線以及年K線等。圖2給出了一種基于K線圖表示的期貨時(shí)間序列拐點(diǎn)識別一般框架示意圖。本文是針對某期貨程序化交易系統(tǒng)中Zigzag指標(biāo)函數(shù)的實(shí)際開發(fā)需要,設(shè)計(jì)和實(shí)現(xiàn)了一種基于Zigzag的K線趨勢中的高點(diǎn)、低點(diǎn)和拐點(diǎn)的識別算法;然后通過在大量歷史期貨數(shù)據(jù)集上的實(shí)驗(yàn)對比,對算法參數(shù)優(yōu)化,從而都能夠在某種程度上提升重要點(diǎn)識別的準(zhǔn)確率,尤其是對于相對較大規(guī)模的數(shù)據(jù)集;最后應(yīng)用于期貨程序化交易系統(tǒng)中的Zigzag函數(shù),并使用Zigzag函數(shù)對特定的期貨時(shí)間序列趨勢K線模式進(jìn)行模式識別,為期貨市場投資者預(yù)測反轉(zhuǎn)點(diǎn)等決策提供技術(shù)支持。endprint

3 Zigzag識別算法設(shè)計(jì)

期貨程序化交易系統(tǒng)中的K線圖是以每個(gè)分析周期中期貨合約成交的開盤價(jià)、最高價(jià)、最低價(jià)和收盤價(jià)格等數(shù)據(jù)繪制而成,而Zigzag指標(biāo)主要用途是在K線圖中標(biāo)識所選定的期貨合約歷史成交價(jià)格中的相對高低點(diǎn),并以這些點(diǎn)之間的連線來表示該期貨合約過去價(jià)格變動(dòng)的趨勢。

感知重要點(diǎn)PIP(Perceptually Important Points)識別過程是在文獻(xiàn)[9]中首先提出來的,常用在金融應(yīng)用中完成技術(shù)模式的匹配。文獻(xiàn)[10]提出了基于PIP的ZIP(Zigzag based perceptually Important Points)識別重要點(diǎn)方法和ZM-Tree(ZIP-based Multi-way search Tree)索引結(jié)構(gòu)。然而在實(shí)際的基于Zigzag的K線趨勢中的高點(diǎn)、低點(diǎn)和拐點(diǎn)的識別算法中,一方面,要求參與計(jì)算的K線數(shù)據(jù)值是根據(jù)趨勢拐點(diǎn)來動(dòng)態(tài)確定是使用K線的最高價(jià)還是最低價(jià);另一方面,識別的趨勢拐點(diǎn)往往是與參與計(jì)算的K線深度、偏差、后退等參數(shù)有關(guān),甚至還要借助交易策略設(shè)計(jì)人員的經(jīng)驗(yàn)。已有的文獻(xiàn)中算法顯然已不能滿足實(shí)際要求,也不能滿足實(shí)際中期貨程序化交易系統(tǒng)的交易性能優(yōu)化,從而需要我們設(shè)計(jì)新的算法。

1.Zigzag指標(biāo)識別參數(shù)

使用Zigzag指標(biāo)在識別K線特征趨勢的高低點(diǎn)過程中,設(shè)置了以下3個(gè)參數(shù)(類型為整型):深度、偏差、后退,并分別記作Depth、Deviation 、Backstep。其中:

(1)Depth是設(shè)置K線圖中的高低點(diǎn)是相對過去多少個(gè)K線(Bars),缺省值是12。

(2)Deviation是設(shè)置重新計(jì)算高低點(diǎn)時(shí),同前一高低點(diǎn)的相對點(diǎn)差,缺省值是5。也就是說,如果當(dāng)前高點(diǎn)的值大于前一個(gè)高點(diǎn)和Deviation 之和,或者當(dāng)前低點(diǎn)值小于后一個(gè)低點(diǎn)和Deviation之差的情況下,則會對之前計(jì)算過的Backstep個(gè)K線的高低點(diǎn)進(jìn)行重新計(jì)算。

(3)Backstep是設(shè)置回退計(jì)算的K線個(gè)數(shù),缺省值是3。

2.Zigzag指標(biāo)識別算法

在啟動(dòng)Zigzag識別算法之前,要先選擇好準(zhǔn)備計(jì)算的期貨合約、分析周期、分析范圍,以及識別參數(shù)。Zigzag識別算法的具體步驟如下:

步驟1 對計(jì)算位置等進(jìn)行初期化。

步驟1.1 判斷是否是第一次進(jìn)行高低點(diǎn)計(jì)算,如果是,則設(shè)定計(jì)算位置為除去Depth個(gè)K線最初的部分。

步驟1.2 如果之前已經(jīng)計(jì)算過,找到最近已知的三個(gè)拐點(diǎn)(高點(diǎn)或低點(diǎn)),將計(jì)算位置設(shè)置為倒數(shù)第三個(gè)拐點(diǎn)之后,重新計(jì)算最后的拐點(diǎn)。

步驟 2 從步驟1已經(jīng)設(shè)置好的計(jì)算位置開始,將對用于存儲高低點(diǎn)的變量進(jìn)行初始化,準(zhǔn)備計(jì)算高低點(diǎn)。

步驟2.1 計(jì)算Depth區(qū)間內(nèi)的低點(diǎn),如果該低點(diǎn)是當(dāng)前低點(diǎn),則進(jìn)行步驟2.2的計(jì)算,并將其記錄成一個(gè)低點(diǎn)。

步驟2.2 如果當(dāng)前低點(diǎn)比上一個(gè)低點(diǎn)值小于相對點(diǎn)差Deviation,就不進(jìn)行回歸處理;否則找到了一個(gè)新的低點(diǎn),將之前Backstep個(gè)K線的記錄中,高于當(dāng)前低點(diǎn)的值清空。

步驟2.3 高點(diǎn)的計(jì)算如同步驟2.1和步驟2.2。

步驟3 從步驟1已經(jīng)設(shè)置好的計(jì)算位置開始,定義指標(biāo)高點(diǎn)和低點(diǎn)。

步驟3.1 如果開始位置為高點(diǎn),則接下來尋找低點(diǎn),在找到低點(diǎn)之后,將下一個(gè)尋找目標(biāo)定義為高點(diǎn);如果開始位置為低點(diǎn),則接下來尋找高點(diǎn),在找到高點(diǎn)之后,將下一個(gè)尋找目標(biāo)定義為低點(diǎn)。

步驟3.1 如果開始位置為低點(diǎn),則與步驟3.1反之。

假設(shè)分析區(qū)間的K線個(gè)數(shù)為N,該Zigzag識別算法復(fù)雜度為O(N)。另外,Zigzag識別算法的深度、偏差、后退3個(gè)參數(shù)值的設(shè)置對算法的性能也有影響。

4 算法測試與參數(shù)優(yōu)化

為了驗(yàn)證所提算法的有效性,我們開發(fā)了一個(gè)可繪制K線圖以及Zigzag識別高低點(diǎn)的測試平臺,如圖3所示。該平臺是在Windows 7 系統(tǒng)上用Microsoft Visual C++ 2010開發(fā)實(shí)現(xiàn)的[5]。實(shí)驗(yàn)時(shí)用到了使用程序化交易平臺收集到的各個(gè)分析周期K線歷史行情數(shù)據(jù)供測試和繪制K線圖。其中,歷史行情數(shù)據(jù)使用Oracle 11g存儲,期貨時(shí)間序列使用UTP協(xié)議仿真發(fā)送。

借助該平臺可幫助我們可視化地觀察不同參數(shù)的拐點(diǎn)識別情況??紤]到設(shè)置不同的參數(shù)值,會得到K線特征趨勢交易的不同拐點(diǎn)。如何設(shè)置好上述3個(gè)參數(shù)值,將有助于提高K線特征趨勢交易模型的收益率和改善算法的開銷。傳統(tǒng)上是根據(jù)經(jīng)驗(yàn)設(shè)置上述3個(gè)參數(shù)值,或通過手動(dòng)方式改變這3個(gè)參數(shù)的值來不斷測試K線高低點(diǎn)識別的效果,進(jìn)而仿真得到合適的參數(shù)值。本文編程實(shí)現(xiàn)了3個(gè)參數(shù)自動(dòng)優(yōu)化。例如,以大連商品交易所的豆一1511合約為例測試如下:分析周期設(shè)置為1日線,開始日期為2015-01-01,結(jié)束日期為2015-12-01,3個(gè)參數(shù)使用缺省值。通過該平臺計(jì)算可等到拐點(diǎn)數(shù)是6,高點(diǎn)數(shù)是5,低點(diǎn)是8。假定K線特征趨勢交易的測試策略:在開倉和平倉傭金費(fèi)率是萬分之五,下單手?jǐn)?shù)為1手的情況下,交易方式是若拐點(diǎn)是低點(diǎn),賣出平倉,買入開倉;若拐點(diǎn)是高點(diǎn),買入平倉,賣出開倉,且優(yōu)化目標(biāo)是收益最大化。

若使用缺省參數(shù),使用該平臺仿真交易后凈盈利為18033.2元。若使用下面優(yōu)化的參數(shù):深度是5,偏差是2,后退是3,在計(jì)算拐點(diǎn)后,再使用應(yīng)用測試,如圖4所示。

不難發(fā)現(xiàn),此時(shí)拐點(diǎn)數(shù)是23,仿真交易后凈盈利為147292元,比使用缺省參數(shù)的收益率大大提高。在實(shí)際使用過程中,對不同的開倉合約和分析周期進(jìn)行自動(dòng)優(yōu)化,會得到不同的優(yōu)化參數(shù)?;赯igzag指標(biāo)的K線特征趨勢交易模型在正式加載時(shí),要先根據(jù)具體情況采用本系統(tǒng)生成優(yōu)化的參數(shù),然后作為加載交易模型的缺省參數(shù)值。endprint

5 結(jié)束語

針對期貨程序化交易系統(tǒng)中Zigzag指標(biāo)函數(shù)的實(shí)際開發(fā)需要,設(shè)計(jì)和實(shí)現(xiàn)了一種基于Zigzag的K線趨勢中的高點(diǎn)、低點(diǎn)和拐點(diǎn)的識別算法。為了提高K線特征趨勢交易模型的收益率,借助該算法對特定的期貨時(shí)間序列進(jìn)行K線模式識別,并對其Zigzag的深度、偏差和后退等參數(shù)進(jìn)行優(yōu)化。實(shí)驗(yàn)結(jié)果表明了該算法識別精度高,穩(wěn)定性好,能很好地滿足期貨程序化交易系統(tǒng)的K線趨勢拐點(diǎn)快速識別的需要。本文討論的Zigzag指標(biāo)函數(shù)現(xiàn)已經(jīng)運(yùn)用到了期貨程序化交易軟件的實(shí)際交易中。在后續(xù)的工作中,還需要對該算法使用更多的歷史數(shù)據(jù)和實(shí)時(shí)數(shù)據(jù)進(jìn)行聯(lián)合測試,并進(jìn)一步優(yōu)化其計(jì)算性能[11-12]。

參考文獻(xiàn)

[1] TRELEAVEN P, GALAS M, LALCHAND V.Algorithmic trading review[J].Communications of the ACM, 2013, 56(11):76-85.

[2] NUTI G, MIRGHAEMI M, TRELEAVEN P, et al.Algorithmic trading[J].IEEE Computer, 2011, 44(11):61-69.

[3] 范曉平,方陽.VC++.NET圖形編程——繪K線圖和條形圖[J].電腦編程技巧與維護(hù),2009,(5):5-13.

[4] PHETKING C, SAP M N M, SELAMAT A.Identifying zigzag based perceptually important points for indexing financial time series[A].Proceedings of the 2009 8th IEEE International Conference on Cognitive Informatics (ICCI 2009)[C].New York, NY, USA: IEEE Computer Society Press, 2009.295-301.

[5] 三揚(yáng)科技.Visual C++開發(fā)入行真功夫[M].北京:電子工業(yè)出版社, 2009.

[6] 張丹.基于模糊K線的金融時(shí)間序列反轉(zhuǎn)模式挖掘研究[D].長沙:湖南大學(xué),2012.

[7] ASTROM K J.On the choice of sampling rates in parametric identification of time series[J].Information Sciences,1969, 1 (3):273-278.

[8] LIAN X, CHEN L, YU J X, et al.Similarity match over high speed time-series streams[A].Proceedings of the 23rd IEEE International Conference on Data Engineering[C].Istanbul:ICDE,2007.1086-1095.

[9] CHUNG F L, FU T C, LUK R, et al.Stock time series visualization based on data point importance[J].Engineering Applications of Artificial Intelligence.2008,21:1217-1232.

[10] CHAWALSAK P, ALI S, AMJAD R, et al.Index financial time series based on zigzag-perceptually important points[J].Journal of Computer Science.2010,6 (12): 1389-1395.

[11] SHI L, KANG C.A stochastic dominance test for the efficiency of program trading algorithm[J].RISTI-Revista Iberica de Sistemas e Tecnologias de Informacao, 2016, 2016(E9):119-132.

[12] 葉笑天.期貨高頻交易系統(tǒng)設(shè)計(jì)的研究與改進(jìn)[D].上海:上海交通大學(xué),2014.endprint

猜你喜歡
拐點(diǎn)期貨
拐點(diǎn)
《廉潔拐點(diǎn)》
人口流動(dòng)是否已到“拐點(diǎn)”
房貸新政能否鍛造樓市拐點(diǎn)
丰顺县| 炎陵县| 隆安县| 阳西县| 滕州市| 班玛县| 汝阳县| 平谷区| 东兴市| 甘孜| 闽侯县| 吴川市| 谢通门县| 浙江省| 泸水县| 东乡族自治县| 霞浦县| 建始县| 保康县| 钟山县| 枣阳市| 洪湖市| 苏尼特左旗| 东方市| 温州市| 沙湾县| 泸水县| 成武县| 林口县| 新竹市| 定南县| 屯留县| 河源市| 邮箱| 信丰县| 旬邑县| 侯马市| 双城市| 句容市| 双辽市| 嘉定区|