介紹
先看看官方介紹:
KDJ(隨機指標)
用法
1.D指標>80 時,回檔機率大;D指標<20時,反彈機率大;
2.K在20左右向上交叉D時,視為買進信號;
3.K在80左右向下交叉D時,視為賣出信號;
4.J>100 時,股價易反轉下跌;J<0 時,股價易反轉上漲;
5.KDJ 波動于50左右的任何信號,其作用不大。
算法解釋
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);
D:SMA(K,M2,1);
J:3*K-2*D;
-
RSV(Raw Stochastic Value):原始隨機值。RSV是根據最近N個交易日內的收盤價,計算其相對于最高價和最低價的位置比例。公式為:RSV = (CLOSE - LLV(LOW, N)) / (HHV(HIGH, N) - LLV(LOW, N)) * 100。其中LLV代表最低價的最小值,HHV代表最高價的最大值。
-
LLV(Lowest Value):最低價的最小值。LLV函數用于計算最近N個交易日內的最低價的最小值。
-
HHV(Highest Value):最高價的最大值。HHV函數用于計算最近N個交易日內的最高價的最大值。
-
SMA(Simple Moving Average):簡單移動平均線。SMA是一種用于平滑數據的常見方法,通過計算一段時間內數據的平均值來觀察價格的長期趨勢。
KDJ指標中的K、D、J分別代表:
- K:代表快速隨機值,是RSV的平滑移動平均線,常用于觀察價格的短期波動情況。
- D:代表慢速隨機值,是K的平滑移動平均線,用于觀察價格的中期趨勢。
- J:代表J值,是根據K和D計算得出的一個值,常用于觀察價格的長期趨勢和判斷超買超賣情況。
在KDJ指標中,通常會設定兩個參數M1和M2,分別用于計算K和D的移動平均值。
代碼
rolling函數介紹
rolling
函數通常與其他函數(如 mean
、sum
、std
等)一起使用,以計算滾動統計量,例如滾動均值、滾動總和等。
以下是 rolling
函數的基本語法:文章來源:http://www.zghlxwxcb.cn/news/detail-825684.html
DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)
-
window
: 用于計算統計量的窗口大小。 -
min_periods
: 每個窗口最少需要的非空觀測值數量。 -
center
: 確定窗口是否居中,默認為False
。 -
win_type
: 窗口類型,例如None
、boxcar
、triang
等,默認為None
。 -
on
: 在數據幀中執(zhí)行滾動操作的列,默認為None
,表示對整個數據幀執(zhí)行操作。 -
axis
: 執(zhí)行滾動操作的軸,默認為0
,表示按列執(zhí)行操作。 -
closed
: 確定窗口的哪一端是閉合的,默認為None
。
計算LLV(最低價最小值)和HHV(最高價最大值)
# 定義函數計算LLV(最低價最小值)和HHV(最高價最大值)
def calculate_llv_high_low(high, low, n):
return low.rolling(window=n).min(), high.rolling(window=n).max()
計算RSV
# 定義函數計算RSV
def calculate_rsv(close, llv_low, hhv_high):
return (close - llv_low) / (hhv_high - llv_low) * 100
計算SMA(簡單移動平均)
# 定義函數計算SMA(簡單移動平均)
def calculate_sma(data, window):
return data.rolling(window=window).mean()
完整代碼
import pandas as pd
# 定義函數計算LLV(最低價最小值)和HHV(最高價最大值)
def calculate_llv_high_low(high, low, n):
return low.rolling(window=n).min(), high.rolling(window=n).max()
# 定義函數計算RSV
def calculate_rsv(close, llv_low, hhv_high):
return (close - llv_low) / (hhv_high - llv_low) * 100
# 定義函數計算SMA(簡單移動平均)
def calculate_sma(data, window):
return data.rolling(window=window).mean()
# 示例數據
data = {
'CLOSE': 填每日收盤的數據,
'HIGH': 填每日最高的數據,
'LOW': 填每日最低的數據
}
df = pd.DataFrame(data)
# 設置參數
N = 9
M1 = 3
M2 = 3
# 計算LLV和HHV
df['LLV_LOW'], df['HHV_HIGH'] = calculate_llv_high_low(df['HIGH'], df['LOW'], N)
# 計算RSV
df['RSV'] = calculate_rsv(df['CLOSE'], df['LLV_LOW'], df['HHV_HIGH'])
# 計算K
df['K'] = calculate_sma(df['RSV'], M1)
# 計算D
df['D'] = calculate_sma(df['K'], M2)
# 計算J
df['J'] = 3 * df['K'] - 2 * df['D']
print(df)
計算結果
文章來源地址http://www.zghlxwxcb.cn/news/detail-825684.html
到了這里,關于Python實現KDJ指標計算:股票技術分析的利器系列(3)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!