私は最近、「株式ビッグデータ分析に基づくPython入門実際の戦闘ビデオ教育バージョン」という本を出版しました。Jingdongリンク:https://item.jd.com/69241653952.html、MACD、KDJ、およびその他の指標を提供します。描画方法グラフの。ここでは、KDJアルゴリズムに基づいてKDJインジケーターラインを計算して描画します。
1KDJインジケーターの計算プロセス
KDJインジケーターは確率的インジケーターとも呼ばれ、GeorgeLane博士によって最初に提案されました。この指標には、強みと弱みの指標の長所、勢いの概念、および通常の価格範囲からの株価の偏差の程度を測定するために使用できる移動平均の利点が含まれています。
KDJ指標の算出処理は、最初に最高価格、最低価格と、指定した期間(通常9日)に発生した最後の取引日の終値を取得した後、未熟を計算することで、ランダムな比例関係を通じて3つの値RSVを作成し、滑らかな移動平均を使用して、これに基づいてK、D、およびJの値を計算します。計算が完了したら、KDJの値をグラフに描画して、株価の傾向を予測します。具体的なアルゴリズムを以下に示します。
最初のステップ:期間(n日、n週間など、nは通常9)のRSV値を計算します。RSVは未成熟確率インデックス値とも呼ばれ、K値、D値、およびJ値。n日周期の計算単位を例にとると、計算式は次のようになります。
n日RSV =(Cn-Ln)/(Hn-Ln)×100
このうち、Cnはn日目(通常は最終日)の終値、Lnはn日の範囲の最低価格、Hnはn日の範囲の最高価格です。上記の式によると、 RSV値の範囲は1〜100です。n週間のRSV値を計算する場合でも、Cnは最終日の終値ですが、LnとHnはn週間の最低価格と最高価格です。
ステップ2: RSVに従ってK値とD値を計算します。方法は次のとおりです。
その日のK値= 2/3×前日のK値+ 1/3×その日のRSV値
その日のD値= 2/3×前日のD値+ 1/3×その日のK値
計算プロセスでは、前日のK値またはD値がない場合は、代わりに数値50を使用できます。
実際の使用では、KDラインは通常9日周期で計算されます。上記の式によると、最初は過去9日間のRSV値、つまり未熟なランダム値を計算することです。計算式は9です。 -日RSV =(C-L9)÷(H9-L9)×100。各パラメーターの意味はステップ1で説明されており、このステップに示されているように、その日のK値とD値を計算します。
上記の式の平滑化係数2/3と1/3は変更できますが、株式市場取引の実践では、これら2つの値はデフォルトで2/3と1/3に設定されていることに注意してください。 。
3番目のステップ: J値を計算します。Jインデックスの計算式は次のとおりです。J= 3×K-2×D。使用の観点から、Jの本質は、K値とD値の間の偏差の程度を反映することです。その範囲は、上部で100を超え、下部で0未満になる可能性があります。
初期のKDJ指標はK-lineとD-lineのみでしたが、当時はKD指標とも呼ばれていましたが、分析技術の発達により、KD指標は徐々にKDJ指標に進化し、J指標の導入により改善する可能性があります。 KDJ指標の予測能力。
上記の3つのステップに従って毎日のK、D、Jの3つの値を計算した後、それらを接続してKDJインジケーターラインを確認します。
2静的KDJインジケーターラインを描画します
前のセクションで示したKDJアルゴリズムに従って、2018年9月から2019年5月までの株式「JinshiResources」(証券コード603505)のKDJトレンドチャートは、以下のサンプルプログラムdrawKDJ.pyに描画されます。
!/ usr / bin / env python 2#coding = utf-8 3 import matplotlib.pyplot as plt 4 import pandas as pd 5# 计計算KDJ 6 def calKDJ(df): 7 df ['MinLow'] = df ['Low '] .rolling(9、min_periods = 9).min() 8#いっぱいNaNデータ 9 df [' MinLow ']。fillna(value = df [' Low ']。expanding()。min()、inplace = True ) 10 df ['MaxHigh'] = df ['High']。rolling(9、min_periods = 9).max() 11 df ['MaxHigh']。fillna(value = df ['High']。expanding() .max()、inplace = True) 12 df ['RSV'] =(df ['Close']-df ['MinLow'])/(df ['MaxHigh']-df ['MinLow'])* 100 13# 範囲内のiのforループ14を介して各取引日のKDJ値を計算します(len(df)): 15 if i == 0:#初日 16 df.ix [i、 'K'] = 50 17 df.ix [i、 'D'] = 50 18 if i> 0:19 df.ix [i、 'K'] = df.ix [i- 1、 'K'] * 2/3 + 1/3 * df.ix [i、 'RSV'] 20 df.ix [i、 'D'] = df.ix [i-1、 'D'] * 2/3 + 1/3 * df.ix [i、 'K'] 21 df.ix [i、 'J'] = 3 * df.ix [i、 'K']-2 * df.ix [i 、 'D'] 22 return df
プログラムステートメントの6行目から22行目までで定義されているcalKDJメソッドでは、指定された時間範囲内のKDJ値が入力パラメーターdfに従って計算されます。
具体的な計算手順は、8行目でdf ['Low']。rolling(9、min_periods = 9).min()を使用して、各行(つまり、各取引日)の 'MinLow'属性の値を設定することです。 )から9日以内の最低終値(低)まで。
このセンテンスのみを実行した場合、1〜8取引日のMinLow属性値はNaNになるため、これらの取引日のMinLow属性値は、オンラインのプログラムコードを使用して9日以内の終値(低)に設定する必要があります。 9最小値。同様に、10行目のプログラムコードを使用して、各取引日の「MaxHigh」属性の値を9日以内の最高価格に設定し、11行目のfillnaメソッドを使用して「」の値を入力します。過去8日間のMaxHigh '属性。次に、アルゴリズムに従って、12行目の各取引日のRSV値を計算します。
RSV値を計算した後、14行目のforループを介して、各取引日を順番にトラバースし、トラバーサル中のKDJアルゴリズムに従って各取引日に対応するKDJ値を計算します。
最初の取引日である場合は、16行目と17行目のプログラムコードでK値とD値をデフォルトの50に設定することに注意してください。最初の取引日でない場合は、19行目と19行目を渡します。 20行のアルゴリズムがK値とD値を計算します。KとDの値を計算した後、21行目のプログラムコードを使用して、各取引日のJの値を計算します。
上記のコードから、DataFrameオブジェクトに関する3つの操作スキルを確認できます。
まず、9行目に示すように、変更したデータをDataFrameに書き戻す場合は、パラメーターinplace = Trueを追加する必要があります。
次に、12行目では、df ['Close']などの変数値が列の単位にあります。つまり、DataFrameでは、列の単位で直接操作できます。
第三に、16行目のコードdf.ix [i、 'K'] = 50で、ixはインデックス値とタグ値を介してオブジェクトにアクセスするために使用され、同様の機能を実現するlocメソッドとilocメソッドは次のようになります。アクセスするインデックス値を渡しました。
KDJ線を 引く24def drawKDJ(): 25 df = pd.read_csv( 'D:/stockData/ch8/6035052018-09-012019-05-31.csv'、encoding = ' gbk ')26 stockDataFrame = calKDJ(df) 27 print(stockDataFrame) 28#描画を開始 29 plt.figure() 30 stockDataFrame ['K']。plot(color = "blue"、label = 'K') 31 stockDataFrame ['D']。plot(color = " green "、label = 'D') 32 stockDataFrame ['J']。plot(color =" purple "、label = 'J') 33 plt.legend(loc = 'best')#画図 34#xを設定軸座標ラベルと回転角度major_index = stockDataFrame.index [stockDataFrame.index%10 == 0] 35 major_xtics = stockDataFrame ['Date'] [stockDataFrame。index%10 == 0]index%10 == 0] 36 plt.xticks(major_index、major_xtics) 37 plt.setp(plt.gca()。get_xticklabels()、rotation = 30) 38#グリッド線を使用してグリッドスタイルを設定 39 plt.grid(linestyle = '-。') 40 plt.title( "KDJ画像of Jinshi Resources ")41 plt.rcParams ['font.sans-serif'] = ['SimHei'] 42 plt.show() 43#メソッド 44 drawKDJ()を呼び出す
KDJの描画操作は、24行目のdrawKDJメソッドに実装されています。重要なステップは、25行目のプログラムコードを介して指定されたcsvファイルから株式取引データを読み取り、plotメソッドを呼び出して、30行目から32行目までのプログラムコードに3つの異なる色で描画することです。KDJ行の場合、ラベルは描画時にlabelパラメータで設定されるため、33行目のプログラムコードを実行して凡例を描画できます。
x軸のテキストラベルと回転角は、34行目から37行目までのコードで設定されています。コードのこの部分は、MACDインジケーターラインを描画するための前のコードと非常によく似ています。 x軸なので、stockDataFrame .index%10 == 0を使用し、インデックス値が10の倍数である日付のみを表示します。
44行目では、drawKDJメソッドを呼び出してKDJを描画しています。このサンプルプログラムを実行すると、KDJの3つの曲線がそれぞれ青、緑、紫で描かれた図のような結果が表示されます(本は黒と白で印刷されているため、色が見えません。お使いのコンピュータでお読みくださいこのサンプルプログラムを実行してください)。
下の図は、同じ期間にストックソフトウェアから取得したストック「JinshiResources」のKDJチャートです。2つの傾向は基本的に同じです。
この記事は転載できます。転載の際は、要約なしで全文を転載し、元のリンクをリンクの形で提供してください。そうしないと、発行者からの権利保護に遭遇する可能性があります。
テキスト関連のリンク:
PythonのPandasとMatplotlibを使用して、ストックのTangqianチャネル、Bollingerバンドチャネル、およびワニのグループラインを描画します。
Pythonを使用して株式データをクロールし、ローソク足と移動平均を描画し、機械学習を使用して株価を予測します(私の本から)
Python言語で株式市場のOBVインジケーターの効果を描画します
プログラマーはPythonを効率的に学ぶ方法とPythonで効率的にお金を稼ぐ方法
matplotlibとpandasを使用して、株式MACDインジケーターを描画し、取引戦略を検証します
私の新しい本をみんなに紹介します:「株式ビッグデータ分析に基づく実用的なPythonエントリ」
機械学習の線形回帰アルゴリズム(Pythonで実装)を使用して在庫の傾向を予測します
私の新しい本では、ストックケースを使用して、Pythonクローラーのビッグデータの視覚化などの知識を伝えようとしています。
例として株式RSI指標を取り上げ、Pythonの電子メール機能を学びます(セールスポイント戦略を決定するためのRSI指標を含む)
Pythonのmatplotlibライブラリとnumpyライブラリを使用して、株式のKライン移動平均と取引量の統合効果を引き出します(コンテンツ検証取引戦略コード)
Pythonのmatplotlibおよびnumpyライブラリを使用して、株式のKライン移動平均の統合効果を描画します(ネットワークインターフェイスからのデータのクロールと取引戦略コードの検証を含む)