股票20个常用指标python代码
时间: 2023-03-21 09:01:48 浏览: 207
以下是股票常用指标的Python代码示例:
1. 移动平均线(Moving Average)
```python
import pandas as pd
# 计算20日移动平均线
df['20MA'] = df['close'].rolling(window=20).mean()
```
2. 相对强弱指标(Relative Strength Index, RSI)
```python
import pandas as pd
# 计算14日RSI
delta = df['close'].diff()
gain = delta.where(delta > 0, 0)
loss = -delta.where(delta < 0, 0)
avg_gain = gain.rolling(window=14).mean()
avg_loss = loss.rolling(window=14).mean().abs()
rs = avg_gain / avg_loss
df['RSI'] = 100 - (100 / (1 + rs))
```
3. 布林带(Bollinger Bands)
```python
import pandas as pd
# 计算20日布林带
df['20MA'] = df['close'].rolling(window=20).mean()
df['stddev'] = df['close'].rolling(window=20).std()
df['upper_band'] = df['20MA'] + 2 * df['stddev']
df['lower_band'] = df['20MA'] - 2 * df['stddev']
```
4. 指数移动平均线(Exponential Moving Average, EMA)
```python
import pandas as pd
# 计算20日EMA
df['EMA'] = df['close'].ewm(span=20).mean()
```
5. 随机指标(Stochastic Oscillator)
```python
import pandas as pd
# 计算14日随机指标
low_min = df['low'].rolling(window=14).min()
high_max = df['high'].rolling(window=14).max()
k = (df['close'] - low_min) / (high_max - low_min) * 100
df['D'] = k.rolling(window=3).mean()
df['K'] = df['D'].rolling(window=3).mean()
```
6. 平均真实范围指标(Average True Range, ATR)
```python
import pandas as pd
# 计算14日ATR
tr1 = df['high'] - df['low']
tr2 = (df['high'] - df['close'].shift()).abs()
tr3 = (df['low'] - df['close'].shift()).abs()
tr = pd.concat([tr1, tr2, tr3], axis=1).max(axis=1)
df['ATR'] = tr.rolling(window=14).mean()
```
7. 钱德动量摆动指标(Chande Momentum Oscillator, CMO)
```python
import pandas as pd
# 计算20日CMO
up = (df['close'] - df['close'].shift(1)).where(df['close'] > df['close'].shift(1), 0)
down = (df['close'].shift(1) - df['close']).where(df['close'] < df['close'].shift(1), 0)
sum_up = up.rolling(window=20).sum()
sum_down = down.rolling(window=20).sum()
df['CMO'] = (sum_up - sum_down) / (sum_up + sum_down) * 100
```
8. MACD指标(Moving Average Con