量化軟件下載:赫茲量化中旗形形態(tài)
用于搜索水平形態(tài)和三角形的通用指標(biāo)
為了創(chuàng)建指標(biāo),我們將使用 iUniZigZagSW 指標(biāo),它來自通用的之字轉(zhuǎn)向指標(biāo)這篇文章。還需要以下另外的文件: CSorceData.mqh, CZZDirection.mqh 和 CZZDraw.mqh。這些文件以文件可以從通用之字轉(zhuǎn)向指標(biāo)文章的附件中下載。下載文檔,再解壓并把 MQL5 文件夾復(fù)制到終端數(shù)據(jù)文件夾中,在復(fù)制之后, ZigZag 文件夾將會出現(xiàn)在 MQL5/Indicators 中,包含了幾個文件 (包括 iUniZigZagSW.mq5), 還有另一個 ZigZag 文件夾,CSorceData.mqh, CZZDirection.mqh 和 CZZDraw.mqh 文件將出現(xiàn)在 MQL5/Includes 文件夾中。在復(fù)制文件之后,重新啟動終端來編譯指標(biāo)或者在 MetaEditor 中逐個編譯它們。在終端的圖表中運(yùn)行 iUniZigZagSW 指標(biāo)已確保它能正常工作。
在沃爾夫波形文章中,在創(chuàng)建指標(biāo)的中間步驟中保存了iWolfeWaves_Step_1.mq5 文件,它實(shí)現(xiàn)了使用 iCustom() 函數(shù)訪問 iUniZigZagSW 指標(biāo),另外,在它內(nèi)部還有一個數(shù)組保存了所有之字轉(zhuǎn)向的頂部和底部。下載‘沃爾夫波形’文章的附件, 把它解壓縮, 復(fù)制iWolfeWaves_Step_1. 到 MQL5/Indicators, 把它重命名為 "iHorizontalFormation" 并在 MetaEditor 中打開它,所有使用指標(biāo)來偵測水平形態(tài)的工作都將在這個文件中進(jìn)行??赡苄枰谶@個文件中修改 iUniZigZagSW 指標(biāo)的路徑,為了檢查這一點(diǎn),要編譯指標(biāo)并嘗試在圖表上運(yùn)行它。如果出現(xiàn)了 "載入指標(biāo)出錯" 的消息窗口, 就要在 OnInit() 中找到對 iCustom() 的調(diào)用, 并且把指標(biāo)名稱從"iUniZigZagSW"改為"ZigZags\\iUniZigZagSW"。在這樣修改之后,再次編譯指標(biāo),并確保它可以在圖表上正確運(yùn)行。在這個階段,指標(biāo)不會畫出任何東西。
在這里討論的整個搜索形態(tài)的過程可以分為幾個獨(dú)立任務(wù):
確定在形成形態(tài)之前的價格變化的數(shù)值,
確定形態(tài)的形狀,
確定形態(tài)的斜度,
形態(tài)生成結(jié)束: 在形態(tài)形成之后或者等到突破某一水平。
確定目標(biāo)。
每個任務(wù)(除了第一個)都將提供集中方案選項,這將有助于我們創(chuàng)建一個通用指標(biāo)來識別所有這三種形態(tài)。我們將能夠在指標(biāo)參數(shù)窗口中使用枚舉的下拉列表在選項中作切換,
選擇形狀(形態(tài)類型)的枚舉:
enum EPatternType{ ? PatternTapered, ? PatternRectangular, ? PatternExpanding };
屬性窗口中對應(yīng)的變量:
input EPatternType ? ? ? ? Pattern ? ? ? ?= ?PatternRectangular;
這個參數(shù)可以用來選擇形態(tài)的形狀: PatternTapered — 收斂三角形, PatternRectangular - 長方形, PatternExpanding - 擴(kuò)張三角形.
用于選擇形態(tài)傾斜方向的枚舉:
enum EInclineType{ ? InclineAlong, ? InclineHorizontally, ? InclineAgainst };
屬性窗口中對應(yīng)的變量:
input EInclineType ? ? ? ? Incline ? ? ? ?= ?InclineHorizontally;
這個參數(shù)可以選擇形態(tài)的傾斜方向: InclineAlong — 在期望的方向上繼續(xù)延伸 (對于買入就是上漲,對于賣出就是下跌), InclineHorizontally — 沒有傾斜, InclineAgainst — 于期望的方向上相反。
用于選擇形態(tài)結(jié)束方法的枚舉:
enum EEndType{ ? Immediately, ? OneLastVertex, ? TwoLastVertices };
屬性窗口中對應(yīng)的變量:
input EEndType ? ? ? ? ? ? CompletionType = ?Immediately;
可以使用以下的選項: 在形態(tài)完成后立即, OneLastVertex — 在突破了形態(tài)最近的頂部水平后, TwoLastVertices — 在突破了形態(tài)中由兩個頂部構(gòu)成的水平之后.
用于選擇目標(biāo)計算選項的枚舉:
enum ETargetType{ ? FromVertexToVertex, ? OneVertex, ? TwoVertices };
屬性窗口中對應(yīng)的變量:
input ETargetType ? ? ? ? ?Target ? ? ? ? = ?OneVertex;
可以使用以下的選項: FromVertexToVertex (圖 11), OneVertex (圖 10), TwoVertices, 使用形態(tài)中的兩個初始底部 (參見圖 14).

編輯
圖 14. 三頂?shù)男螒B(tài)。目標(biāo)確定選項是 TwoVertices, 形態(tài)完成方法是 OneLastVertex.
當(dāng)形態(tài)完成方法設(shè)為 Immediately 的時候, Target 參數(shù)就是無效的,因?yàn)橹荒苁褂?FromVertexToVertex 。對于另外兩種形態(tài)完成選項 (OneLastVertex 和 TwoLastVertices), 所有三種 CompletionType 選項的不同組合都是可能的。請注意下面的特性: 如果選擇了 OneVertex 或者 TwoVertices 選項來確定目標(biāo), 一個或者兩個第一底部(圖14中的點(diǎn)2, 或者點(diǎn)2和點(diǎn)4)來用于確定目標(biāo), 而突破水平是根據(jù)最近一個或者兩個頂部來確定的 (圖14中的點(diǎn)5或者點(diǎn)3和點(diǎn)5). 如果使用了雙頂?shù)男螒B(tài),將使用點(diǎn)3或者點(diǎn)1和點(diǎn)3。
為了解決任務(wù)1, 我們需要一個參數(shù)來確定形態(tài)之前價格變化的大小: