成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用 Python 實現股票指數移動平均線

開發 后端
下面我們通過代碼示例詳細介紹 EMA 的實現,并將其與 SMA (簡單移動平均)進行比較。

 [[423530]]

移動平均指標用于各種交易策略,以發現價格數據的長期趨勢。簡單移動平均線策略的一個潛在缺點是它們對所有價格的權重相同,而您可能希望最近的價格占有更大的比重。指數移動平均線 (EMA) 是實現這一目標的一種方法。

下面我們通過代碼示例詳細介紹 EMA 的實現,并將其與 SMA (簡單移動平均)進行比較。

EMA 通過加權乘數賦予最新價格更多權重。這個乘數應用于最后一個價格,因此它比其他數據點占移動平均線更大的部分。EMA 是通過采用最近的價格(我們將其稱為“時間 t 的價格”) 減去前一個時間段 (EMA_{t-1})。此差異由您將 EMA 設置為 (N) 并加回到 EMA_{t-1}的時間段數加權。在數學上,我們可以這樣寫:

你可能已經注意到上面的等式有一個小問題,它是如何開始的?它參考了最后一個時期的 EMA,所以如果你進行第一次計算,它參考的是什么?這通常可以通過替換簡單移動平均線 (SMA) 來初始化計算來延緩,這樣您就可以在第一次之后的所有時間段構建 EMA。

讓我們通過導入我們的包,用 Python 中的一個簡單示例來展示它是如何工作的。 

  1. import numpy as np  
  2. import pandas as pd  
  3. import yfinance as yf  
  4. import matplotlib.pyplot as plt 

從這里開始,我們將構建兩個函數來協同工作并計算我們的指標。第一個函數將是我們上面概述的公式的簡單實現: 

  1. def _calcEMA(P, last_ema, N):  
  2.     return (P - last_ema) * (2 / (N + 1)) + last_ema 

第二個函數將計算我們所有數據的 EMA,首先使用 SMA 對其進行初始化,然后迭代我們的數據以使用我們的 SMA 列中的值更新每個后續條目,或者調用我們上面定義的 _calcEMA 函數來處理大于 N的值。 

  1. def calcEMA(data, N):  
  2.     # Initialize series  
  3.     data['SMA_' + str(N)] = data['Close'].rolling(N).mean()  
  4.     ema = np.zeros(len(data))  
  5.     for i, _row in enumerate(data.iterrows()):  
  6.         row = _row[1]  
  7.         if i < N:  
  8.             ema[i] += row['SMA_' + str(N)]  
  9.         else:  
  10.             ema[i] += _calcEMA(row['Close'], ema[i-1], N)  
  11.     data['EMA_' + str(N)] = ema.copy()  
  12.     return data 

現在,讓我們獲取一些數據,看看它是如何工作的。我們將拉出比回測更短的時間段,并比較 EMA 和 SMA 的 10、50 和 100 天。 

  1. ticker = 'BABA'  
  2. yfyfObj = yf.Ticker(ticker)  
  3. data = yfObj.history(ticker, start='2018-01-01'end='2020-12-31' 
  4. N = [10, 50, 100]  
  5. _ = [calcEMA(data, n) for n in N]  
  6. colors = plt.rcParams['axes.prop_cycle'].by_key()['color'] 
  7. fig, ax = plt.subplots(figsize=(18, 8))  
  8. ax.plot(data['Close'], label='Close' 
  9. for i, n in enumerate(N, 1):  
  10.     ax.plot(data[f'EMA_{n}'], label=f'EMA-{n}'color=colors[i])  
  11.     ax.plot(data[f'SMA_{n}'], label=f'SMA-{n}'color=colors[i], linestyle=':' 
  12. ax.legend()  
  13. ax.set_title(f'EMA and Closing Price Comparison for {ticker}')  
  14. plt.show() 

您可以在上圖中看到,EMA 比 SMA 對最近的變化更敏感。較短的時間范圍也比較長的時間范圍更具響應性,較長的時間范圍具有可以追溯到幾個月或更長時間的價格“記憶”。

所有類型的移動平均線都是滯后指標,這意味著它們只能告訴您價格中已經發生了什么。然而,這并不意味著它們不能用于識別趨勢和制定使用一個或多個移動平均指標的策略。如果您有想法,請繼續進行測試,看看如何結合 EMA、SMA 和其他值來開發新的盈利交易策略。 

 

責任編輯:龐桂玉 來源: Python中文社區
相關推薦

2010-08-02 14:35:11

Flex Chart

2017-10-22 22:15:57

神經網絡金融時序預測機器學習

2021-08-26 10:20:32

Python均線交叉代碼

2023-04-09 16:12:28

Python赫爾移動平均線技術指標

2012-05-01 16:55:36

2021-09-18 11:10:25

PythonStochRSI代碼

2017-07-06 15:44:33

2021-09-14 10:20:48

Python股票布林帶

2020-05-20 08:33:39

隨機游走移動平均過程Python

2014-08-07 10:00:42

achartengin

2024-12-09 13:18:56

2022-02-18 10:34:19

邏輯回歸KNN預測

2012-05-23 10:36:43

自帶設備辦公BYOD移動網絡

2013-11-18 17:24:25

BDTICertimo移動體驗指數

2017-11-24 08:00:06

深度學習TensorFlow預測股票

2021-08-20 10:12:35

Python蒙特卡洛股票

2015-08-20 16:04:12

2016-09-12 14:05:27

PythonPython解釋器Web

2021-05-17 10:53:32

工信部移動流量5G

2025-02-07 15:52:07

SQL函數移動平均值
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美日韩精品久久亚洲区 | 在线免费黄色小视频 | 欧美一区二区三区在线观看视频 | 日韩成人精品在线观看 | 激情久久网 | 亚洲精品在线视频 | 国产传媒视频在线观看 | 色男人的天堂 | 中文字幕一区二区不卡 | 亚洲成人一区 | 91成人在线视频 | japanhd美女动| 欧美日韩亚洲一区 | 国产精品久久久久不卡 | 成年免费在线观看 | 国产免费麻豆视频 | 久久99精品国产 | 亚洲精品福利视频 | 中文字幕成人在线 | 99资源站 | 国产精品久久久久久久久久 | 毛片一级网站 | 亚洲精品久久久一区二区三区 | 亚洲在线成人 | 日韩精品国产精品 | 久久国产精品偷 | 在线看av的网址 | 国产大学生情侣呻吟视频 | 亚州国产 | 久久久男人的天堂 | 国产探花在线精品一区二区 | 久综合| 国产在线精品一区二区 | 国产黄色av网站 | 日韩欧美一区二区三区四区 | 毛片韩国 | 日日爱夜夜操 | 国产日韩欧美一区 | 91视频18 | 狠狠综合网 | 热久久久 |