您好,登錄后才能下訂單哦!
今天小編給大家分享一下怎么使用Python代碼創建復雜的財務圖表的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
將所需的包導入到我們的 python 環境中是一個必不可少的步驟。在本文中,我們需要三個包,它們是處理數據幀的 Pandas、調用 API 和提取股票數據的requests,以及創建金融圖表的 mplfinance。對于尚未安裝這些軟件包的人,請將此代碼復制到你的終端中:
pip install pandas pip install requests pip install mplfinance
完成安裝包后,是時候將它們導入到我們的 python 環境中了。
import pandas as pd import requests import mplfinance as mf
現在,我們已經導入了所有必要的包。讓我們使用12data.com[1]提供的 API 端點拉取亞馬遜的歷史股票數據。在此之前,12data.com上的一條說明:12data是領先的市場數據提供商之一,擁有適用于所有類型市場數據的大量 API 端點。與十二數據提供的 API 交互非常容易,并且擁有有史以來最好的文檔之一。此外,請確保你在12data.com上擁有一個帳戶,只有這樣,你才能訪問你的 API 密鑰(使用 API 提取數據的重要元素)。
def get_historical_data(symbol, start_date): api_key = 'YOUR API KEY' api_url = f'https://api.twelvedata.com/time_series?symbol={symbol}&interval=1day&outputsize=5000&apikey={api_key}' raw_df = requests. get(api_url).json() df = pd.DataFrame(raw_df['values']).iloc[::-1].set_index('datetime').astype(float) df = df[df.index >= start_date] df.index = pd.to_datetime(df.index) return df amzn = get_historical_data('AMZN', '2021-01-01') amzn.tail()
輸出:
代碼說明
我們做的第一件事是定義一個名為'get_historical_data'的函數,該函數以股票代碼('symbol')和歷史數據的開始日期('start_date')為參數。
在函數內部,我們定義了 API 密鑰和 URL,并將它們存儲到各自的變量中。
接下來,我們使用'get'函數以 JSON 格式提取歷史數據并將其存儲到 'raw_df'變量中。在對原始 JSON 數據進行一些清理和格式化處理之后,我們以一個空的 Pandas DataFrame 的形式返回它。
最后,我們調用 created 函數來拉取亞馬遜從 2021 年初開始的歷史數據,并將其存儲到"amzn"變量中。
OHLC 圖表是一種條形圖,顯示每個時期的開盤價、最高價、最低價和收盤價。
OHLC 圖表很有用,因為它們顯示了一段時間內的四個主要數據點,許多交易者認為收盤價是最重要的。它也有助于顯示增加或減少的動量。開合相距較遠時表現強勁,開合相近時則表現優柔寡斷或動能弱。
最高價和最低價顯示了該時期的完整價格范圍,有助于評估波動性1[2]。現在要使用 mplfinance 創建一個 OHLC 圖表,只需一行代碼:
mf.plot(amzn.iloc[:-50,:])
在上面的代碼中,我們首先調用該plot函數,并在其中將我們之前提取的 Amazon OHLC 數據切片為最后 50 個讀數,這樣做的目的只是使圖表更清晰,以便元素可見。上面的單行代碼將產生如下所示的輸出:
OHLC圖表
交易者使用燭臺圖根據過去的模式確定可能的價格變動。燭臺在交易時很有用,因為它們在交易者指定的整個時間段內顯示四個價格點(開盤價、收盤價、最高價和最低價)。
這種類型的圖表最有趣的部分是它還可以幫助交易者閱讀情緒,這是市場本身的首要驅動因素 2[3]。要使用 mplfinance 生成燭臺圖,我們只需添加另一個參數,即函數的type參數plot并candle在其中提及。代碼如下所示:
mf.plot(amzn.iloc[:-50,:], type = 'candle')
上面的代碼將生成一個如下所示的燭臺圖表:
燭臺圖
磚形圖( Renko chart)是一種使用價格變動構建的圖表,而不是像大多數圖表那樣同時使用價格和標準化時間間隔。該圖表看起來像一系列磚塊,當價格移動指定的價格金額時會創建一個新磚塊,并且每個塊都與前一個磚塊成 45 度角(向上或向下)。Renko 圖表的主要用途是過濾掉噪音并幫助交易者更清楚地看到趨勢,因為所有小于框大小的運動都被過濾掉 3[4] 。
據我所知,mplfinance 是唯一提供 Renko 圖表的 Python 庫,也是我們接下來要看到的,這就是為什么這個包在金融可視化方面具有強大優勢的原因。現在要創建一個 Renko,我們只需要在函數renko的type參數中指定plot。Renko 圖表的代碼如下所示:
mf.plot(amzn, type = 'renko')
我們還可以向plot函數添加一個額外的參數,該參數是根據renko_params我們的需要和其他類似類型修改磚塊大小的參數,但我更喜歡默認的。上面的代碼生成了一個看起來像這樣的磚形圖:
磚形圖
點數圖,簡稱 P&F 圖,類似于 Renko 圖,它在不考慮時間流逝的情況下繪制資產的價格走勢。與其他一些類型的圖表(例如燭臺)相反,燭臺標志著資產在設定的時間段內的變動程度,而 P&F 圖表使用由堆疊的 X 或 O 組成的列,每個列代表一定數量的價格變動。X 代表價格上漲,而 O 代表價格下跌。當價格反轉反轉量 4[5] 時,會在 O 之后形成新的 X 列或在 X 之后形成新的 O 列。
支持點數圖的函數在其他地方找不到,只能在 mplfinance 庫中找到,而且它還使我們可以通過僅pnf在函數的type參數中指定來創建圖表的過程更容易plot。代碼如下所示:
mf.plot(amzn, type = 'pnf')
點數圖
mplfinance 包不僅限于生成不同類型的圖表,還使我們能夠通過添加簡單移動平均線 (SMA) 和交易量等附加指標使這些圖表更具洞察力。對于那些不知道這兩者的人來說,成交量是交易者在特定時間范圍內買賣的股票數量,而簡單移動平均線 (SMA) 只不過是特定時間段的平均價格。它是一種技術指標,廣泛用于創建交易策略。
用 matplotlib 繪制這些數據需要一千年,而 mplfinance 允許我們只用一行代碼就可以完成這項任務。除了type參數之外,我們只需要引入另外兩個參數,一個是mav我們必須指定每個 SMA 的回溯期的參數,另一個是volume我們必須提到的參數,True 如果我們想將成交量圖添加到我們的圖表中,或者False 我們不想。這兩個指標的代碼如下所示:
mf.plot(amzn, mav = (10, 20), type = 'candle', volume = True)
可以通過兩種方式修改和試驗上述代碼。第一種方法顯然是嘗試不同類型的圖表。在上述代碼中,我們提到我們的圖表類型是燭臺,但你可以將其更改為 OHLC、Renko 甚至 P&F 圖表,并觀察每個圖表及其兩個附加指標的外觀。下一個方法是使用mav我們可以添加任意數量的具有不同回顧期的 SMA的參數。上述代碼的輸出如下所示:
如果你想知道如何保存這些財務可視化中的任何一個,只需添加另一個參數,savefig即你只需提及其文件名的參數,其余部分將被處理。假設你想保存上面的圖,那么你必須遵循的代碼如下所示:
mf.plot(amzn, mav = (10, 20), type = 'candle', volume = True, savefig = 'amzn.png')
import pandas as pd import requests import mplfinance as mf # Extracting stock data def get_historical_data(symbol, start_date): api_key = 'YOUR API KEY' api_url = f'https://api.twelvedata.com/time_series?symbol={symbol}&interval=1day&outputsize=5000&apikey={api_key}' raw_df = requests.get(api_url).json() df = pd.DataFrame(raw_df['values']).iloc[::-1].set_index('datetime').astype(float) df = df[df.index >= start_date] df.index = pd.to_datetime(df.index) return df amzn = get_historical_data('AMZN', '2021-01-01') amzn.tail() # 1. OHLC Chart mf.plot(amzn.iloc[:-50,:]) # 2. Candlestick Chart mf.plot(amzn.iloc[:-50,:], type = 'candle') # 3. Renko Chart mf.plot(amzn, type = 'renko') # 4. Point and Figure Chart mf.plot(amzn, type = 'pnf') # 5. Technical chart mf.plot(amzn, mav = (10, 20), type = 'candle', volume = True) # 6. Plot customization mf.plot(amzn, mav = (5, 10, 20), type = 'candle', volume = True, figratio = (10,5), style = 'binance', title = 'AMZN STOCK PRICE', tight_layout = True) # 7. Saving the plot mf.plot(amzn, mav = (5, 10, 20), type = 'candle', volume = True, figratio = (10,5), style = 'binance', title = 'AMZN STOCK PRICE', tight_layout = True, savefig = 'amzn.png')
以上就是“怎么使用Python代碼創建復雜的財務圖表”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。