中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

用Python可視化股票指標

發布時間:2020-08-03 12:35:14 來源:網絡 閱讀:5837 作者:youerning 欄目:編程語言

用Python可視化股票指標

一個完整的量化交易策略指考慮到交易的方方面面,但是能不能賺錢,誰知道呢 :)

但是一個量化交易可以通過回測系統建立信心然后讓其一如既往的運行,以達到讓錢生錢的目的,并且是自動的。

筆者主要談純技術面的量化交易,基本面的一些情況并不好處理及量化,我也暫時沒有涉及。

量化交易

一個完整的量化交易策略,個人覺得應該包含以下兩個部分:

  • 交易策略
  • 資金管理

交易策略

一個完整的交易策略應該包含何時買,何時賣。

到底應該如何買賣,市場上大致分為兩個技術流派。

  • 趨勢跟隨
  • 價值回歸

趨勢跟隨

這個流派認為,股票的走勢是有延續性的,所以買賣點的機會在于抓住走勢。

代表指標: MACD, 移動平均線。

評語: 半年不開張,開張吃半年。

價值回歸

這個流派認為,股票是有內在價值的,雖然無序的來回跳動,但是自始至終圍繞著自己的內在價值來回波動,所以買賣的機會抓住股票的超買,超賣點來進行買賣。

代表指標: RSI。

評語: 積少成多。

無論是趨勢跟隨還是價值回歸,其實還是沒有解決買賣的最核心的問題,即到底何時買賣,雖然每個流派都有它的解決方案,但是它的方案卻是拋出了一個新的問題來解決我們要解決的問題。

不過這些問題是存在一些技術指標來輔助我們觀察走勢以及超買超賣的。

技術指標

這里主要討論一下常用的技術指標,比如MACD, 均線, RSI.除此之外還有一些有意思的圖形指標,通過判斷圖表的形狀來判斷買賣,而圖形派是既能做趨勢跟隨也能做價值回歸

下面是它們的計算公式及介紹。

MACD

MACD稱為異同移動平均線,是從雙指數移動平均線發展而來的,由快的指數移動平均線(EMA12)減去慢的指數移動平均線(EMA26)得到快線DIF,再用2×(快線DIF-DIF的9日加權移動均線DEA)得到MACD柱。--- 摘自百度百科

這個指標的快線DIF是是兩個指數平均線的差,所以當走勢上揚的時候,會是正數,而上揚的曲率很大的時候則也會迅速變大,而它的DEA自然是在其下方,而趨勢向下的時候相反。所以這個指標可以反映出歷史的走勢,并且過濾一部分并沒有明顯趨勢的走勢,但是如果沒有明顯走勢則是交叉死叉來回糾纏,對于局勢的判斷就不太明顯。

移動平均線

移動平均線,Moving Average,簡稱MA,MA是用統計分析的方法,將一定時期內的證券價格(指數)加以平均,并把不同時間的平均值連接起來,形成一根MA,用以觀察證券價格變動趨勢的一種技術指標。--- 摘自百度百科

移動平均線應該是應用最廣泛的技術指標了,因為幾乎所有的交易軟件都會繪制移動平均線,它就是反應了歷史的趨勢,走勢向上則向上,反之亦然。

RSI

N日RSI =N日內收盤漲幅的平均值/(N日內收盤漲幅均值+N日內收盤跌幅均值) × 100 --- 摘自百度百科

RSI很有意思,如果N日內全是上漲則是100,全是下跌則是0,所以100代表市場太樂觀,0代表市場太悲觀,這在走勢震蕩的時候自然有用,但是如果就是走勢一路上揚,那么其實不是太樂觀,而是市場就是如此,這個時候不應該反向操作。

蠟燭圖

即我們熟悉的K線圖,通過開盤價,最高價,最低價,表示一個時間周期的交易情況,蠟燭圖有許多的有意義圖形,這里主要說幾個我覺得有點道理的圖形,長實體,十字星

長實體指單根k線的最高價與最低價相差很大,然后收盤價與開盤價分別非常靠近最高價最低價。之所以這樣是因為買方或者賣方非常強勢。可以用來推測后面的走勢,可用作趨勢跟隨。

十字星指開盤價與收盤價的差距非常小,幾乎重合,然后有一部分的影線。之所以這樣是因為買方賣方反復糾纏,卻誰又干不過誰,可以用來推測局勢的反轉,可用作價值回歸。

最近的上證指數很有意思,這兩個圖形啥都有。

用Python可視化股票指標

所有技術指標都有其內在的含義,通過觀察它的計算公式就知道,而且所有技術指標都存在一樣的問題,那就是滯后性,或者說只是反映了歷史的走勢,不過,這是理所應當的,未來還未來。如果哪個指標可以預測未來,這個未來就太沒意思了。

總結而言,無論是主觀交易還是通過技術指標判斷而進行交易,最終的判斷在于決策者的經驗,這個經驗也許可以量化也許不可以量化。可以量化自然是最好的,不可以量化那也沒問題,只要能掙錢不就夠了嘛,不過是手動跟自動的區別。

