> 백엔드 개발 > 파이썬 튜토리얼 > Python 코드를 사용하여 복잡한 금융 차트를 만드는 방법은 무엇입니까?

Python 코드를 사용하여 복잡한 금융 차트를 만드는 방법은 무엇입니까?

WBOY
풀어 주다: 2023-04-24 18:28:08
앞으로
1382명이 탐색했습니다.

Python 코드를 사용하여 복잡한 금융 차트를 만드는 방법은 무엇입니까?

소개

금융에 적용되는 프로그래밍과 기술의 확산은 불가피하며, 성장은 결코 쇠퇴할 것 같지 않습니다. 응용 프로그래밍의 가장 흥미로운 부분 중 하나는 과거 또는 실시간 주식 데이터를 해석하고 시각화하는 것입니다.

이제 Python에서 일반 데이터를 시각화하려면 matplotlib, seaborn 등과 같은 모듈이 사용되지만 금융 데이터를 시각화할 때는 대화형 시각적 기능이 내장된 Plotly가 가장 먼저 선택됩니다. 여기서는 mplfinance 라이브러리 matplotlib의 형제 라이브러리에 지나지 않는 이름 없는 영웅을 소개하고 싶습니다.

우리 모두는 matplotlib 패키지가 얼마나 다재다능하고 모든 유형의 데이터를 쉽게 그릴 수 있는지 알고 있습니다. matplotlib 패키지를 사용하면 촛대와 같은 금융 차트도 그릴 수 있지만 처음부터 시작해야 합니다.

최근에 저는 고급 금융 시각화 제작을 전담하는 mplfinance라는 별도의 모듈이 있다는 것을 알게 되었습니다. 이 기사에서는 이 Python 라이브러리에 대해 자세히 살펴보고 다양한 유형의 차트를 생성하는 기능을 살펴보겠습니다.

패키지 가져오기

Python 환경으로 필요한 패키지를 가져오는 것은 필수 단계입니다. 이 기사에서는 데이터 프레임을 처리하는 팬더, API 호출 및 주식 데이터 추출 요청, 금융 차트를 생성하는 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 엔드포인트를 사용하여 Amazon의 과거 주식 데이터를 가져오겠습니다. 그때까지 12data.com에 대한 참고 사항: 12data는 모든 유형의 시장 데이터에 대한 수많은 API 엔드포인트를 갖춘 선도적인 시장 데이터 제공업체 중 하나입니다. Twelve Data에서 제공하는 API와 상호 작용하는 것은 매우 쉽고 최고의 문서 중 하나입니다. 또한 12data.com에 계정이 있는지 확인해야 API 키(API를 사용하여 데이터를 추출하는 데 중요한 요소)에 액세스할 수 있습니다.

Python 구현

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()
로그인 후 복사

출력:

Python 코드를 사용하여 복잡한 금융 차트를 만드는 방법은 무엇입니까?

코드 설명

가장 먼저 하는 일은 주식 기호('symbol')로 시작하는 'get_historical_data'라는 함수를 정의하는 것입니다. 과거 데이터의 시작 날짜('start_date')를 매개변수로 사용합니다.

함수 내에서 API 키와 URL을 정의하고 해당 변수에 저장합니다.

다음으로 'get' 함수를 사용하여 JSON 형식의 과거 데이터를 추출하고 이를 'raw_df' 변수에 저장합니다. 원시 JSON 데이터를 정리하고 형식을 지정한 후 이를 빈 Pandas DataFrame으로 반환합니다.

마지막으로 생성된 함수를 호출하여 2021년 초부터 Amazon의 과거 데이터를 가져와 "amzn" 변수에 저장합니다.

OHLC 차트

OHLC 차트는 각 기간의 시가, 고가, 저가, 종가를 보여주는 막대 차트입니다.

OHLC 차트는 일정 기간 동안 4가지 주요 데이터 포인트를 보여주기 때문에 유용하며, 많은 트레이더는 종가를 가장 중요하게 생각합니다. 또한 운동량의 증가 또는 감소를 보여주는 데 도움이 됩니다. 개폐가 멀면 성능이 강하고, 개폐가 가까우면 성능이 우유부단하거나 약합니다.

최고 및 최저는 해당 기간의 전체 가격 범위를 표시하여 변동성을 평가하는 데 도움이 됩니다1[2]. 이제 mplfinance를 사용하여 OHLC 차트를 만들려면 코드 한 줄만 있으면 됩니다.

mf.plot(amzn.iloc[:-50,:])
로그인 후 복사

위 코드에서는 먼저 이전에 추출한 Amazon OHLC 데이터를 마지막 50개 판독값으로 분할하는 플롯 함수를 호출합니다. 이 작업의 목적은 요소가 표시되도록 다이어그램을 더 명확하게 만드는 것입니다. 위의 한 줄의 코드는 다음과 같은 출력을 생성합니다.

Python 코드를 사용하여 복잡한 금융 차트를 만드는 방법은 무엇입니까?

