自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何使用Python判斷牛熊

開發(fā) 后端
有許多方法可以判斷誰是公牛還是空頭,而艾達(dá)透視指標(biāo)的“牛熊力量指標(biāo)”就是其中的一種,它使用簡單的公式來近似估算這種隱含的技術(shù)實力。今天,我們將對指標(biāo)進(jìn)行編碼和回測,然后從客觀的角度對其進(jìn)行判斷。

[[387385]]

本文轉(zhuǎn)載自微信公眾號「區(qū)塊鏈研究實驗室」,作者鏈三豐。轉(zhuǎn)載本文請聯(lián)系區(qū)塊鏈研究實驗室公眾號。  

 

有許多方法可以判斷誰是公牛還是空頭,而艾達(dá)透視指標(biāo)的“牛熊力量指標(biāo)”就是其中的一種,它使用簡單的公式來近似估算這種隱含的技術(shù)實力。今天,我們將對指標(biāo)進(jìn)行編碼和回測,然后從客觀的角度對其進(jìn)行判斷。

創(chuàng)建牛市和熊市實力指數(shù)

上古雷指數(shù)MEAs數(shù)字購銷壓力量和兩個柱狀圖,其中一個就是所謂的多頭力量和其他的空頭力量的。直方圖是根據(jù)以下公式計算的:

EMA變量指的是指數(shù)移動平均線,它是一種移動平均線,將更多的權(quán)重放在最近的值上。

可以使用以下功能來計算指數(shù)移動平均值:

  1. def ma(Data, lookback, what, where): 
  2.      
  3.     for i in range(len(Data)): 
  4.       try: 
  5.         Data[i, where] = (Data[i - lookback + 1:i + 1, what].mean()) 
  6.          
  7.             except IndexError: 
  8.                 pass 
  9.     return Data 
  10. def ema(Data, alpha, lookback, what, where): 
  11.      
  12.     # alpha is the smoothing factor 
  13.     # window is the lookback period 
  14.     # what is the column that needs to have its average calculated 
  15.     # where is where to put the exponential moving average 
  16.      
  17.     alpha = alpha / (lookback + 1.0) 
  18.     beta  = 1 - alpha 
  19.      
  20.     # First value is a simple SMA 
  21.     Data = ma(Data, lookback, what, where
  22.      
  23.     # Calculating first EMA 
  24.     Data[lookback + 1, where] = (Data[lookback + 1, what] * alpha) + (Data[lookback, where] * beta)         
  25.     # Calculating the rest of EMA 
  26.     for i in range(lookback + 2, len(Data)): 
  27.       try: 
  28.         Data[i, where] = (Data[i, what] * alpha) + (Data[i - 1, where] * beta) 
  29.          
  30.             except IndexError: 
  31.                 pass 
  32.     return Data 

第一個面板中的EURUSD和50周期的牛熊指標(biāo)

上面顯示了EURUSD每小時數(shù)據(jù),第二個面板中有50個周期的牛熊指標(biāo)。在繼續(xù)執(zhí)行指標(biāo)代碼之前,我們必須編寫兩個簡單的函數(shù):

  1. def deleter(Data, index, times): 
  2.      
  3.     for i in range(1, times + 1): 
  4.      
  5.         Data = np.delete(Data, index, axis = 1)return Data 
  6.     
  7. def jump(Data, jump): 
  8.      
  9.     Data = Data[jump:, ] 
  10.      
  11.     return Data 

現(xiàn)在,我們準(zhǔn)備好代碼了。記住要準(zhǔn)備好OHLC陣列。

  1. def bull_bear_power(Data, lookback, what, high, low, where): 
  2.      
  3.     # Adding the required columns 
  4.     Data = adder(Data, 3) 
  5.      
  6.     # Calculating the exponential moving average 
  7.     Data = ema(Data, 2, lookback, what, where)     
  8.      
  9.     # Calculating the Bull Power 
  10.     Data[:, where + 1] = Data[:, high] - Data[:, where
  11.      
  12.     # Calculating the Bear Power 
  13.     Data[:, where + 2] = Data[:, where] - Data[:, low] 
  14.      
  15.     # Deleting initial empty rows 
  16.     Data = jump(Data, lookback) 
  17.      
  18.     return Data 

USDCHF位于第一個面板中,并且是50周期的牛熊指標(biāo)。

要對上面的圖表進(jìn)行編碼,我們可以使用以下函數(shù):

  1. def indicator_plot_double_bull_bear(Data, name = '', name_ind = '', window = 250): 
  2.   fig, ax = plt.subplots(2, figsize = (10, 5)) 
  3.   Chosen = Data[-window:, ] 
  4.      
  5.   for i in range(len(Chosen)): 
  6.          
  7.     ax[0].vlines(x = i, ymin = Chosen[i, 2], ymax = Chosen[i, 1], color = 'black', linewidth = 1)   
  8.     
  9.   ax[0].grid() 
  10.   for i in range(len(Chosen)): 
  11.          
  12.     ax[1].vlines(x = i, ymin = 0, ymax = Chosen[i, 6], color = 'green', linewidth = 1) 
  13.     ax[1].vlines(x = i, ymin = Chosen[i, 7], ymax = 0, color = 'red', linewidth = 1)   
  14.              
  15.   ax[1].grid()  
  16.   ax[1].axhline(y = 0, color = 'black', linewidth = 0.5, linestyle = '--'
  17. # The above code considers columns 6 and 7 to inhibit Bull Power and Bear Power respectively. 

回測簡單策略

與任何適當(dāng)?shù)难芯糠椒ㄒ粯?,其目的是對指?biāo)進(jìn)行回測,并能夠自己查看是否值得將其作為我們先前存在的交易框架的補充。請注意,以下內(nèi)容僅對過去10年中僅對10個貨幣對的一個時間范圍進(jìn)行回測。這可能不是該策略的最佳時限,但我們只是試圖找到一種“一刀切”的“幾乎適合所有人”的策略。

條件已簡化,我們將基于主觀障礙使用逆勢方法:

  • 當(dāng)牛市力量指標(biāo)達(dá)到-0.001并且前兩個值大于0.001時,做多(買入)。保持該位置,直到收到新信號(該位置已關(guān)閉)。
  • 每當(dāng)熊市力量指標(biāo)達(dá)到0.001(前兩個值均低于0.001)時,做空(賣出)。保持該位置,直到收到新信號(該位置已關(guān)閉)。

歐元兌美元的信號圖。

  1. def signal(Data, bull_power, bear_power, buy, sell): 
  2.      
  3.   for i in range(len(Data)): 
  4.     if Data[i, bull_power] < lower_barrier and Data[i - 1, bull_power] > lower_barrier : 
  5.         Data[i, buy] = 1 
  6.              
  7.     if Data[i, bear_power] < lower_barrier and Data[i - 1, bear_power] > lower_barrier: 
  8.         Data[i, sell] = -1 

USDCHF上的信號圖

根據(jù)自2010年以來按小時數(shù)據(jù)散布的0.5個基點得出的結(jié)果,并且沒有采用風(fēng)險管理算法,得出的結(jié)果如下。

效果表

遵循該策略的股權(quán)曲線

顯然,該指標(biāo)并沒有增加價值。嘗試優(yōu)化甚至更改與之相關(guān)的策略可能會更好。我們可能可以添加一些熊市條件來驗證看漲信號,并添加一些牛市條件來驗證看跌信號。

我們還可以相應(yīng)地調(diào)整回溯和障礙。我們可以做的最后一件事是將策略從逆勢轉(zhuǎn)變?yōu)樽裱厔荨?/p>

