遷移到:http://www.bdata-cap.com/newsinfo/1741407.html
最近大 BOSS「迷上」了一個網絡遊戲(什麼遊戲就很少說啦~),讓我寫個程序幫他算一下(如今他讓另外一個同事寫了,我要改 bug 沒時間,因此,我主要是沒事時「湊熱鬧」提點想法)。期間,發現這個遊戲必定是基於某個數學模型,試了不少方法,好比,文本類似度,曲線類似度等等,都不能很好的預測,最後,採用移動平均以及變體,就靠譜多了~本文主要回憶一下移動平均相關的問題。html
圖 1 本文演示數據庫
移動平均(Moving Average,MA),是技術分析中一種分析時間序列數據,最簡單、最經常使用的分析工具之一,如股價(如開盤價、收盤價、最高價、最低價)、回報或交易量等,撫平短時間波動,反映長期趨勢或週期,在變化無常的市場中能發揮特別的做用。移動平均線也是其它許多技術指標的基石。windows
簡單移動平均線(Simple Moving Average,SMA),是某變量以前 n 個數值的未做加權的算術平均。網絡
若計算收盤價的10日 SMA ,是指「以前10日」收市價的平均值。假設,收市價爲 p=(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10),則 SMA 爲:工具
當爲連續數值時,加入一個新值,同時剔除一箇舊值:3d
推廣到通常狀況爲:orm
加權移動平均(Weighted Moving Average,WMA),是指計算平均值時將個別數據乘以不一樣數值(權重)。WMA 是線性的。htm
若計算 n 日 WMA,假設,收市價爲 p= (p1, p2, … , pn, pn+1, … , pm, …),則爲若干天的收市價及依倒數順序遞減一的不一樣比例,來加權計算的移動平均線,即:blog
指數移動平均(Exponential Moving Average,EMA),是指以指數遞減加權的移動平均。各數值的加權影響隨時間而以指數遞減,越近的數據加權影響力越重,但較舊的數據也給予必定的加權值。EMA 是非線性的。遊戲
首先,加權。加權的程度取決於常數 α,α 可用天數 N 來表示:
若 N 爲 19 天,則 α=0.1。
而後,假設,今日 t1 收盤價爲 p,則今日 t1 的 EMA 爲:
即用「前一個 EMA 值」跟 α 和當前收盤價,來計算「下一個 EMA 值」。其中,能夠將簡單移動平均(SMA)做爲初始值 EMAt0。
另外,若將上式反覆迭代拆開後,EMA 爲:
這是一個無窮級數。當有足夠多的項,分母的值趨於 1/α,上式能夠變成爲,
因爲 1-α<1,分子的各項數值會愈來愈小,能夠忽略。若忽略 k 項及以後的項,則,
因此,若要包含 99.9% 的加權,
當 N 不斷增長時,
解得 K 爲
技術分析中,較爲廣泛的 10 日、40 日、200 日 的 MA,視分析時期長短而定。投資者從 MA 圖表中分辨出支持位或阻力位。
指數平滑異同移動平均(MACD),是一個利用短時間(快速)移動平均線與長期(慢速)移動平均線之間的聚合跟分離狀況,對買進、賣出時機作出研判的技術指標,是一箇中長期的投資技術工具。MACD 是從「雙移動平均線」發展而來,它們的意義基本相同,但 MACD 閱讀起來更方便。
MACD 構造原理是基於均線,對收盤價進行平滑處理後的一種趨向類指標。它由兩部分組成,正負差(DIF)和異同平均數(DEA)。正負差是核心,DEA 是輔助。DIF 是快速 EMA 和慢速EMA 的差。
其中,EMA(SHORT) 與 EMA(LONG) 分別是收盤價 SHORT 日指數移動平均線與 LONG 日指數移動平均線。
DEA
其中,MACD 一般繪製成圍繞零軸線波動的柱形圖。
在現有的技術分析軟件中,一般採用 SHORT=12,LONG=26,MID=9 時的 DIF 線、DEA 線、MACD 柱狀線。柱狀線通常有顏色,低於 0是綠色,高於 0 是紅色,前者表示趨勢向下,後者表示趨勢向上,柱狀線越長,趨勢越強。當 MACD 從負數轉向正數,是買入信號;不然是賣出信號。當 MACD 以大角度變化時,快 EMA 和慢 EMA 的差距迅速的拉開,表示一個市場大趨勢的轉變。
動向指數(Directional Movement Index,DMI),由美國威爾德(Welles Wilder JR.)提出的技術分析方法,「基本原理,是股價在上漲及下跌過程當中,藉創新高價或新低價的動能,研判多空買賣力道,藉以尋求多空雙方力道的均衡點,以及股價在多空雙方互動下,波動的趨劫循環過程。」是用以研判市場多空趨勢的指標,能預告「頭部確認」、「底部完成」的訊號,是爲判斷波段走勢至關實用的技術分析方法。
相較 MACD 爲中期技術指標,DMI 可視爲中長期技術指標。
「所謂 DM 值,今日股價波動幅度大於昨日股價波動幅部分的最大值,多是創高價的部分或創低價的部份;若是今日股價波動幅度較前一日小,則 DM = 0。」
若股價高點持續走高,爲上漲趨勢,記做 +DM;若爲下跌趨勢,記做 -DM。-DM 的負號(–)是表示反向趨勢(下跌),並不是數值爲負數;其餘情況:DM = 0。
所謂真實波幅(TR)是以最高價,最低價,及前一日收盤價三個價格作比較,求出當日股價波動的最大幅度。
先計算出 +DM、-DM 及 TR 的14日 SMA(簡單算術平均數),獲得 +DM1四、–DM14 及 TR14 三組數據做爲起始值,再計算各自的 EMA(指數移動平均)。
利用上述結果計算 DMI 指標。
真實波幅(TR)爲股價波動的最大波幅,趨向指標(DM)不出其外,所以方向指標(DI)的值將介於 0~100 之間。例如,+DI14=45,–DI14=23,表示過去 14 日中向上的趨勢佔 45%,向下的趨勢佔 23%,其餘的則沒有方向性。
動向指數(DMI)適用在趨勢明顯的市場,而在沒有明顯趨勢的市場,或是趨勢週期取錯時,則指標的訊號將不明確。DI 的波動性太高,容易出現無用的訊號,常常在訊號出現時,市場行情已走了一段,建議能夠配合 KD、RSI 指標使用,以增強訊號的正確性。
不少技術分析家認爲,不能將以往若干天的收市價對後市的啓示做用等量齊觀,應該是越新的收市價對後市的啓示做用越大,越舊的收市價對後市的啓示做用越少。所以,在 SMA 基礎上,發展出後 WMA 和 EMA 。這兩種移動優於 SMA。SMA 不能迅速反映市場價格的急劇波動,信號較慢,但各類 MA 對大趨勢提供的信息仍是較爲準確的。
下面利用柯達公司的收盤價(Eastman Kodak,EK)演示最多見的兩種移動平均:簡單移動平均線(SMA)和指數移動平均線(EMA)。
例如,有以下表所示的柯達公式收盤價,計算 10 日 SMA。
表 1 柯達收盤價的「10 日 SMA」值
表 1 左邊的數據跟後面計算 EMA 時的數據有一個不一致、錯誤的地方,將第 6 行「58.88」改爲「59.88」,下面按一致的、正確的計算 SMA。
以下所示:
圖 2 柯達收盤價的「10 日 SMA」線
圖 2 柯達收盤價的 SMA,紅色是實際值,藍色是簡單移動平均值。EK 收盤價的趨勢是向下的,但依據過去10日創建的SMA,卻始終高於當前收盤價。不然,若價格處於上漲趨勢,則SMA基本會低於當前收盤價。因爲簡單移動平均值是滯後指標,所以它們屬於趨勢跟隨指標。若是價格的趨勢明顯,移動平均線會發揮很好的做用。不過,當價格的趨勢不明顯時,移動平均線可能會給出誤導的錯誤信號。
所以,SMA一個突出的事實,是全部的移動平均值都是滯後的,永遠走在當前價格的後面。
爲了縮小 SMA 的滯後性,技術分析家因而採用 EMA 線。EMA 線是經過增大最近時間價格相對較遠時間價格的權重,減緩 SMA 線的滯後性。對最近時間價格的加權值取決於移動平均值所採用的時間段。例如,10 日 EMA 將最近時間的加權值定爲 18.18%,而 20 日 EMA 將加權值定爲 9.52%。EMA 比 SMA 的計算要複雜。不過,只要明白 EMA 的計算是把最近時間的價格權重定得比較遠時間價格的權重高就行。
EMA 有兩種表達方式:基於百分比的和基於週期的。對於基於週期的 EMA,加權 α=2 / ( N + 1),N 爲週期內的時間數量(Time periods)。若計算 10 日 EMA,則 N=10;20 日,則 N=20。下面仍是根據表 2,計算柯達公司收盤價的「10 日 EMA」。
表 2 柯達公司收盤價的「10 日 EMA」值
首先,10 日 EMA 的加權爲:
再肯定初始值 EMAt0,把「前 10 日的 SMA」做爲 EMAt0(表 2 黃色背景顯示的數字),這個 SMA 僅在第一次計算時使用,此後都使用前一個的 EMA 值:
從第 11 個時間開始,EMA12 爲,
以此類推。
獲得的各個 EMA 值的 EMA 線以下圖所示:
圖 3 柯達公司收盤價的「10 日 EMA」線
注意,理論上,數據庫中的每一個歷史收市價都參與了全部 EMA 數值的計算。從計算公式,雖然隨時間推移,較遠時間收市價的影響力漸漸變小,但它永遠都不會徹底消失。事實也的確如此,雖然指數移動平均線都有肯定的時間週期。歷史價格對短週期的指數移動平均值的影響相對較長週期的指數移動平均線減小得快,可是,請記住,歷史價格的影響力永遠都不會徹底消失。
乍看上去,EMA 線和 SMA 線的區別彷佛很小,但上面例子僅用了 10 個交易日的數據,儘管如此,區別仍是顯然的,EMA 線更貼近實際價格。通常來講,EMA 比 SMA 貼近實際價格的距離要近似 3/8。
表 3 柯達收盤價「10 日 SMA」和「10 日 EMA」差別
表 3 是同一時間的 SMA 和 EMA 相對於實際價格的差距。從第 10 – 20 天這 10 天內,有 9 天的 EMA 線比 SMA 線更貼近實際價格。SMA 線惟一一次比 EMA 線更貼近實際價格是第 18 天。
在 .Net Famework 平臺上,微軟提供不少現成的財務和應用公式。