計(jì)算布林帶

計(jì)算布林帶

# coding: utf-8
# 作者:Wizard <github.com/wizardforcel>

import numpy as np
from matplotlib import pyplot as plt
import sys

# 獲取數(shù)據(jù)
# 因?yàn)闆]找到數(shù)據(jù)源,所以直接隨機(jī)生成了
series = np.random.rand(100) * 10 + 10
ser_len = len(series)

# 獲取窗口大小,默認(rèn)為 5
win_sz = 5 if len(sys.argv) < 2 else sys.argv[1]
print u'窗口大小: ', win_sz

# 計(jì)算權(quán)重,sma_weight 為簡(jiǎn)單滑動(dòng)
# ema_weight 為指數(shù)滑動(dòng)
sma_weight = np.ones(win_sz).astype(float) / win_sz
ema_weight = np.exp(np.linspace(-1, 0, win_sz))
ema_weight /= ema_weight.sum()


# 手動(dòng)計(jì)算簡(jiǎn)單/指數(shù)滑動(dòng)平均,以及滑動(dòng)標(biāo)準(zhǔn)差
# 滑動(dòng)平均就是當(dāng)天和前 N - 1 天的(加權(quán))均值
# 其中 N 是窗口大小,標(biāo)準(zhǔn)差與之類似
sma = []
ema = []
mstd = []

for i in xrange(win_sz - 1, ser_len):
    
    ser_range = series[i - (win_sz - 1): i + 1]
    avg = (ser_range * sma_weight).sum()
    sma.append(avg)
    avg = (ser_range * ema_weight).sum()
    ema.append(avg)
    
    std = ser_range.std()
    mstd.append(std)
    
sma = np.asarray(sma)
mstd = np.asarray(mstd)

# 上布林帶是簡(jiǎn)單滑動(dòng)均值加上兩個(gè)滑動(dòng)標(biāo)準(zhǔn)差
# 下布林帶是簡(jiǎn)單滑動(dòng)均值減去兩個(gè)滑動(dòng)標(biāo)準(zhǔn)差
upper = sma + 2 * mstd
lower = sma - 2 * mstd

# 要注意橫軸從 N - 1 開始
ser_slice = series[win_sz - 1:]
x = np.arange(win_sz - 1, ser_len)
print 'x: ', x[:5]

# 繪制函數(shù)
plt.plot(x, ser_slice, 'b', label='series')
print u'序列: ', ser_slice[:5]
plt.plot(x, sma, 'g', label='sma')
print u'簡(jiǎn)單滑動(dòng)均值: ', sma[:5]
plt.plot(x, ema, 'r', label='ema')
print u'指數(shù)滑動(dòng)均值: ', ema[:5]

plt.plot(x, upper, 'grey', label='upper bolling')
plt.plot(x, lower, 'grey', label='lower bolling')

plt.legend()
plt.show()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 努力回憶著你那些話語(yǔ). 我的心似在空中拂起. 聽懂了你的言意我卻只能孤單沉寂. 愛我愛我曾經(jīng)你說得那么用情. 傷心...
    辭窮先生閱讀 505評(píng)論 0 0
  • 三個(gè)月的時(shí)間在人生的長(zhǎng)河中是短暫的,但對(duì)于春生來說,那是致命的一段光陰。一生當(dāng)中,起關(guān)鍵作用的往往就是那么幾步,走...
    西嶺布衣閱讀 225評(píng)論 0 3
  • 能用錢解決的事情都不叫事情 作為新晉無業(yè)游民,我已經(jīng)游蕩了半個(gè)多月了,每天過的很隨性:吃飯、睡覺、看視頻,偶爾看看...
    侯小姐閱讀 370評(píng)論 0 0
  • 我的好心情是一個(gè)吹得大大的氣球,而屁大點(diǎn)事兒就像一根細(xì)小得微不可見的針,輕輕一戳,我的好心情便爆破得觸不及防成了壞...
    彀爾清歡閱讀 746評(píng)論 0 0

友情鏈接更多精彩內(nèi)容