Python株式定量取引(9)--- TA-Libライブラリを使用して、株価トレンドの比較チャートを作成します

すべての空は祝福なしでスリランカの人々を送り出します、知恵は最初になります;この知恵が送られるとき、浮かぶものは自立し、傲慢は自己完結します;施設が穏やかで良い、黙示録は完了です。

序文

多くの市場株式取引ソフトウェアでは、各インターフェースに1つのインジケーターチャートが表示されるだけでなく、多くの場合、株式取引ソフトウェアはすべてのインジケーターチャートを並べて配置し、比較効果を実現します。これの利点は、すべての種類のインジケーターを表示できることです。より直感的に。分析のためのさまざまな指標と組み合わせた指標。以前のブログ投稿と同様に、単一のインジケーターが間違っていることが多く、参照値がありません。

したがって、このブログ投稿では、TA-Libライブラリを使用して、K-line、移動平均、出来高、KDJ、およびMACDの比較指標の要約チャートを実装します。

さまざまな指標を計算する

これらの指標を描画する必要がある場合、最初に行う必要があるのは、これらの指標を描画するための基本的なパラメータを取得することであることは間違いありません。以下では、TA-Libライブラリを使用して1つずつ計算します。

(1)まず、半年間の株式のデータを取得する必要があります。例として、Goertekを取り上げます。

import akshare as ak

df = ak.stock_zh_a_daily(symbol="sz002241", start_date="20200701", end_date="20210130",
                                 adjust="qfq")
df.to_excel("歌尔股份year.xlsx")

(2)次に、一般的に使用される1日の移動平均10、30、60など、さまざまな移動平均を計算します。

import pandas as pd
import talib
df = pd.read_excel("歌尔股份year.xlsx")
df["SMA10"]=talib.SMA(df['close'],timeperiod=10)
df["SMA30"]=talib.SMA(df['close'],timeperiod=30)
df["SMA60"]=talib.SMA(df['close'],timeperiod=60)
df['SMA10'].fillna(method="bfill",inplace=True)
df['SMA30'].fillna(method="bfill",inplace=True)
df['SMA60'].fillna(method="bfill",inplace=True)

(3)取引量を計算する

red_pred = np.where(df["close"] > df["open"], df["volume"], 0)
blue_pred = np.where(df["close"] < df["open"], df["volume"], 0)

(4)KDJを計算する

df['K'], df['D'] = talib.STOCH(df['high'].values, df['low'].values, df['close'].values, fastk_period=9, slowk_period=3,
                               slowk_matype=0, slowd_period=3, slowd_matype=0)
df['K'].fillna(0,inplace=True)
df['D'].fillna(0,inplace=True)
df['J']=3*df['K']-2*df['D']

(5)MACDを計算する

dif, dea, bar = talib.MACD(df['close'].values, fastperiod=12, slowperiod=26, signalperiod=9)
dif[np.isnan(dif)], dea[np.isnan(dea)], bar[np.isnan(bar)] = 0, 0, 0
red_bar = np.where(bar > 0, 2 * bar, 0)
blue_bar = np.where(bar < 0, 2 * bar, 0)

お絵かき

ここでは、K線チャートと移動平均チャートが一番上にあります。ボリュームはK線チャートの下にあり、KDJチャートはボリュームの下にあり、MACDチャートはKDJチャートの下にあるため、チャート全体は4になります。行と1列。まず、グラフィックを描画するためのキャンバスを作成します。

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import mpl_finance as mpf
import talib
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
fig, axes = plt.subplots(4, 1, sharex=True, figsize=(15, 10))
ax1, ax2, ax3, ax4 = axes.flatten()

(1)K線チャートと移動平均チャートを描く

mpf.candlestick2_ochl(ax1, df["open"], df["close"], df["high"], df["low"], width=0.6, colorup='r',
                      colordown='green',
                      alpha=1.0)
ax1.plot(np.arange(0, len(df)), df['SMA10'])  # 绘制10日均线
ax1.plot(np.arange(0, len(df)), df['SMA30'])  # 绘制30日均线
ax1.plot(np.arange(0, len(df)), df['SMA60'])  # 绘制60日均线
ax1.set(ylabel=u"K线图")

(2)ドローボリューム

ax2.bar(np.arange(0, len(df)), red_pred, facecolor="red")
ax2.bar(np.arange(0, len(df)), blue_pred, facecolor="blue")
ax2.set(ylabel=u"成交量")

(3)KDJの描画

ax3.plot(df["date"], df["K"], label ="K")
ax3.plot(df["date"], df["D"], label ="D")
ax3.plot(df["date"], df["J"], label ="J")
ax3.legend()
ax3.set(ylabel=u"KDJ")

(4)MACDを引く

ax4.plot(np.arange(0, len(df)), dif)
ax4.plot(np.arange(0, len(df)), dea)
ax4.bar(np.arange(0, len(df)), red_bar, color="red")
ax4.bar(np.arange(0, len(df)), blue_bar, color="blue")
ax4.set(ylabel=u"MACD")
ax1.xaxis.set_major_locator(ticker.MaxNLocator(20))
def format_date(x, pos=None):
    if x < 0 or x > len(df['date']) - 1:
        return ''
    return df['date'][int(x)]


ax1.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
plt.setp(plt.gca().get_xticklabels(), rotation=45, horizontalalignment='right')
plt.show()

実行後、表示される効果チャートは次の図のようになります。
サマリーチャート
特記事項:一部の小規模パートナーは非常に混乱している可能性があります。他のストックソフトウェアが1対1で対応している理由、およびKDJとMACDの前に欠員がある理由?実際、実際のKDJおよびMACDダイアグラムの前にいくつかの欠員があり、他のソフトウェアの期間が長いため、平均的なユーザーは10年前のデータを見ることはなく、値を入力することさえありません。以前の直接計算方法に従って、それ自体でデータを1つずつ許可します。対応しますが、過去数日間のデータが完了しても意味がありません。曲線内の移動平均を持つパラメーターは、前の部分で空の値または無効な値を引き起こすことに注意してください。これは避けられません。

おすすめ

転載: blog.csdn.net/liyuanjinglyj/article/details/113430285
おすすめ