量化交易軟件:交易中不同類型移動(dòng)平均線的比較
移動(dòng)平均線的類型
本節(jié)包含一些簡(jiǎn)述和公式來(lái)計(jì)算有關(guān)的移動(dòng)平均線。
移動(dòng)平均線技術(shù)指標(biāo)

移動(dòng)平均線 是最廣泛的技術(shù)指標(biāo)之一。它描述了品種在給定時(shí)間周期的價(jià)格平均值。MA 指標(biāo)存在各種的變體:
簡(jiǎn)單移動(dòng)平均線 (SMA);
指數(shù)移動(dòng)平均線 (EMA);
平滑移動(dòng)平均線 (SMMA);
線性加權(quán)移動(dòng)平均線 (LWMA)。
以下, 赫茲量化軟件給出移動(dòng)平均指標(biāo)的每個(gè)變體的計(jì)算公式:
移動(dòng)平均指標(biāo)的變體
計(jì)算公式
注釋
簡(jiǎn)單移動(dòng)平均線 (SMA)
n 是周期單元數(shù) (例如, 如果在 M15 時(shí)間幀的圖表中 n=6, 指標(biāo)計(jì)算先前的 1.5 小時(shí))PRICE 是當(dāng)前價(jià)格值, 可以在指標(biāo)設(shè)置中選擇以下變體: 最高價(jià), 最低價(jià), 開(kāi)盤價(jià), 收盤價(jià), 中間價(jià)((最高價(jià)+最低價(jià))/ 2), 典型價(jià) ((最高價(jià)+最低價(jià)+收盤價(jià))/3) , 加權(quán)收盤價(jià) ((最高價(jià)+最低價(jià)+收盤價(jià)+收盤價(jià))/4), 或前一個(gè)指標(biāo)的數(shù)據(jù)
指數(shù)移動(dòng)平均線 (EMA)
EMA(i-1) 是以前的數(shù)值F 是平滑因子 (所用價(jià)格的份額)。系數(shù) F 從 0 到 1 的范圍內(nèi)隨機(jī)選擇, 例如, F=2/(n+1), 其中 n - 是周期單元數(shù)。PRICE ?是當(dāng)前的價(jià)格數(shù)值
平滑移動(dòng)平均線
SMMA(i-1) 是以前的數(shù)值n 是周期單元數(shù)PRICE 是當(dāng)前的價(jià)格數(shù)值
線性加權(quán)移動(dòng)平均線
PRICE 是當(dāng)前的價(jià)格數(shù)值n 是周期單元數(shù)
n 是周期單元數(shù) (例如, 如果在 M15 時(shí)間幀的圖表中 n=6, 指標(biāo)計(jì)算先前的 1.5 小時(shí))
PRICE 是當(dāng)前價(jià)格值, 可以在指標(biāo)設(shè)置中選擇以下變體: 最高價(jià), 最低價(jià), 開(kāi)盤價(jià), 收盤價(jià), 中間價(jià)((最高價(jià)+最低價(jià))/ 2), 典型價(jià) ((最高價(jià)+最低價(jià)+收盤價(jià))/3) , 加權(quán)收盤價(jià) ((最高價(jià)+最低價(jià)+收盤價(jià)+收盤價(jià))/4), 或前一個(gè)指標(biāo)的數(shù)據(jù)
指數(shù)移動(dòng)平均線 (EMA)a
EMA(i-1) 是以前的數(shù)值
F 是平滑因子 (所用價(jià)格的份額)。系數(shù) F 從 0 到 1 的范圍內(nèi)隨機(jī)選擇, 例如, F=2/(n+1), 其中 n - 是周期單元數(shù)。
PRICE ?是當(dāng)前的價(jià)格數(shù)值
平滑移動(dòng)平均線a
SMMA(i-1) 是以前的數(shù)值
n 是周期單元數(shù)
PRICE 是當(dāng)前的價(jià)格數(shù)值
線性加權(quán)移動(dòng)平均線a
PRICE 是當(dāng)前的價(jià)格數(shù)值
n 是周期單元數(shù)
赫茲量化軟件來(lái)研究?jī)r(jià)格圖表上顯示的不同移動(dòng)平均指標(biāo)變體。圖例 1 展示的是按收盤價(jià)計(jì)算, 周期為 12 的移動(dòng)平均線指標(biāo)的變體。