OHLC Chart

Candlestick Chart

트레이더는 촛대 차트를 사용하여 과거 패턴을 기반으로 가능한 가격 변동을 결정합니다. 캔들스틱은 트레이더가 지정한 기간 동안 4가지 가격대(시가, 종가, 고가, 저가)를 표시하므로 트레이딩 시 유용합니다.

이 유형의 차트에서 가장 흥미로운 부분은 트레이더가 시장 자체의 주요 동인인 정서를 읽는 데에도 도움이 된다는 것입니다2[3]. mplfinance를 사용하여 촛대 차트를 생성하려면 함수의 유형 매개변수 플롯인 또 다른 매개변수를 추가하면 되며 그 안에 촛불이 언급되어 있습니다. 코드는 다음과 같습니다.

mf.plot(amzn.iloc[:-50,:], type = 'candle')
로그인 후 복사

위 코드는 다음과 같은 촛대 차트를 생성합니다.

Python 코드를 사용하여 복잡한 금융 차트를 만드는 방법은 무엇입니까?

烛台图

砖形图

砖形图( Renko chart)是一种使用价格变动构建的图表,而不是像大多数图表那样同时使用价格和标准化时间间隔。该图表看起来像一系列砖块,当价格移动指定的价格金额时会创建一个新砖块,并且每个块都与前一个砖块成 45 度角(向上或向下)。Renko 图表的主要用途是过滤掉噪音并帮助交易者更清楚地看到趋势,因为所有小于框大小的运动都被过滤掉 3[4] 。

据我所知,mplfinance 是唯一提供 Renko 图表的 Python 库,也是我们接下来要看到的,这就是为什么这个包在金融可视化方面具有强大优势的原因。现在要创建一个 Renko,我们只需要在函数renko的type参数中指定plot。Renko 图表的代码如下所示:

mf.plot(amzn, type = 'renko')
로그인 후 복사

我们还可以向plot函数添加一个额外的参数,该参数是根据renko_params我们的需要和其他类似类型修改砖块大小的参数,但我更喜欢默认的。上面的代码生成了一个看起来像这样的砖形图:

Python 코드를 사용하여 복잡한 금융 차트를 만드는 방법은 무엇입니까?

砖形图

点数图

点数图,简称 P&F 图,类似于 Renko 图,它在不考虑时间流逝的情况下绘制资产的价格走势。与其他一些类型的图表(例如烛台)相反,烛台标志着资产在设定的时间段内的变动程度,而 P&F 图表使用由堆叠的 X 或 O 组成的列,每个列代表一定数量的价格变动。X 代表价格上涨,而 O 代表价格下跌。当价格反转反转量 4[5] 时,会在 O 之后形成新的 X 列或在 X 之后形成新的 O 列。

支持点数图的函数在其他地方找不到,只能在 mplfinance 库中找到,而且它还使我们可以通过仅pnf在函数的type参数中指定来创建图表的过程更容易plot。代码如下所示:

mf.plot(amzn, type = 'pnf')
로그인 후 복사

Python 코드를 사용하여 복잡한 금융 차트를 만드는 방법은 무엇입니까?

点数图

添加更多信息

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的参数。上述代码的输出如下所示:

Python 코드를 사용하여 복잡한 금융 차트를 만드는 방법은 무엇입니까?

保存图片

如果你想知道如何保存这些财务可视化中的任何一个,只需添加另一个参数,savefig即你只需提及其文件名的参数,其余部分将被处理。假设你想保存上面的图,那么你必须遵循的代码如下所示:

mf.plot(amzn,
mav = (10, 20),
type = 'candle',
volume = True,
savefig = 'amzn.png')
로그인 후 복사

这就是你为保存精彩的财务可视化所需要做的全部工作。很容易,对吧?

写在最后

在我看来,与Plotly或Altair等库相比,mplfinance是绘制金融数据最强大的库。本文只是简单介绍了使用mplfinance可以实现的功能,但是这个了不起的库附带了许多新特性。它允许我们添加自定义的技术指标数据,并与实际的图表一起绘制,我们可以自定义整个模板,甚至图表中的每一个元素,添加趋势线,等等。

这个库最好的部分是它的易用性,并帮助我们用一行代码生成高级的财务可视化。虽然像Plotly这样的包有创建这些图表的内置函数,但不可能在一行代码中完成。

mplfinance现在唯一的缺点是它糟糕的文档,这使得人们甚至不知道这个包是关于什么的。文档是一个至关重要的方面,当涉及到开源项目时,文档应该被认为是至关重要的。特别像mplfinance这样的关键和有用的项目必须有清晰文档,对其提供的工具和功能有明确的解释。

到这里,你看完了这篇文章。如果你忘记了图表的代码,不要担心,最后我提供了完整的源代码。你也可以收藏本文,等需要用到的时候再查看。

完整代码

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 코드를 사용하여 복잡한 금융 차트를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