可視化

多說無益,讓我們看看這些指標的買賣情況吧。

這里使用上證指數

import matplotlib.pyplot as plt
import matplotlib as mpl
import pandas as pd
import talib
import tushare as ts
# pip install https://github.com/matplotlib/mpl_finance/archive/master.zip
from mpl_finance import candlestick_ohlc
from matplotlib.pylab import date2num

# 使用ggplot樣式,好看些
mpl.style.use("ggplot")
# 獲取上證指數數據
data = ts.get_k_data("000001", index=True, start="2019-01-01")
# 將date值轉換為datetime類型,并且設置成index
data.date = pd.to_datetime(data.date)
data.index = data.date

# 計算MACD指標數據
data["macd"], data["sigal"], data["hist"] = talib.MACD(data.close)

# 計算移動平均線
data["ma10"] = talib.MA(data.close, timeperiod=10)
data["ma30"] = talib.MA(data.close, timeperiod=30)

# 計算RSI
data["rsi"] = talib.RSI(data.close)

# 計算MACD指標數據
data["macd"], data["sigal"], data["hist"] = talib.MACD(data.close)

# 計算移動平均線
data["ma10"] = talib.MA(data.close, timeperiod=10)
data["ma30"] = talib.MA(data.close, timeperiod=30)

# 計算RSI
data["rsi"] = talib.RSI(data.close)

# 繪制第一個圖
fig = plt.figure()
fig.set_size_inches((16, 20))

ax_canddle = fig.add_axes((0, 0.7, 1, 0.3))
ax_macd = fig.add_axes((0, 0.45, 1, 0.2))
ax_rsi = fig.add_axes((0, 0.23, 1, 0.2))
ax_vol = fig.add_axes((0, 0, 1, 0.2))

data_list = []
for date, row in data[["open", "high", "low", "close"]].iterrows():
    t = date2num(date)
    open, high, low, close = row[:]
    datas = (t, open, high, low, close)
    data_list.append(datas)

# 繪制蠟燭圖
candlestick_ohlc(ax_canddle, data_list, colorup='r', colordown='green', alpha=0.7, width=0.8)
# 將x軸設置為時間類型
ax_canddle.xaxis_date()
ax_canddle.plot(data.index, data.ma10, label="MA10")
ax_canddle.plot(data.index, data.ma30, label="MA30")
ax_canddle.legend()

# 繪制MACD
ax_macd.plot(data.index, data["macd"], label="macd")
ax_macd.plot(data.index, data["sigal"], label="sigal")
ax_macd.bar(data.index, data["hist"] * 2, label="hist")
ax_macd.legend()

# 繪制RSI
# 超過85%設置為超買, 超過25%為超賣
ax_rsi.plot(data.index, [80] * len(data.index), label="overbuy")
ax_rsi.plot(data.index, [25] * len(data.index), label="oversell")
ax_rsi.plot(data.index, data.rsi, label="rsi")
ax_rsi.set_ylabel("%")
ax_rsi.legend()

# 將volume除以100w
ax_vol.bar(data.index, data.volume / 1000000)
# 設置成百萬位單位
ax_vol.set_ylabel("millon")
ax_vol.set_xlabel("date")
fig.savefig("index.png")

# 標記移動平均線買入賣出點
for date, point in data[["ma_point"]].itertuples():
    if math.isnan(point):
        continue
    if point > 0:
        ax_canddle.annotate("",
                    xy=(date, data.loc[date].close),
                    xytext=(date, data.loc[date].close - 10),
                    arrowprops=dict(facecolor="r",
                                    alpha=0.3,
                                    headlength=10,
                                    width=10))
    elif point < 0:
        ax_canddle.annotate("",
                    xy=(date, data.loc[date].close),
                    xytext=(date, data.loc[date].close + 10),
                    arrowprops=dict(facecolor="g",
                                    alpha=0.3,
                                    headlength=10,
                                    width=10))

如果通過pip install ta-lib安裝不上,可以通過地址http://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib下載響應的.whl包進行安裝

顯示結果如下:

用Python可視化股票指標

如果簡單的通過指標的金叉死叉會出現反常多的買點賣點,所以這里只是標記了移動平均線的買賣點。

通過簡單觀察我們發現RSI在這段時間內沒有超賣的情況也就沒有買入點。

總結

沒有萬能的指標,關鍵在于使用指標的人。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凤城市| 鞍山市| 全南县| 获嘉县| 临沭县| 卢龙县| 梧州市| 尖扎县| 房产| 昆山市| 龙南县| 兴山县| 汉源县| 礼泉县| 师宗县| 左贡县| 鄄城县| 二连浩特市| 乐亭县| 烟台市| 资中县| 信阳市| 潮安县| 咸丰县| 新乡市| 吉林市| 霍城县| 剑川县| 雅安市| 大丰市| 泊头市| 赤水市| 金乡县| 新巴尔虎右旗| 清苑县| 天峻县| 晋江市| 辽宁省| 沐川县| 兰州市| 台安县|