python atr指标
时间: 2023-11-02 08:58:52 浏览: 56
ATR指标是一种技术分析指标,全称为平均真实波幅(Average True Range)。它的作用是测量价格波动的幅度,以便帮助投资者确定止损位置和波动性。
ATR指标的计算方式比较复杂,一般采用以下的公式:
TR = MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1)))
ATR = MA(TR,N)
其中,TR是真实波幅,HIGH、LOW和CLOSE分别为当日的最高价、最低价和收盘价,REF(CLOSE,1)表示昨日的收盘价,MAX表示求最大值,ABS表示求绝对值,MA表示求平均值,N表示计算周期。
通过计算ATR指标,可以得到一个数值,这个数值代表了一定时间内股价波动的平均幅度。投资者可以根据这个数值来确定自己的止损位置,以及判断市场的波动性。
相关问题
backtrader里面,怎么使用talib的ATR指标,ATR的参数如何设置
在backtrader中使用talib的ATR指标需要先安装talib库。可以通过以下命令来安装:
```
pip install TA-Lib
```
安装完成后,在backtrader中使用talib的ATR指标可以按照以下步骤:
1. 导入talib库和backtrader库:
```python
import talib
import backtrader as bt
```
2. 在backtrader的策略类中定义ATR指标:
```python
class MyStrategy(bt.Strategy):
params = (('atr_period', 14),)
def __init__(self):
self.atr = talib.ATR(self.data.high, self.data.low, self.data.close, timeperiod=self.params.atr_period)
```
在这个例子中,我们定义了一个名为`atr`的ATR指标,它的参数`timeperiod`设置为`self.params.atr_period`,这个参数可以在回测时进行调整。
3. 在`next()`方法中使用ATR指标:
```python
def next(self):
atr_value = self.atr[-1]
# do something with atr_value
```
在这个例子中,我们通过`self.atr[-1]`来获取最新的ATR值,然后可以用这个值来进行交易决策。
需要注意的是,在定义ATR指标时,`self.data.high`、`self.data.low`和`self.data.close`分别表示该股票每天的最高价、最低价和收盘价,`timeperiod`表示ATR指标的计算周期,可以根据自己的需要进行调整。
股票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)
```