編輯切換為居中
圖例 1. 移動(dòng)平均指標(biāo)的變體
如圖所示, 簡(jiǎn)單移動(dòng)平均線在橫盤時(shí)稍微波動(dòng), 這可能會(huì)產(chǎn)生假的交易信號(hào)。平滑移動(dòng)平均線, 形如其名, 它看起來(lái)更平滑。指數(shù)移動(dòng)平均線和線性加權(quán)移動(dòng)平均線在橫盤時(shí)的行為有點(diǎn)類似。在趨勢(shì)行情期間, 線性加權(quán)移動(dòng)平均線相較其余線更接近價(jià)格, 與 SMMA 和 EMA 相反, 它不依賴以前的數(shù)值。
基于指數(shù)均線 (EMA) 的技術(shù)指標(biāo)
指數(shù)移動(dòng)平均線 (EMA) 是其它一些技術(shù)指標(biāo)的基礎(chǔ)。
指標(biāo)
描述
計(jì)算公式
計(jì)算公式的說(shuō)明
自適應(yīng)移動(dòng)平均線 (AMA)
MA 對(duì)噪音敏感度低。如果與其余的均線相比, 該指標(biāo)在判斷趨勢(shì)反轉(zhuǎn)和變化時(shí)滯后最小。在價(jià)格尖刺時(shí), 它不會(huì)產(chǎn)生強(qiáng)烈的波動(dòng), 因此不會(huì)被稱為假的交易信號(hào)。
AMA(i-1) — 是指標(biāo)的以前數(shù)值Price(i) — 是當(dāng)前的價(jià)格數(shù)值SSC(i) — ?平滑常量
雙重指數(shù)移動(dòng)平均線
它用來(lái)平滑價(jià)格或其它指標(biāo)的數(shù)值。 主要優(yōu)點(diǎn)在于當(dāng)價(jià)格以之字形方式移動(dòng)時(shí), 沒(méi)有假信號(hào)。與通常的 EMA 相比, 它可在強(qiáng)趨勢(shì)期間維持位置, 并降低信號(hào)的滯后。
EMA(Price, n, i) — Price 序列周期為 n 的 EMA 當(dāng)前值。EMA2(Price, n, i) = EMA(EMA(Price, n, i), n, i) — Price 序列周期為 n 的雙重 EMA。
三重指數(shù)移動(dòng)平均線
單重、雙重和三重指數(shù) MA 的合成??倻笠h(yuǎn)遠(yuǎn)低于每一個(gè)單獨(dú)的 MA。該指標(biāo)經(jīng)常替代傳統(tǒng)移動(dòng)平均線, 應(yīng)用在平滑價(jià)格圖表以及其它指標(biāo)的數(shù)值。
EMA(Price, n, i) — Price 序列周期為 n 的 EMA 當(dāng)前值。EMA2(Price, n, i) = EMA(EMA(Price, n, i), n, i) — Price 序列周期為 n 的雙重 EMA。EMA3(Price, n, i)=EMA(EMA2(Price, n, i), n, i) — Price 序列周期為 n 的三重 EMA。
分形自適應(yīng)移動(dòng)平均線
此處的平滑因子是在當(dāng)前價(jià)格序列的分形維數(shù)基礎(chǔ)上計(jì)算得來(lái)的。指標(biāo)優(yōu)點(diǎn)是跟隨強(qiáng)趨勢(shì), 并在整理期間, 大幅放緩。
Price(i) — 是當(dāng)前的價(jià)格數(shù)值A(chǔ)(i) — 當(dāng)前的指數(shù)平滑因子
可變指數(shù)動(dòng)態(tài)平均線
這是一個(gè)平均周期依據(jù)行情波動(dòng)動(dòng)態(tài)變化的 EMA。 行情波動(dòng)由錢德動(dòng)量振蕩 (CMO) 測(cè)量。它衡量給定周期 (CMO 周期) 的正、負(fù)增量總和之間的比率。CMO 值是 EMA 平滑因子的系數(shù)。因此, 指標(biāo)有兩個(gè)設(shè)置參數(shù): CMO 振蕩器周期和 EMA 平滑周期。
F=2/(n+1) 是平滑因子, n 是周期單元數(shù)ABS 是計(jì)算變量絕對(duì)值的數(shù)學(xué)函數(shù)VIDYA(i-1) — 是指標(biāo)的以前數(shù)值CMO(i) — 是 CMO 振蕩器的數(shù)組值
尼克·洛普克移動(dòng)平均線
該指標(biāo)并非標(biāo)準(zhǔn) 赫茲量化軟件發(fā)布包中的一部分。其主要優(yōu)點(diǎn)是在橫盤時(shí)幾乎沒(méi)有波動(dòng); 它嚴(yán)格跟蹤趨勢(shì)。
NRMA(i-1) — 是指標(biāo)的以前數(shù)值Price(i) — 是當(dāng)前的價(jià)格數(shù)值F=2/(n+1) 是平滑因子, n 是周期單元數(shù)NRratio 是平滑因子的比率
AMA(i-1) — 是指標(biāo)的以前數(shù)值
Price(i) — 是當(dāng)前的價(jià)格數(shù)值
SSC(i) — ?平滑常量
雙重指數(shù)移動(dòng)平均線它用來(lái)平滑價(jià)格或其它指標(biāo)的數(shù)值。 主要優(yōu)點(diǎn)在于當(dāng)價(jià)格以之字形方式移動(dòng)時(shí), 沒(méi)有假信號(hào)。與通常的 EMA 相比, 它可在強(qiáng)趨勢(shì)期間維持位置, 并降低信號(hào)的滯后。a
EMA(Price, n, i) — Price 序列周期為 n 的 EMA 當(dāng)前值。
EMA2(Price, n, i) = EMA(EMA(Price, n, i), n, i) — Price 序列周期為 n 的雙重 EMA。
三重指數(shù)移動(dòng)平均線單重、雙重和三重指數(shù) MA 的合成??倻笠h(yuǎn)遠(yuǎn)低于每一個(gè)單獨(dú)的 MA。 該指標(biāo)經(jīng)常替代傳統(tǒng)移動(dòng)平均線, 應(yīng)用在平滑價(jià)格圖表以及其它指標(biāo)的數(shù)值。 a
EMA(Price, n, i) — Price 序列周期為 n 的 EMA 當(dāng)前值。
EMA2(Price, n, i) = EMA(EMA(Price, n, i), n, i) — Price 序列周期為 n 的雙重 EMA。
EMA3(Price, n, i)=EMA(EMA2(Price, n, i), n, i) — Price 序列周期為 n 的三重 EMA。
分形自適應(yīng)移動(dòng)平均線此處的平滑因子是在當(dāng)前價(jià)格序列的分形維數(shù)基礎(chǔ)上計(jì)算得來(lái)的。指標(biāo)優(yōu)點(diǎn)是跟隨強(qiáng)趨勢(shì), 并在整理期間, 大幅放緩。a
Price(i) — 是當(dāng)前的價(jià)格數(shù)值
A(i) — 當(dāng)前的指數(shù)平滑因子
可變指數(shù)動(dòng)態(tài)平均線這是一個(gè)平均周期依據(jù)行情波動(dòng)動(dòng)態(tài)變化的 EMA。 行情波動(dòng)由錢德動(dòng)量振蕩 (CMO) 測(cè)量。它衡量給定周期 (CMO 周期) 的正、負(fù)增量總和之間的比率。CMO 值是 EMA 平滑因子的系數(shù)。因此, 指標(biāo)有兩個(gè)設(shè)置參數(shù): CMO 振蕩器周期和 EMA 平滑周期。a
F=2/(n+1) 是平滑因子, n 是周期單元數(shù)
ABS 是計(jì)算變量絕對(duì)值的數(shù)學(xué)函數(shù)
VIDYA(i-1) — 是指標(biāo)的以前數(shù)值
CMO(i) — 是 CMO 振蕩器的數(shù)組值
a尼克·洛普克移動(dòng)平均線該指標(biāo)并非標(biāo)準(zhǔn)赫茲量化軟件發(fā)布包中的一部分。其主要優(yōu)點(diǎn)是在橫盤時(shí)幾乎沒(méi)有波動(dòng); 它嚴(yán)格跟蹤趨勢(shì)。 a
NRMA(i-1) — 是指標(biāo)的以前數(shù)值
Price(i) — 是當(dāng)前的價(jià)格數(shù)值
F=2/(n+1) 是平滑因子, n 是周期單元數(shù) NRratio 是平滑因子的比率
指標(biāo)與普通 EMA 的區(qū)別
赫茲量化軟件將上述研究的指標(biāo)與普通的 EMA 進(jìn)行比較。圖例 2 表明:
自適應(yīng)移動(dòng)平均線 (周期 - 12, 快速 EMA — 2, 慢速 EMA — 30, 偏移 — 0)
雙重指數(shù)移動(dòng)平均線 (周期 - 12, 偏移 - 0)
分形自適應(yīng)移動(dòng)平均線 (周期 - 12, 偏移 - 0)
指數(shù)移動(dòng)平均線 (周期 - 12, 偏移 - 0)
三重指數(shù)移動(dòng)平均線 (周期 - 12, 偏移 - 0)
可變指數(shù)動(dòng)態(tài)平均線 (CMO 周期 — 12, EMA 周期 — 12, 偏移 — 0)
尼克·洛普克移動(dòng)平均線 (平均方法 — SMA, 平滑深度 — 3, 平滑參數(shù) — 15 (對(duì)于 SMA 未使用), Kf — 1, 快速 — 12, 鋒銳 — 2, 垂直和水平偏移 — 0)。
所有的指標(biāo)都是以收盤價(jià)格為基礎(chǔ)制定的。

