色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Python實現Hull Moving Average

冬至子 ? 來源:Hanane D. ? 作者:Hanane D. ? 2023-05-23 15:28 ? 次閱讀

赫爾移動平均線(Hull Moving Average,簡稱HMA)是一種技術指標,于2005年由Alan Hull開發。它是一種移動平均線,利用加權計算來減少滯后并提高準確性。

HMA對價格變動非常敏感,同時最大程度地減少短期波動可能產生的噪音。它通過使用加權計算來強調更近期的價格,同時平滑數據。

計算HMA的公式涉及三個步驟。首先,使用價格數據計算加權移動平均線。然后,使用第一步的結果計算第二個加權移動平均線。最后,使用第二步的結果計算第三個加權移動平均線。最終計算的結果就是移動赫爾平均線。

WMA_1 =一段時期內價格的加權移動平均值(WMA) /2

WMA_2 =價格在一段時間內的WMA

HMA_non_smooth = 2 * WMA_1 - WMA_2

HMA = HMA_non_smooth的WMA除以根號(周期)

在下面的文章中,我們將介紹如何使用Python實現HMA。本文將對計算WMA的兩種方法進行詳細比較。然后介紹它在時間序列建模中的作用。

Python實現HMA

方法1:將WMA計算為按時期加權的移動平均價格:

