<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 4.4 阿隆指標 ? 技術指標阿隆( Aroon )全解析 > 來源:https://uqer.io/community/share/55e69497f9f06c1eaa81f9d4 ## 一、阿隆指標(Aroon)簡介 阿隆指標(Aroon)是由圖莎爾·錢德(Tushar Chande)1995 年發明的,它通過計算自價格達到近期最高值和最低值以來所經過的期間數,幫助投資者預測證券價格從趨勢到區域、區域或反轉的變化。在技術分析領域中,有一個說法,一個指標使用的人越多,其效力越低。這個技術指標還挺冷門的,我們一同來看看它的效果。 ```py from CAL.PyCAL import * import numpy as np import pandas as pd from pandas import DataFrame from heapq import nlargest from heapq import nsmallest ``` ## 二、Aroon計算方法 Aroon指標分為兩個具體指標,分別`AroonUp`和`AroonDown`。其具體計算方式為: + `AroonUp = [(計算期天數-最高價后的天數)/計算期天數]*100` + `AroonDown = [(計算期天數-最低價后的天數)/計算期天數]*100` + `AroonOsc = AroonUp - AroonDown` 計算期天數通常取20天 ```py def aroonUp(account,timeLength=20): #運用heapq包的nlargest函數,可以輕松獲得:計算期天數-最高價后的天數 eq_AroonUp = {} history = account.get_attribute_history('closePrice',timeLength) for stk in account.universe: priceSeries = pd.Series(history[stk]) eq_AroonUp[stk] = (nlargest(1,range(len(priceSeries)),key=priceSeries.get)[0]+1)*100/timeLength # eq_AroonUp[stk]范圍在[5,100]之間 return eq_AroonUp def aroonDown(account,timeLength=20): #運用heapq包的nsmallest函數,可以輕松獲得:計算期天數-最低價后的天數 eq_AroonDown = {} history = account.get_attribute_history('closePrice',timeLength) for stk in account.universe: priceSeries = pd.Series(history[stk]) eq_AroonDown[stk] = (nsmallest(1,range(len(priceSeries)),key=priceSeries.get)[0]+1)*100/timeLength # eq_AroonDown[stk]范圍在[5,100]之間 return eq_AroonDown ``` 三、Aroon指標的基本用法 + 當`AroonUp`指標向下跌破50 時,表示向上的趨勢正在失去動力;當`AroonDown`指標向下跌破50時,表示向下的趨勢正在失去動力;如果兩個指標都在低位,表示股價沒有明確的趨勢;如果指標在70 以上,表示趨勢十分強烈;如果在30 以下,表明相反的趨勢正在醞釀。通常來說,`AroonOsc`在0附近時,是典型的無趨勢特征,股票處于盤整階段。 + 參考研報[《技術指標系列(三)——加入“二次確認”的AROON 阿隆優化指標》](http://www.doc88.com/p-396145162466.html)中的方法,我們買入`AroonOsc > 50`的股票。 ```py start = '2009-08-01' # 回測起始時間 end = '2015-08-31' # 回測結束時間 benchmark = 'HS300' # 策略參考標準 universe = set_universe('HS300') # 證券池,支持股票和基金 capital_base = 100000 # 起始資金 freq = 'd' # 策略類型,'d'表示日間策略使用日線回測,'m'表示日內策略使用分鐘線回測 refresh_rate = 10 # 調倉頻率,表示執行handle_data的時間間隔,若freq = 'd'時間間隔的單位為交易日,若freq = 'm'時間間隔為分鐘 def initialize(account): # 初始化虛擬賬戶狀態 pass def handle_data(account): # 每個交易日的買入賣出指令 eq_AroonUp = aroonUp(account,20) eq_AroonDown = aroonDown(account,20) buyList = [] for stk in account.valid_secpos: order_to(stk, 0) for stk in account.universe: if eq_AroonUp[stk] - eq_AroonDown[stk] > 50: buyList.append(stk) for stk in buyList[:]: if stk not in account.universe or account.referencePrice[stk] == 0 or np.isnan(account.referencePrice[stk]): buyList.remove(stk) for stk in buyList: order(stk, account.referencePortfolioValue/account.referencePrice[stk]/len(buyList)) ``` ![](https://box.kancloud.cn/2016-07-30_579cbb027cf9f.jpg) 可以看出,策略在股市處于震蕩市和牛市中,表現很好;而在熊市和暴跌中,表現的非常差,最大回撤很大。這從阿隆指標的構造中,就可以理解,阿隆指標是一個跟蹤趨勢的指標,在震蕩市和牛市中,都能精選出股票,超越指數;然而在暴跌中,處于上升趨勢的股票可能跌的更慘,傾巢之下,焉有完卵。。。 ## 四、運用Aroon指標來擇時 前文說到阿隆指標是一個跟蹤趨勢的指標,既然如此,我們為什么不把它用來擇時呢? ```py def aroonIndex(account,timeLength=20): #構建指數阿隆指標 indexSeries = pd.Series(account.get_symbol_history('benchmark', timeLength)['closeIndex']) indexAronUp = (nlargest(1,range(len(indexSeries)),key=indexSeries.get)[0]+1)*100/timeLength indexAronDown = (nsmallest(1,range(len(indexSeries)),key=indexSeries.get)[0]+1)*100/timeLength indexOsc = indexAronUp - indexAronDown return indexOsc ``` 當`indexOsc > 0`時,我們大致認為現在的市場環境沒有那么差,可以考慮開倉,編寫如下策略。 ```py start = '2009-08-01' # 回測起始時間 end = '2015-08-31' # 回測結束時間 benchmark = 'HS300' # 策略參考標準 universe = set_universe('HS300') # 證券池,支持股票和基金 capital_base = 100000 # 起始資金 freq = 'd' # 策略類型,'d'表示日間策略使用日線回測,'m'表示日內策略使用分鐘線回測 refresh_rate = 10 # 調倉頻率,表示執行handle_data的時間間隔,若freq = 'd'時間間隔的單位為交易日,若freq = 'm'時間間隔為分鐘 def initialize(account): # 初始化虛擬賬戶狀態 pass def handle_data(account): # 每個交易日的買入賣出指令 eq_AroonUp = aroonUp(account,20) eq_AroonDown = aroonDown(account,20) index_osc = aroonIndex(account,20) buyList = [] for stk in account.valid_secpos: order_to(stk, 0) if index_osc > 0: for stk in account.universe: if eq_AroonUp[stk] - eq_AroonDown[stk] > 50: buyList.append(stk) for stk in buyList[:]: if stk not in account.universe or account.referencePrice[stk] == 0 or np.isnan(account.referencePrice[stk]): buyList.remove(stk) for stk in buyList: order(stk, account.referencePortfolioValue/account.referencePrice[stk]/len(buyList)) ``` ![](https://box.kancloud.cn/2016-07-30_579cbb0293c03.jpg) 可以看出運用阿隆指標來擇時的效果還是不錯的,震蕩市能跑贏指數,牛市的收益基本可以吃到,暴跌也幾乎完美的規避了!缺點就是最大回測還是偏大,可以考慮讓條件更嚴格,讓`indexOsc > 50`。 ```py start = '2009-08-01' # 回測起始時間 end = '2015-08-31' # 回測結束時間 benchmark = 'HS300' # 策略參考標準 universe = set_universe('HS300') # 證券池,支持股票和基金 capital_base = 100000 # 起始資金 freq = 'd' # 策略類型,'d'表示日間策略使用日線回測,'m'表示日內策略使用分鐘線回測 refresh_rate = 10 # 調倉頻率,表示執行handle_data的時間間隔,若freq = 'd'時間間隔的單位為交易日,若freq = 'm'時間間隔為分鐘 def initialize(account): # 初始化虛擬賬戶狀態 pass def handle_data(account): # 每個交易日的買入賣出指令 eq_AroonUp = aroonUp(account,20) eq_AroonDown = aroonDown(account,20) index_osc = aroonIndex(account,20) buyList = [] for stk in account.valid_secpos: order_to(stk, 0) if index_osc > 50: for stk in account.universe: if eq_AroonUp[stk] - eq_AroonDown[stk] > 50: buyList.append(stk) for stk in buyList[:]: if stk not in account.universe or account.referencePrice[stk] == 0 or np.isnan(account.referencePrice[stk]): buyList.remove(stk) for stk in buyList: order(stk, account.referencePortfolioValue/account.referencePrice[stk]/len(buyList)) ``` ![](https://box.kancloud.cn/2016-07-30_579cbb02ab6df.jpg) 將擇時條件設置更嚴格后,最大回撤果然有所下降,但年化收益率也有大幅下降。從回測圖形中,也可以明顯看到,指標具有很強的滯后性,往往是指數開始漲了一段時間,策略才開始開倉買入。將`indexOsc`條件設置的越嚴格,滯后性表現的就越明顯,這樣雖然可以提高正確率,減小最大回撤,但有許多收益也錯過了。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看