本文說明KDJ技術指標。
KDJ指標運用一段期間內的收盤價、最高價和最低價三個元素,來衡量股價與正常範圍的變異程度KD,藉此可以判斷是否要進場、退場。
介於20~80 K>D多頭可以進場;J<0 底部;J>100頭部。
import pandas as pd
import yfinance as yf
import datetime as dt
def kdj(df):
low_list = df["Close"].rolling(9, min_periods=1).min()
high_list = df["High"].rolling(9, min_periods=1).max()
#RSV=(第n天的收盤價-最近n天內的最低價)÷(最近n天內的最高價-最近n天內的最低價)*100
rsv = (df["Close"] - low_list) / (high_list - low_list) * 100
#2/3*前一天的K值+1/3*當日RSV
df["K"] = rsv.ewm(com=2, adjust=False).mean()
#2/3*前一天的D值+1/3*當日的K值
df["D"] = df["K"].ewm(com=2, adjust=False).mean()
#3D-2K
df["J"] = 3 * df["K"] - 2 * df["D"]
return df
# 開始時間
start=dt.datetime.today()-dt.timedelta(9)
# 結束時間
end=dt.datetime.today()
# 台股
df_2603=pd.DataFrame(yf.download("2603.TW", start=start, end=end))
print("df_2603:\n",df_2603)
kdj_df = kdj(df_2603)
print("kdj_df:\n" ,kdj_df)
使用yfinance取得個股歷史資料及進行KDJ指標計算。