量化交易軟件策略——Kagi 制圖指標(biāo)

簡介
在 "點(diǎn)數(shù)圖指標(biāo)" 一文中介紹了創(chuàng)建 點(diǎn)數(shù)圖的編程方式。點(diǎn)數(shù)圖自 19 世紀(jì)起開始廣為人知。但這并不是唯一一種歷久彌新的繪圖方式。早期金融市場還有一種值得注意的繪圖方式就是Kagi 圖。赫茲量化將在本文中討論這種圖表。
證券交易所對(duì)于十九世紀(jì)的日本來說是一種陌生的金融機(jī)構(gòu),日本第一家證券交易所成立于 1878 年 5 月。也就是現(xiàn)在的 東京證券交易所。這件事對(duì)于 Kagi 圖的發(fā)明和發(fā)展起到重要作用。歐洲和美國是在 1994 年 Steve Nison 的 "Beyond Candlesticks:New Japanese Charting Techniques Revealed"(日本燭形圖技術(shù)新解) 一書出版后才開始知道 Kagi 圖的。
在日語中,“Kagi” 一詞表示在發(fā)明這種圖表的那個(gè)年代人們使用的一種 L 形鑰匙。同樣,這種圖還有另一個(gè)名稱,“鑰匙圖”。在 Steve Nison 的《日本燭形圖技術(shù)新解》一書中,您還會(huì)看到這種圖表的多個(gè)別名:價(jià)格范圍圖、鉤形圖、三角或鏈形排列圖。
這種圖有哪些特別之處?它的主要特點(diǎn)在于忽略了時(shí)間尺度,僅留下價(jià)格尺度(不同于日本的燭形圖、柱狀圖和線形圖)。這樣,圖表將細(xì)微的價(jià)格浮動(dòng)隱藏起來,僅顯示最明顯的價(jià)格浮動(dòng)。
圖中展示了一組較粗的陽線和較細(xì)的陰線,它們隨著市場形勢的變化相互交替。市場朝同一方向發(fā)展時(shí),線條會(huì)延伸到達(dá)新的價(jià)格范圍。但是,如果市場折回并達(dá)到預(yù)先設(shè)定的量,Kagi 線會(huì)在新一列中朝相反的方向繪制。這個(gè)預(yù)先設(shè)定的量是以點(diǎn)數(shù)(通常用于貨幣對(duì))或當(dāng)前價(jià)格的百分比數(shù)值(通常用于股票)來表示的。線條粗細(xì)隨距其最近的最高或最低值發(fā)生變化。

編輯切換為居中
1. 圖表示例
我們以 10 月 8 日到 10 月 11 日 EURUSD,H1 圖表的歷史數(shù)據(jù)為例。
圖 1 顯示的是一幅反向門檻為 15 點(diǎn)的標(biāo)準(zhǔn)圖像:

