{参数:n:2,90,9。m1:2,30,3。m2:2,30,3} RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100,LINETHICK2; K:SMA(RSV,M1,1),LINETHICK1; D:SMA(K,M2,1),LINETHICK1; J:3*K-2*D,COLORFF00FF,LINETHICK1; IF(J<0,J,DRAWNULL),COLORGREEN,LINETHICK2; IF(K>90,K,DRAWNULL),COLOR0000FF,LINETHICK2; IF(D>85,D,DRAWNULL),COLORFFFF11,LINETHICK2; DRAWICON(CROSS(J,1),J,1); DRAWICON(K>80 AND D>80 AND CROSS(D,K),D,2);
时间: 2023-08-21 09:03:46 浏览: 61
这段代码使用了股票的KDJ指标公式进行计算,并且根据计算结果进行了绘图和标记。具体解释如下:
- 参数n、m1、m2分别为计算公式中的天数和平滑系数,可以根据具体需要进行调整。
- RSV指标是KDJ计算公式中的未成熟随机值,计算方法为(收盘价-N天内最低价的最低值)/(N天内最高价的最高值- N天内最低价的最低值)* 100。
- K指标是RSV指标的M1天简单移动平均,D指标是K指标的M2天简单移动平均,J指标是3 * K - 2 * D。
- 对于J指标,如果小于0,则绘制空图标,颜色为绿色,线条粗细为2。
- 对于K指标,如果大于90,则绘制空图标,颜色为蓝色,线条粗细为2。
- 对于D指标,如果大于85,则绘制空图标,颜色为黄色,线条粗细为2。
- 绘制交叉点的图标,如果J指标和1日前的J指标相交,则绘制颜色为红色的实心圆形图标;如果K指标和D指标都大于80且D指标上穿K指标,则绘制颜色为蓝色的实心三角形图标。
这段代码可以用于股票软件中的自定义指标计算与绘图。
相关问题
def myself_kdj(df,N=9,M1=3,M2=3): low_list = df['low'].rolling(N).min() low_list.fillna(value=df['low'].expanding().min(), inplace=True) high_list = df['high'].rolling(N).max() high_list.fillna(value = df['high'].expanding().max(), inplace=True) rsv = (df['close'] - low_list) / (high_list - low_list) * 100 df['k'] = pd.DataFrame(rsv).ewm(M1-1).mean() df['d'] = df['k'].ewm(M2-1).mean() df['j'] = 3 * df['k'] - 2 * df['d'] return df
这是一个自定义的KDJ指标计算函数`myself_kdj`,它使用了rolling、expanding和ewm函数来计算KDJ指标。函数接受一个包含股票数据的DataFrame作为输入,并返回包含KDJ指标的DataFrame。
函数的参数说明如下:
- `df`:包含股票数据的DataFrame,需要包含'high'、'low'和'close'列。
- `N`:KDJ指标的周期参数,默认为9。
- `M1`:K值的平滑参数,默认为3。
- `M2`:D值的平滑参数,默认为3。
以下是使用这个自定义函数计算KDJ指标的示例代码:
```python
import pandas as pd
# 假设你有一个包含股票数据的DataFrame,其中包含'high'、'low'和'close'列
data = pd.read_csv('stock_data.csv')
# 使用自定义函数计算KDJ指标
data = myself_kdj(data, N=9, M1=3, M2=3)
print(data)
```
请根据实际情况修改代码,适应你的数据格式和需求。需要注意的是,这只是一个简单的KDJ指标计算示例,你可能还需要考虑其他因素,如参数调优和数据预处理等。
用matlab分别写出KDJ指标的交易信号和参数设置
KDJ指标是一种技术指标,用于衡量股票价格走势的强度和趋势。它是由三条曲线组成的指标,分别是K线、D线和J线。在Matlab中,可以使用以下代码来计算KDJ指标的交易信号和参数设置:
```matlab
% 计算KDJ指标
% 输入参数
high = [10, 12, 15, 14, 16, 18, 20, 22, 25, 24]; % 最高价
low = [8, 9, 11, 10, 12, 15, 17, 18, 19, 22]; % 最低价
close = [9, 11, 14, 12, 15, 17, 19, 21, 23, 23]; % 收盘价
n = 9; % 周期
m1 = 3; % 平滑因子1
m2 = 3; % 平滑因子2
% 计算RSV值
for i = n:length(close)
Cn = close(i);
Hn = max(high(i-n+1:i));
Ln = min(low(i-n+1:i));
RSV(i) = (Cn - Ln) / (Hn - Ln) * 100;
end
% 计算K值、D值、J值
K(1) = 50;
D(1) = 50;
for i = 2:length(close)
K(i) = (m1-1)/m1*K(i-1) + 1/m1*RSV(i);
D(i) = (m2-1)/m2*D(i-1) + 1/m2*K(i);
J(i) = 3*K(i) - 2*D(i);
end
% 计算交易信号
for i = 2:length(close)
if K(i) > D(i) && K(i-1) < D(i-1) % K线上穿D线
signal(i) = 1; % 买入信号
elseif K(i) < D(i) && K(i-1) > D(i-1) % K线下穿D线
signal(i) = -1; % 卖出信号
else
signal(i) = 0; % 无信号
end
end
```
在上述代码中,输入参数包括最高价、最低价、收盘价、周期n以及平滑因子m1和m2。计算过程中,先计算出RSV值,然后再根据RSV值计算出K值、D值和J值,最后根据K线和D线的交叉情况确定交易信号。