defhma(period):
 wma_1=df['Adj Close'].rolling(period//2).apply(lambdax: \\
 np.sum(x*np.arange(1, period//2+1)) /np.sum(np.arange(1, period//2+1)), raw=True)
 wma_2=df['Adj Close'].rolling(period).apply(lambdax: \\
 np.sum(x*np.arange(1, period+1)) /np.sum(np.arange(1, period+1)), raw=True)
 diff=2*wma_1-wma_2
 hma=diff.rolling(int(np.sqrt(period))).mean()
 returnhma
 period=20
 df['hma'] =hma(period)
 df['sma_20days'] =df['Adj Close'].rolling(period).mean()
 figsize= (10,6)
 df[['Adj Close','hma','sma_20days']].plot(figsize=figsize)
 plt.title('Hull Moving Average {0} days'.format(period))
 plt.show()

如圖所示,HMA比通常的SMA反應更快:

還可以嘗試更短的時間框架,看看HMA與價格曲線的關系有多密切。

df['hma_short']=hma(14)
 df['hma_long']=hma(30)
 figsize= (12,6)
 df[['Adj Close','hma_short','hma_long']].plot(figsize=figsize)
 plt.title('Hull Moving Average')
 plt.show()

方法2,使用體量計算加權平均值:

defhma_volume(period):
 wma_1=df['nominal'].rolling(period//2).sum()/df['Volume'].rolling(period//2).sum()
 wma_2=df['nominal'].rolling(period).sum()/df['Volume'].rolling(period).sum()
 diff=2*wma_1-wma_2
 hma=diff.rolling(int(np.sqrt(period))).mean()
 returnhma
 df['nominal'] =df['Adj Close'] *df['Volume']
 period=20
 df['hma_volume']=hma_volume(period)
 figsize=(12,8)
 fig, (ax0,ax1) =plt.subplots(nrows=2, sharex=True, subplot_kw=dict(frameon=True),figsize=figsize) 
 df[['Adj Close','hma_volume','hma']].plot(ax=ax0)
 ax0.set_title('HMA Volume vs HMA period')
 df[['Volume']].plot(ax=ax1)
 ax1.set_title('Hull Moving Average')
 plt.show()

體量的HMA比第一種方法計算的HMA稍滯后:

策略的回溯測試

為了回測每種策略(方法1和2),我們將計算一個短期和一個長期的HMA:

當短線超過長線時,可以觸發買入指令。當短線低于長線時,就會觸發賣出指令。

然后我們計算每個信號產生的pnl。

方法1:

#SIGNAL
 df['hma_short']=hma(20)
 df['hma_long']=hma(30)
 df['signal'] =np.where(df['hma_short'] >df['hma_long'],1,-1)
 
 #RETURN
 df['signal_shifted']=df['signal'].shift()
 
 ## Calculate the returns on the days we trigger a signal
 df['returns'] =df['Adj Close'].pct_change()
 
 ## Calculate the strategy returns
 df['strategy_returns'] =df['signal_shifted'] *df['returns']
 
 ## Calculate the cumulative returns
 df1=df.dropna()
 df1['cumulative_returns'] = (1+df1['strategy_returns']).cumprod()
 
 #PLOT
 figsize=(12,8)
 fig, (ax0,ax1) =plt.subplots(nrows=2, sharex=True, subplot_kw=dict(frameon=True),figsize=figsize) 
 df[['Adj Close','hma_long','hma_short']].plot(ax=ax0)
 ax0.set_title("HMA: Short vs Long")
 
 df[['signal']].plot(ax=ax1,style='-.',alpha=0.4)
 ax1.legend()
 ax1.set_title("HMA - Signals")
 plt.show()
 
 df1['cumulative_returns'].plot(figsize=(10,4))
 plt.title("Cumulative Return")
 plt.show()

你可以看到每次產生的信號都有一條交叉線:

在數據集的整個時間段內產生的總體回報是正的,即使在某些時期它是負的:

回報率:

df1['cumulative_returns'].tail()[-1]
 #1.0229750801053696

方法2:

#SIGNAL
 df['hma_volume_short']=hma_volume(20)
 df['hma_volume_long']=hma_volume(30)
 df['signal'] =np.where(df['hma_volume_short'] >df['hma_volume_long'],1,-1)
 
 #RETURN
 df['returns'] =df['Adj Close'].pct_change()
 
 ## Calculate the strategy returns
 df['strategy_returns'] =df['signal'].shift() *df['returns']
 
 ## Calculate the cumulative returns
 df2=df.dropna()
 df2['cumulative_returns_volume'] = (1+df2['strategy_returns']).cumprod()
 
 # PLOT
 figsize=(12,8)
 fig, (ax0,ax1) =plt.subplots(nrows=2, sharex=True, subplot_kw=dict(frameon=True),figsize=figsize) 
 df[['Adj Close','hma_volume_short','hma_volume_long']].plot(ax=ax0)
 df[['signal']].plot(ax=ax1,style='-.',alpha=0.4)
 ax0.set_title("HMA - Volume: Short vs Long")
 ax1.legend()
 plt.title("HMA - Signals")
 plt.show()
 
 figs= (10,4)
 df2['cumulative_returns_volume'].plot(figsize=figs)
 plt.title("Cumulative Return")
 plt.show()

看起來比第一種方法中的HMA更平滑,可以觸發的信號更少(在我們的例子中只有1個):

這種策略產生的回報不是很好:0.75(0.775-1?-24%)

df2['cumulative_returns_volume'].tail()[-1]
 #0.7555329108482581

我們來比較兩種策略的信號:

df['signal'] =np.where(df['hma_short'] >df['hma_long'],1,-1)
 df['signal_volume'] =np.where(df['hma_volume_short'] >df['hma_volume_long'],1,-1)
 figsize=(12,8)
 df[['signal','signal_volume']].plot(figsize=figsize)
 plt.show()

空頭頭寸的信號比多頭頭寸更多:

所以僅使用HMA還不足以產生有利可圖的策略。我們可以使用相對強弱指數(RSI)和隨機指數(Stochastic Oscillator等其他指標來確認交易信號。但是對于時間序列來說,HMA是一個很好的特征工程的方法。

HMA信號的一些解釋

交叉信號:當價格越過HMA上方時,可以解釋為看漲信號,當價格越過HMA下方時,可以解釋為看空信號。它也可以觸發買入和賣出信號,正如我們之前已經看到的。(上圖點1)。

趨勢跟蹤信號:HMA也可用于識別趨勢并生成趨勢跟蹤信號。當HMA傾斜向上時,它表示上升趨勢,當它傾斜向下時,它表示下降趨勢(上圖點2)。

反轉信號:當價格從下方接近HMA時,看漲反轉趨勢可能在不久的將來發生(上圖點3)。

HMA在時間序列建模的作用

HMA在時間序列建模中的作用主要是作為一個平滑濾波器,可以在一定程度上減少噪聲并提高時間序列預測的準確性。在時間序列建模中,經常需要對數據進行平滑處理,以消除異常值和噪聲,同時保留趨勢和季節性變化的信號。HMA是一種有效的平滑濾波器,它通過加權平均的方式來計算平均值,并對較早的數據施加更大的權重,從而可以更準確地捕捉趨勢性信號。

除了作為一個平滑濾波器,HMA還可以作為一個特征提取器來提取時間序列中的特征,并用于建立預測模型。例如,可以使用HMA計算時間序列中的趨勢和季節性變化,并將其作為輸入特征用于構建ARIMA、VAR或LSTM等預測模型。

總結

HMA不僅在交易中有廣泛的應用,也是一種有用的時間序列分析工具。HMA作為一種移動平均線,可以減少時間序列中的噪聲和突發性變化,從而更準確地捕捉數據的趨勢性和周期性變化。在時間序列分析中,HMA通常用于平滑處理數據,以提高預測的準確性。在實際應用中,HMA常常與其他技術指標和時間序列分析方法相結合,在各種數據分析和預測任務中獲取更好的預測結果。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 濾波器
    +關注

    關注

    161

    文章

    7795

    瀏覽量

    177996
  • SMA
    SMA
    +關注

    關注

    4

    文章

    175

    瀏覽量

    24812
  • HMA
    HMA
    +關注

    關注

    0

    文章

    4

    瀏覽量

    8448
  • python
    +關注

    關注

    56

    文章

    4792

    瀏覽量

    84628
收藏 人收藏

    評論

    相關推薦

    labview 如何實現moving RMS(移動均方根值)

    labview 如何實現實時moving RMS(移動均方根值),matlab有這個函數,labview好像沒有發現有
    發表于 01-20 19:34

    5種Python實現方式詳解

    、PyPy和Pyston等,以下是對其簡要介紹:CPythonCPython是標準Python,也是其他Python編譯器的參考實現。通常提到“Python”一詞,都是指CPython
    發表于 05-22 15:52

    利用python實現KNN算法

    K近鄰python實現
    發表于 10-25 17:24

    實現Python與STM32通信 精選資料分享

    斷斷續續學了幾周Stm32后,突然想實現上位機和下位機的通信,恰好自己學過一點python,便想通過python實現通信. 在網上看見python
    發表于 08-16 07:28

    python普通函數創建與調用

    ,而函數的返回值就是蛋糕成品。1. 函數的創建在 Python 中,使用 def 關鍵字定義函數def 函數名(參數): # 內部代碼 return 表達式舉個例子,我這邊手動實現一個計算兩個數平均值
    發表于 03-01 16:32

    動圈式儀表措施低級電流-Moving-Coil Meter

    moving-coil meter. This circuit allows use of the moving-coil meter, even when the meter current is a large fraction of the current bei
    發表于 04-26 16:30 ?633次閱讀
    動圈式儀表措施低級電流-<b class='flag-5'>Moving</b>-Coil Meter

    Moving-Coil Meter Measures Low

    moving-coil meter. This circuit allows use of the moving-coil meter, even when the meter current is a large fraction of the current bei
    發表于 04-28 13:41 ?930次閱讀
    <b class='flag-5'>Moving</b>-Coil Meter Measures Low

    Moving_Average

    Moving Average,好東西,喜歡的朋友可以下載來學習。
    發表于 02-22 15:53 ?0次下載

    蟻群算法python編程實現

    本文主要介紹了Python編程實現蟻群算法詳解,涉及螞蟻算法的簡介,主要原理及公式,以及Python中的實現代碼,具有一定參考價值。
    發表于 02-02 10:36 ?7464次閱讀
    蟻群算法<b class='flag-5'>python</b>編程<b class='flag-5'>實現</b>

    如何使用python實現截圖自動存入Excel表

    如何使用python實現截圖自動存入Excel表
    的頭像 發表于 02-05 12:13 ?7250次閱讀

    Logistic回歸數學推導以及python實現

    Logistic回歸數學推導以及python實現
    發表于 02-25 14:48 ?7次下載

    Python實現所有算法-基本牛頓法

    Python實現所有算法-二分法 Python實現所有算法-力系統是否靜態平衡 Python實現
    的頭像 發表于 07-13 10:40 ?1641次閱讀

    抽樣在Python中是如何實現

    今天來和大家聊聊抽樣的幾種常用方法,以及在Python中是如何實現的。
    的頭像 發表于 08-05 10:59 ?1206次閱讀

    Python實現OpenCV的安裝與使用

      本文實例講述了 Python 實現 OpenCV 的安裝與使用。分享給大家供 大家參考,具體如下:  由于下一步要開始研究下深度學習,而深度學習領域很多的算法和應 用都是用 Python
    發表于 07-20 11:46 ?7次下載

    如何實現Python復制文件操作

    Python 中有許多“開蓋即食”的模塊(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在這篇文章中,你將會看到一些用 Python 實現文件復制的特殊方法。下面我們開始學習這九種不同的方法來
    的頭像 發表于 07-18 14:53 ?411次閱讀
    主站蜘蛛池模板: 我的美女奴隶| 日本AAA片爽快视频| 蜜桃成熟时2在线| 蜜桃无码AV视频在线观看| 欧美精品AV精品一区视频| 秋霞午夜一级理论片久久| 我不卡影院手机在线观看| 亚洲精品第一综合99久久| 在线观看国产日韩| 99久久爱看免费观看| 俄罗斯兽交XXXXX在线| 国产伦精品一区二区免费| 国语精彩对白2021| 老色哥网站| 热久久国产欧美一区二区精品| 使劲别停好大好深好爽动态图| 亚洲精品国产拍在线观看| 最近的中文字幕免费完整| 成 人 网 站毛片| 国产亚洲日韩欧美视频| 麻豆国产原创中文AV网站| 日韩精品特黄毛片免费看| 亚洲人交性视频| www.伊人网| 混乱家庭电影完整版在线看| 嗯别插太快好深再深点| 无码人妻精品一区二区蜜桃色| 一级做a爰片久久免费| 成人免费观看国产高清| 果冻传媒妈妈要儿子| 欧美性暴力变态xxxx| 九九精品国产亚洲A片无码| 年轻的的小婊孑2中文字幕| 掀开奶罩边躁狠狠躁软学生| 4455永久在线毛片观看| 国产精品成人不卡在线观看| 久久综合久综合久久鬼色| 婷婷射精AV这里只有精品| 综合伊人久久| 国产亚洲欧美在线观看三区| 热の中文 AV天堂|