編輯切換為居中
圖 1 Kagi 圖,EURUSD H1
我們可以看到,價(jià)格從 17:00 開始下跌。下跌趨勢一直持續(xù)到 21:00。22:00 時(shí),價(jià)格從 1.3566 開始上升,最后以 1.3574 收盤。換句話說,價(jià)格覆蓋了 11 點(diǎn)。這不足以形成逆轉(zhuǎn),但也沒達(dá)到新的最低點(diǎn)。之后的兩個(gè)小時(shí),價(jià)格走勢平穩(wěn),最后在 01:00(10 月 9 日)看到一次強(qiáng)勢增長,并以 1.3591 點(diǎn)收盤,增幅達(dá) 25 點(diǎn)(1.3591-1.3566)。這意味著價(jià)格出現(xiàn)逆轉(zhuǎn)。
這一上升趨勢又持續(xù)了一個(gè)小時(shí)。價(jià)格達(dá)到 1.3599,加強(qiáng)了較粗的陽線。03:00 時(shí),價(jià)格急劇下降,以 1.3578 收盤,比之前的最高點(diǎn)低 21 點(diǎn)(1.3599-1.3578)。這足以發(fā)生逆轉(zhuǎn)。線條開始向下移動(dòng),但形式(粗陽線)沒有發(fā)生變化。
到 16:00 時(shí),價(jià)格下降并最終突破了距離最近的最低值,從粗陽線變?yōu)榧?xì)陰線。之前提到的最低值,即 1.3566,在這里成為突破價(jià)。價(jià)格繼續(xù)以陰線的形式移動(dòng),并在 10 月 10 日 14:00 變成陽線,突破了距離最近的最高點(diǎn),也就是 10 月 9 日 23:00 形成的 1.3524。這個(gè)小例子展示了 Kagi 圖的結(jié)構(gòu)。
2. Kagi 指標(biāo)制圖原則
為了使該指標(biāo)獨(dú)立于當(dāng)前時(shí)間表,決定單獨(dú)復(fù)制計(jì)劃用來形成指標(biāo)的時(shí)間表數(shù)據(jù),然后用得到的數(shù)據(jù)創(chuàng)建指標(biāo)。
這樣便可以在同一圖表上同時(shí)查看多個(gè)時(shí)間表,擴(kuò)大了 Kagi 圖的技術(shù)分析界限。指標(biāo)本身位于一個(gè)單獨(dú)的窗口中,但也可以在主圖上顯示數(shù)據(jù)。也就是說,指標(biāo)窗口中顯示了基本信息(標(biāo)準(zhǔn)樣式或修訂樣式)。已將指標(biāo)復(fù)制到主圖,并繪制出價(jià)格和時(shí)間標(biāo)記(取決于設(shè)置)。
如前所述,指標(biāo)繪制出標(biāo)準(zhǔn)版和修訂版圖表。上面介紹了標(biāo)準(zhǔn)版圖表。現(xiàn)在我們來看修訂版。
不知道這是不是一種新理念,但我沒聽說過這樣的版本。附加過濾器的理念就是它現(xiàn)在不僅會(huì)過濾反轉(zhuǎn)點(diǎn),還會(huì)過濾圖表的每一步動(dòng)作。也就是說價(jià)格應(yīng)移動(dòng)一定距離以形成新的最高或最低點(diǎn)(不與肩/腰混淆)。一般來說,無論價(jià)格走向如何,都應(yīng)首先移動(dòng)指定距離。之后再確定它是延續(xù)了之前的趨勢還是發(fā)生了反轉(zhuǎn)。
圖 2 顯示了這一原則的運(yùn)作原理。修訂后的圖表樣式顯示為藍(lán)色,標(biāo)準(zhǔn)樣式顯示為紅色。赫茲量化可以看到,修訂后的樣式對(duì)價(jià)格變動(dòng)的反應(yīng)較慢,會(huì)過濾多數(shù)小信號(hào)。

