TA-Lib install

投稿者: | 2023年1月8日

PythonでFXのテクニカル分析を行うために、TA-Libをinstall。pipでinstallを試みるも、errrorがでる。

”ta_libc.h”が見つからないということで、本家のTroubleshootingに従って、TA-Lib libraryをinstallする。指示通りに”ta-lib-0.4.0-msvc.zip”をdownloadし展開してできる”ta-lib” folderをC直下に移動し、”C\:ta-lib”とする。再度pipを試みたが、大量の未解決外部参照errorが出る。

ネットで調べると、どうもWindows用の64bit compilerで再度コンパイルする必要があるようだ。visual studioのtoolであるx86_x64_Cross Tools Command Prompt for VS 2019を立ち上げで、”C:\ta-lib\c\make\cdr\win32\msvc”へ移動し、namkeを実行するとerror無くcompile終了。

再度pipでTA-Libをinstall完了。

TA-Libを以下のcodeでtestを行った。2022年USDJPYの終値、200日移動平均線、RSI、Bolinger Bands(±2σ)をPlotした。問題なく動作しているようだ。

import yfinance as yf
import talib as ta
import pandas as pd
import matplotlib.pyplot as plt

USDJPY = "USDJPY=X"
EURUSD = "EURUSD=X"
GBPUSD = "GBPUSD=X"
AUDUSD = "AUDUSD=X"
USDCHF = "USDCHF=X"
EURGBP = "EURGBP=X"
EURJPY = "EURJPY=X"
GBPJPY = "GBPJPY=X"
AUDJPY = "AUDJPY=X"
NZDJPY = "NZDJPY=X"
CHFJPY = "CHFJPY=X"
ZARJPY = "ZARJPY=X"
EURCHF = "EURCHF=X"

START_DAY = "2022-01-01"
END_DAY = "2022-12-31"

usdjpy = yf.download(USDJPY, start=START_DAY,end=END_DAY)
eurusd = yf.download(EURUSD, start=START_DAY,end=END_DAY)
gbpusd = yf.download(GBPUSD, start=START_DAY,end=END_DAY)
audusd = yf.download(AUDUSD, start=START_DAY,end=END_DAY)
usdchf = yf.download(USDCHF, start=START_DAY,end=END_DAY)
eurgbp = yf.download(EURGBP, start=START_DAY,end=END_DAY)
eurjpy = yf.download(EURJPY, start=START_DAY,end=END_DAY)
gbpjpy = yf.download(GBPJPY, start=START_DAY,end=END_DAY)
audjpy = yf.download(AUDJPY, start=START_DAY,end=END_DAY)
nzdjpy = yf.download(NZDJPY, start=START_DAY,end=END_DAY)
chfjpy = yf.download(CHFJPY, start=START_DAY,end=END_DAY)
zarjpy = yf.download(ZARJPY, start=START_DAY,end=END_DAY)
eurchf = yf.download(EURCHF, start=START_DAY,end=END_DAY)

usdjpy['MA'] = ta.SMA(usdjpy['Close'],200)
usdjpy['RSI'] = ta.RSI(usdjpy['Close'],14)
usdjpy["Upper2"],usdjpy["Middle"],usdjpy["Lower2"] = ta.BBANDS(usdjpy['Close'],timeperiod=25, nbdevup=2,nbdevdn=2,matype=0)

fig, (ax0, ax1, ax2) = plt.subplots(3, 1, sharex=True, figsize=(12, 8))
ax0.plot(usdjpy['Close'], label='Close')
ax0.plot(usdjpy['MA'], label='SMA 20')
ax0.set_xlabel('Date')
ax0.set_ylabel('Close')
ax0.grid()

ax1.plot(usdjpy['RSI'], label='RSI')
ax1.set_xlabel('Date')
ax1.set_ylabel('RSI')
ax1.grid()

ax2.plot(usdjpy['Close'], label='Close')
ax2.plot(usdjpy['Upper2'], label='Upper2')
ax2.plot(usdjpy['Middle'], label='Middle')
ax2.plot(usdjpy['Lower2'], label='Lower2')
ax2.set_xlabel('Date')
ax2.set_ylabel('Bollinger Bands')
ax2.grid()

fig.tight_layout()
plt.show()

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です