編輯切換為居中
圖例 2 基于指數(shù)移動(dòng)平均線 (EMA) 的指標(biāo)比較
如圖例 2 所示, 與普通 EMA 相比, DEMA 和 TEMA 更準(zhǔn)確地跟隨價(jià)格走勢(shì); 然而, 它們?cè)跈M盤時(shí)的波動(dòng)可能會(huì)給出假的交易信號(hào)。其余的指標(biāo) (FRAMA, AMA, VIDYA, NRMA) 在橫盤時(shí)幾乎沒(méi)有擺動(dòng), 對(duì)小幅價(jià)格變化沒(méi)有反應(yīng)。在趨勢(shì)中, 幾乎所有的指標(biāo)表現(xiàn)相若, TEMA 和 FRAMA 在趨勢(shì)方向變化時(shí)反應(yīng)更迅速。
各類移動(dòng)平均線的比較
赫茲量化軟件在交易策略里以等同的入場(chǎng)和離場(chǎng)條件比較上面研究的技術(shù)指標(biāo)。
交易策略規(guī)范
為了測(cè)試指標(biāo), 選擇了一個(gè)具有明顯入場(chǎng)和離場(chǎng)條件的簡(jiǎn)單策略。
入場(chǎng)條件:
初步買入信號(hào): 指標(biāo)線與陽(yáng)線實(shí)體交叉。進(jìn)而, 如果指標(biāo)的當(dāng)前數(shù)值與前一個(gè)數(shù)值之間的差值超過(guò)了指定 Growth 因子 (指標(biāo)增長(zhǎng)), 則買入交易開(kāi)單。
初步賣出信號(hào): 指標(biāo)線與陰線實(shí)體交叉。進(jìn)而, 如果指標(biāo)的前一個(gè)數(shù)值與當(dāng)前數(shù)值之間的差值超過(guò)了指定 Growth 因子 (指標(biāo)下跌), 則賣出交易開(kāi)單。
離場(chǎng)條件:
一旦觸及止盈位或止損位;
若是買入交易開(kāi)單, 指標(biāo)線與陰線實(shí)體交叉;
若是賣出交易開(kāi)單, 指標(biāo)線與陽(yáng)線實(shí)體交叉;
圖例 3, 4 展示了策略交易的例子。