編輯切換為居中
圖 2 創(chuàng)建修訂版(藍(lán)線)和標(biāo)準(zhǔn)版(紅線) Kagi 圖
除 Kagi 圖外,指標(biāo)還在指標(biāo)窗口和主圖中提供其它元素。
根據(jù)設(shè)置,可在指標(biāo)窗口中設(shè)置這些標(biāo)記。這些標(biāo)記提供了反轉(zhuǎn)價(jià)格數(shù)據(jù)。也可以用價(jià)位實(shí)現(xiàn)同樣的功能,位于形成指標(biāo)所用的整個(gè)價(jià)格范圍內(nèi)或位于每個(gè)圖表反轉(zhuǎn)點(diǎn)上的各個(gè)價(jià)位(取決于設(shè)置)均勻分布在窗口中。可根據(jù)以下三個(gè)條件設(shè)置顏色:根據(jù)反轉(zhuǎn)類型(向上 - 向下)、線條類型(陰 - 陽)或無顏色變化。
主圖中提供了反轉(zhuǎn)價(jià)格標(biāo)記,包括臨時(shí)標(biāo)記。這些標(biāo)記(取決于設(shè)置)可能為同一顏色,或根據(jù)陰陽線的顏色改變顏色。
可利用通過全局變量相互交流的函數(shù)實(shí)現(xiàn)整個(gè)指標(biāo)代碼。
代碼可分為三個(gè)主要函數(shù)和十一個(gè)附加函數(shù)。基本作圖法的主要運(yùn)算任務(wù)和緩沖區(qū)填充數(shù)據(jù)以及附加的緩沖區(qū)數(shù)組都由指標(biāo)窗口中 Kagi 圖的函數(shù)承擔(dān)。另外兩個(gè)函數(shù)負(fù)責(zé)提供數(shù)據(jù):第一個(gè)負(fù)責(zé)復(fù)制時(shí)間數(shù)據(jù),另一個(gè)負(fù)責(zé)復(fù)制選定時(shí)間表中每個(gè)柱的價(jià)格數(shù)據(jù)。
其它輔助函數(shù)負(fù)責(zé)執(zhí)行所有作圖工作,包括刪除對(duì)象,卸載指標(biāo)連同刪除所有指標(biāo)對(duì)象,反轉(zhuǎn)參數(shù)計(jì)算,在主圖和指標(biāo)窗口中繪制標(biāo)記,創(chuàng)建“走勢線”類圖形對(duì)象,在主圖上繪制 Kagi,以及確定新柱的出現(xiàn)以開始形成指標(biāo)。
3. 指標(biāo)代碼與算法
下面我們仔細(xì)了解一下指標(biāo)代碼以及形成該代碼的算法。這個(gè)代碼非常大,新手程序員也許難以理解。通過全局變量相互交流的各個(gè)函數(shù)使這個(gè)代碼變得非?;靵y。本文將在這一部分分別講解每個(gè)函數(shù)以及部分代碼。首先,我會(huì)介紹指標(biāo)設(shè)置,然后再對(duì)復(fù)制初始函數(shù)的相關(guān)數(shù)據(jù)、反轉(zhuǎn)參數(shù)計(jì)算、Kagi 圖主函數(shù)的形成和計(jì)算以及其它輔助函數(shù)進(jìn)行說明。
3.1. 指標(biāo)輸入?yún)?shù)
代碼從在單獨(dú)的窗口中聲明指標(biāo)開始,同時(shí)聲明 12 個(gè)緩沖區(qū)以及 8 種指標(biāo)作圖法。首先,我們來看為什么選擇 8 種作圖法,包括兩個(gè) “柱狀圖” 和六個(gè) “線形圖”。每個(gè)“柱狀圖”都建立了自己的垂直線。其中一條線負(fù)責(zé)陰線,另一條負(fù)責(zé)陽線。
如果存在多條線,則情況會(huì)更為復(fù)雜,因?yàn)槊織l線都包含三個(gè)圖形結(jié)構(gòu)。這是因?yàn)橹灰诘谝粋€(gè)點(diǎn)附件畫出另外一個(gè)點(diǎn),就可以畫出一條線。也就是說,我們只需要旋轉(zhuǎn)兩個(gè) “線”型圖形結(jié)構(gòu)就可以繪制出相互毗鄰的兩條線。但是,如果我們需要讓這些線跳過一些必要的點(diǎn),就需要第三個(gè)圖形結(jié)構(gòu)隨前兩個(gè)一起旋轉(zhuǎn)。
圖 3 中對(duì)此做出了說明,您可以看到使用兩個(gè)“線”型圖形結(jié)構(gòu)的情況:

編輯切換為居中
圖 3 使用兩個(gè)和三個(gè)圖形“線”型結(jié)構(gòu)展示肩線與腰線示例
然后,創(chuàng)建設(shè)置菜單。這里列舉出五項(xiàng)(我們到輸入?yún)?shù)中查看這五項(xiàng))。
第一個(gè)輸入?yún)?shù)“周期”是形成該結(jié)構(gòu)的周期,隨后是 “period_to_redraw” - 圖表結(jié)構(gòu)更新周期,最后一個(gè)參數(shù)是 “start_data” - 時(shí)間結(jié)構(gòu)的起點(diǎn)。
這些參數(shù)之后是圖表結(jié)構(gòu)和其它標(biāo)簽參數(shù):
kagi_type – 用戶定義的圖表結(jié)構(gòu)類型,即標(biāo)準(zhǔn)型或修訂型;
price_type – 作圖使用的價(jià)格類型:收盤價(jià)、開盤價(jià)、最高價(jià)、最低價(jià);
type_doorstep – 使用的反轉(zhuǎn)類型:點(diǎn)和百分比;
doorstep – 反轉(zhuǎn)值(根據(jù)上述參數(shù)指定點(diǎn)數(shù)或百分比數(shù)值);
color_yin – 指標(biāo)窗口中的陰線顏色;
color_yang – 指標(biāo)窗口中的陽線顏色;
width_yin – 指標(biāo)窗口中的陰線寬度;
width_yang – 指標(biāo)窗口中的陽線寬度;
levels_on_off – 是否應(yīng)在指標(biāo)窗口中繪制價(jià)格水平;
levels_type – 指標(biāo)窗口中的價(jià)格水平類別。有兩個(gè)數(shù)值可供選擇:每次反轉(zhuǎn)時(shí)或在整個(gè)價(jià)格范圍內(nèi)均勻分布;
levels_number – 指標(biāo)窗口中的價(jià)格水平數(shù)目;
levels_change_color – 允許更改價(jià)格水平線顏色;選項(xiàng)包括高低反轉(zhuǎn)、陰陽線或無變化;
levels_first_color – 一個(gè)價(jià)格水平的第一種顏色;
levels_second_color – 一個(gè)價(jià)格水平的第二種顏色;
label_1 – 在指標(biāo)窗口中繪制圖表反轉(zhuǎn)價(jià)格標(biāo)簽;
label_1_number – 指標(biāo)窗口中顯示的標(biāo)簽數(shù)目;
label_1_color – 指標(biāo)窗口中價(jià)格標(biāo)簽的顏色;
label_2 – 在主圖中繪制價(jià)格標(biāo)簽;
label_2_color – 主圖上的標(biāo)簽顏色;
time_line_draw – 在主圖上繪制反轉(zhuǎn)時(shí)間線;
time_separate_windows – 繪制主圖中反轉(zhuǎn)時(shí)間線的延長線;
time_line_change_color – 根據(jù)陰陽線上的反轉(zhuǎn)標(biāo)簽更改時(shí)間線的顏色;
time_first_color – 主圖上時(shí)間線的第一種顏色;
time_second_color – 主圖上時(shí)間線的第二種顏色;
kagi_main_chart – 是否需要在主圖上繪制 Kagi;
color_yin_main – 主圖上的陰線顏色;
color_yang_main – 主圖上的陽線顏色;
width_yin_main – 主圖上的陰線寬度;
width_yang_main – 主圖上的陽線寬度;
magic_numb – 用于建立并刪除對(duì)象的幻數(shù)以及在指標(biāo)名稱中用于在一個(gè)圖表中打開多個(gè)指標(biāo)的幻數(shù)。
這些參數(shù)之后分別聲明了指標(biāo)緩沖區(qū),用于保存價(jià)格和時(shí)間數(shù)值的輔助緩沖區(qū),輔助變量(stop_data、bars_copied、bars_copied_time、copy_history、copy_time),用于將數(shù)據(jù)保存在圖表移動(dòng)發(fā)生變化的陰陽線上的數(shù)組,變化發(fā)生的時(shí)間和價(jià)格,以及中心價(jià)格(如果在柱上發(fā)生陰陽線替換)。最后,聲明一個(gè)最常用的全局變量,其中包含 “a” 圖表移動(dòng)變化次數(shù)數(shù)據(jù)。