結(jié)論

記住要經(jīng)常做背部測試。即使我提供了指標(biāo)的功能(而不只是吹牛說它是圣杯,并且它的功能是秘密),您也應(yīng)該始終相信其他人是錯誤的。我的指標(biāo)和交易風(fēng)格對我有用,但可能并非對每個人都適用。我依靠以下規(guī)則:

市場價格在超過50%的時間內(nèi)無法預(yù)測或很難預(yù)測。但是市場反應(yīng)是可以預(yù)測的。

意思是,我們可以在一個區(qū)域周圍形成一個小區(qū)域,并可以確信地說市場價格將對該區(qū)域周圍的區(qū)域產(chǎn)生反應(yīng)。但是我們不能真正說它會從那里下跌4%,然后再次測試,并在第三次嘗試跌至103.85美元時突破。由于我們預(yù)測過度,因此誤差項呈指數(shù)級增長。

 

責(zé)任編輯:武曉燕 來源: 區(qū)塊鏈研究實驗室
相關(guān)推薦

2020-11-25 08:24:13

人臉識別

2015-12-30 14:41:51

OpenStack

2012-05-21 13:11:51

HTML5

2018-02-24 15:48:53

2012-05-21 13:18:12

HTML5

2012-05-21 10:53:30

HTML5

2012-05-21 13:32:45

HTML5

2020-07-09 10:18:00

人工智能

2020-12-07 16:20:53

Python 開發(fā)編程語言

2021-04-25 15:17:29

代碼軟件程序員

2012-11-05 10:48:14

敏捷測試軟件測試

2022-09-12 23:53:53

JavaScript條件判斷開發(fā)

2021-07-21 14:29:27

Python編程語言軟件開發(fā)

2024-11-18 16:24:19

SVN開發(fā)Python

2021-07-26 05:16:24

HashCheck密碼隱私

2019-02-26 10:00:37

Linux命令內(nèi)存

2010-02-22 09:17:39

使用Python

2012-08-27 09:28:07

JavaPython

2020-01-03 10:50:16

Python編程語言Mac電腦

2023-04-03 14:02:32

Python人臉視頻
點贊
收藏

51CTO技術(shù)棧公眾號