KDJ金叉选股公式代码
时间: 2023-08-24 17:09:49 浏览: 227
KDJ指标是一种技术分析指标,它由三条线组成,并通过计算最近一段时间内的最高价、最低价和收盘价之间的关系来产生信号。KDJ线由三条线组成:K线、D线和J线。其中,K线用于测量最近一段时间内的价格动量,D线则是K线的平均值,而J线则是K线和D线之差的三倍。
以下是KDJ金叉选股的Python代码:
```python
import pandas as pd
import numpy as np
def kdj(stock_data, n=9, m1=3, m2=3):
"""
计算KDJ指标
:param stock_data: 股票数据,包含'high','low','close'三列
:param n: 计算K线和D线的天数
:param m1: 计算J线的参数1
:param m2: 计算J线的参数2
:return: 计算好的KDJ指标数据,包含'K','D','J'三列
"""
low_list = stock_data['low'].rolling(window=n, min_periods=1).min()
high_list = stock_data['high'].rolling(window=n, min_periods=1).max()
rsv = (stock_data['close'] - low_list) / (high_list - low_list) * 100
k = pd.DataFrame(rsv).ewm(com=m1-1, min_periods=m1).mean()
d = k.ewm(com=m2-1, min_periods=m2).mean()
j = 3 * k - 2 * d
return pd.concat([k, d, j], axis=1).rename(columns={0:'K', 1:'D', 2:'J'})
def kdj_golden_cross(stock_data):
"""
判断KDJ金叉
:param stock_data: 股票数据,包含'K','D','J'三列
:return: 布尔值,表示是否为金叉
"""
last_K, last_D = stock_data.iloc[-2]['K'], stock_data.iloc[-2]['D']
cur_K, cur_D = stock_data.iloc[-1]['K'], stock_data.iloc[-1]['D']
if last_K < last_D and cur_K > cur_D:
return True
else:
return False
```
使用示例:
```python
# 导入股票数据
df = pd.read_csv('stock_data.csv')
# 计算KDJ指标
kdj_data = kdj(df)
# 判断KDJ金叉
is_golden_cross = kdj_golden_cross(kdj_data)
```
其中,'stock_data.csv'是包含股票数据的CSV文件,需要包含'high','low','close'三列数据。
阅读全文