編輯
圖例 3. 買入交易示例

編輯
圖例 4. 賣出交易示例
可在赫茲量化軟件終端導(dǎo)航器中找到類似移動(dòng)平均線智能交易系統(tǒng)的交易策略。
創(chuàng)建智能交易系統(tǒng)
赫茲量化軟件來(lái)為上述指定交易策略編寫智能交易系統(tǒng)。智能交易系統(tǒng)中實(shí)現(xiàn)了在以下技術(shù)指標(biāo)之間進(jìn)行選擇的功能: MA (簡(jiǎn)單, 指數(shù), 平滑, 線性加權(quán))等方法), DEMA, TEMA, FRAMA, AMA, VIDYA, NRMA。所選指標(biāo)將在圖表上繪制。此外,, 我們還可以指定指標(biāo)的輸入?yún)?shù), 設(shè)置止盈和止損的大小, 交易手?jǐn)?shù)的大小, 指標(biāo)增長(zhǎng)系數(shù) (Growth 因子) 的數(shù)值。
赫茲量化軟件只在一根新柱線開(kāi)盤時(shí), 而非每個(gè)分筆報(bào)價(jià), 檢查入場(chǎng)和離場(chǎng)的條件。首先檢查是否有持倉(cāng) (為此目的, 智能交易系統(tǒng)中提供了 SelectPosition 函數(shù))。如果沒(méi)有這樣的持倉(cāng), 我們檢查入場(chǎng)條件 (CheckForOpen 函數(shù)), 如果有持倉(cāng)的話 - 我們檢查離場(chǎng)條件 (CheckForClose 函數(shù))。
完整的智能交易系統(tǒng)代碼附加在文章之后 (文件 MultiMovingAverageExpert.mq5)。我們只研究入場(chǎng)和離場(chǎng)條件的實(shí)現(xiàn)。入場(chǎng)條件的檢查在 CheckForOpen 函數(shù)中實(shí)現(xiàn)如下:
? if(rt[0].open>ma[0] && rt[0].close<ma[0]) ? ? ? ? ? ? ? ////檢查陰線實(shí)體的交叉 ? ? { ? ? ?if(BuyCross) ? ? ? ? BuyCross=false; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //刪除買入先決條件 (如果之前有陽(yáng)線實(shí)體與指標(biāo)線交叉) ? ? ?SellCross=true; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//設(shè)置賣出交易先決條件 ? ? } ? else ? if(rt[0].open<ma[0] && rt[0].close>ma[0]) ? ? ? ? ? ? ? //檢查陽(yáng)線實(shí)體的交叉 ? ? { ? ? ?if(SellCross) ? ? ? ? SellCross=false; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //刪除買入先決條件 (如果之前有陰線實(shí)體與指標(biāo)線交叉) ? ? ?BuyCross=true; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//設(shè)置買入交易先決條件 ? ? } ? if(SellCross && ma[0]>ma[1] && ma[0]-ma[1]>GFactor) ? ? { ? ? ?signal=ORDER_TYPE_SELL; ? ? ? ? ? ? ? ? ? ? ? ? ? ? //如果指標(biāo)下跌則賣出條件發(fā)生 ? ? ?SellCross=false; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//刪除賣出先決條件 ? ? } ? else ? if(BuyCross && ma[1]>ma[0] && ma[1]-ma[0]>GFactor) ? ? { ? ? ?signal=ORDER_TYPE_BUY; ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 如果指標(biāo)上升則買入條件發(fā)生 ? ? ?BuyCross=false; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//刪除買入先決條件 ? ? }
數(shù)組 rt[] 保留價(jià)格的歷史數(shù)據(jù)
數(shù)組 ma[] 保留指標(biāo)值。
rt[0].close, rt[0].open — 是前一個(gè)收盤價(jià)/開(kāi)盤價(jià)的數(shù)值
ma[0] — 是指標(biāo)的前值
ma[1] — 指標(biāo)的當(dāng)前值。
GFactor — 是指標(biāo)的增長(zhǎng)系數(shù)。
Variable 信號(hào)進(jìn)一步用于形成買入或賣出交易請(qǐng)求。