威廉指数python
时间: 2024-07-26 20:01:27 浏览: 242
威廉指标(William's %R),也称为超买超卖指标,是一种用于衡量证券价格相对于其过去最高价的相对位置的技术分析工具。它可以帮助识别股票的超买和超卖状态,但并不直接提供买入或卖出信号。
在Python中,你可以使用`ta-lib`库来计算威廉指标。首先,你需要安装这个库,然后按照以下步骤:
```python
from talib import Williams
# 假设你已经有了一个收盘价序列 close_prices
data = {'close': close_prices}
# 计算威廉指标
williams_r = Williams(data, timeperiod=14) # 时间周期通常选择14天
# 获取结果
overbought_threshold = 80 # 超买区一般设定在80%
oversold_threshold = 20 # 超卖区一般设定在20%
for index, williams_value in enumerate(williams_r[-1]):
if williams_value > overbought_threshold:
print(f'第 {index+1} 天,{close_prices[index]} 的威廉指标超过80%,可能超买')
elif williams_value < oversold_threshold:
print(f'第 {index+1} 天,{close_prices[index]} 的威廉指标低于20%,可能超卖')
相关问题
量化交易python道氏理论
量化交易中的Python道氏理论主要是将道氏理论这一经典的技术分析工具应用于金融市场的计算机程序化交易策略中。道氏理论是由查尔斯·道(Charles Dow)和威廉·汉密尔顿(William Hamilton)提出的,主要关注长期趋势的识别,分为主要趋势、次要趋势和短暂趋势。
在Python环境下,量化交易者通常会利用Python的数据处理库如Pandas对历史价格数据进行清洗和整理,然后通过编写算法计算道氏理论中的关键指标,如平均价格、波峰和波谷等。以下是一些基本步骤:
1. **数据获取**:使用Yahoo Finance API或Quandl等API获取历史股票价格数据。
2. **数据预处理**:计算每日开盘价、收盘价、最高价和最低价,以及简单移动平均线(SMA)或指数移动平均线(EMA)作为趋势指标。
3. **趋势判断**:根据道氏理论,主要趋势由主要的价格波动确定;次要趋势为市场调整;短暂趋势是最小的价格波动。这可以通过比较不同周期的平均线(如日线和周线)来完成。
4. **策略构建**:基于趋势判断创建交易信号,例如当短期平均线上穿长短期平均线时可能视为买入信号,反之则卖出。
5. **回测与优化**:使用Python的backtesting库(如Backtrader, Zipline, Pyfolio等)对策略进行回测,评估其性能并进行参数优化。
股票20个常用指标python代码
以下是股票常用指标的 Python 代码示例:
1. 移动平均线(MA)
```python
import pandas as pd
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
# 计算5日移动平均线
df['MA5'] = df['close'].rolling(5).mean()
# 计算10日移动平均线
df['MA10'] = df['close'].rolling(10).mean()
# 计算20日移动平均线
df['MA20'] = df['close'].rolling(20).mean()
```
2. 指数移动平均线(EMA)
```python
import pandas as pd
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
# 计算12日指数移动平均线
df['EMA12'] = df['close'].ewm(span=12, adjust=False).mean()
# 计算26日指数移动平均线
df['EMA26'] = df['close'].ewm(span=26, adjust=False).mean()
```
3. 相对强弱指标(RSI)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
# 计算14日相对强弱指标
df['RSI'] = talib.RSI(df['close'].values, timeperiod=14)
```
4. 布林带(BOLL)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
# 计算布林带
df['upper'], df['middle'], df['lower'] = talib.BBANDS(df['close'].values, timeperiod=20)
```
5. 随机指标(KDJ)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
# 计算KDJ指标
high = df['high'].values
low = df['low'].values
close = df['close'].values
df['K'], df['D'] = talib.STOCH(high, low, close, fastk_period=9, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)
df['J'] = 3 * df['K'] - 2 * df['D']
```
6. 平均真实波幅(ATR)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
# 计算14日平均真实波幅
df['ATR'] = talib.ATR(df['high'].values, df['low'].values, df['close'].values, timeperiod=14)
```
7. 动量指标(MOM)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
# 计算12日动量指标
df['MOM'] = talib.MOM(df['close'].values, timeperiod=12)
```
8. 相对强弱指数(RSI)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
# 计算14日相对强弱指数
df['RSI'] = talib.RSI(df['close'].values, timeperiod=14)
```
9. 指数平滑移动平均线(MACD)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
# 计算MACD指标
macd, macdsignal, macdhist = talib.MACD(df['close'].values, fastperiod=12, slowperiod=26, signalperiod=9)
df['MACD'] = macd
df['MACD_SIGNAL'] = macdsignal
df['MACD_HIST'] = macdhist
```
10. 相对强弱平均线(RMI)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
# 计算RMI指标
df['RMI'] = talib.RMI(df['close'].values, timeperiod=14)
```
11. 能量潮指标(OBV)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
# 计算OBV指标
df['OBV'] = talib.OBV(df['close'].values, df['volume'].values)
```
12. 三重指数平滑移动平均线(TRIX)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
# 计算TRIX指标
df['TRIX'] = talib.TRIX(df['close'].values, timeperiod=30)
```
13. 移动平均线收敛/发散指标(MACD)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
# 计算MACD指标
macd, macdsignal, macdhist = talib.MACD(df['close'].values, fastperiod=12, slowperiod=26, signalperiod=9)
df['MACD'] = macd
df['MACD_SIGNAL'] = macdsignal
df['MACD_HIST'] = macdhist
```
14. 顺势指标(CCI)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
high = df['high'].values
low = df['low'].values
close = df['close'].values
# 计算CCI指标
df['CCI'] = talib.CCI(high, low, close, timeperiod=20)
```
15. 平均趋向指标(ADX)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
high = df['high'].values
low = df['low'].values
close = df['close'].values
# 计算ADX指标
df['ADX'] = talib.ADX(high, low, close, timeperiod=14)
```
16. 相对强弱指标(ROC)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
# 计算ROC指标
df['ROC'] = talib.ROC(df['close'].values, timeperiod=10)
```
17. 心理线指标(PSY)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
# 计算PSY指标
df['PSY'] = talib.PSY(df['close'].values, timeperiod=12)
```
18. 威廉指标(WILLR)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
high = df['high'].values
low = df['low'].values
close = df['close'].values
# 计算WILLR指标
df['WILLR'] = talib.WILLR(high, low, close, timeperiod=14)
```
19. 相对强弱动量指标(RMI)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
# 计算RMI指标
df['RMI'] = talib.RMI(df['close'].values, timeperiod=14)
```
20. 梅斯线指标(MASS)
```python
import pandas as pd
import talib
# 读取股票数据
df = pd.read_csv('stock.csv', index_col='date', parse_dates=True)
high = df['high'].values
low = df['low'].values
close = df['close'].values
# 计算MASS指标
df['MASS'] = talib.MASS(high, low, close)
```
阅读全文