二十八日威廉指标的python不用talib怎么实现
时间: 2023-10-28 20:04:40 浏览: 197
要实现威廉指标,你可以按照以下步骤进行操作,无需使用talib库:
1. 首先,计算最高价的最高值和最低价的最低值的周期。例如,如果你想要计算28日的威廉指标,你需要计算过去28日内的最高价和最低价。
2. 然后,计算当前收盘价与最高价的差值和最高价与最低价的差值之间的比率。这可以通过以下公式计算:(最高价 - 收盘价) / (最高价 - 最低价)。
3. 将上述比率乘以-100,以得到威廉指标的数值。
以下是一个使用Python实现威廉指标的示例代码:
```python
def williams_indicator(high, low, close, period):
highest_high = max(high[-period:])
lowest_low = min(low[-period:])
williams = (highest_high - close) / (highest_high - lowest_low) * -100
return williams
```
在这个示例中,函数`williams_indicator`接受四个参数:`high`(最高价列表)、`low`(最低价列表)、`close`(收盘价列表)和`period`(周期)。它返回威廉指标的数值。
请注意,这只是一个基本示例代码,你可能需要根据你自己的数据源和需求进行适当的调整。
相关问题
三十日平均趋向指数不用talib怎么用python实现
要计算三十日平均趋向指数(Moving Average Convergence Divergence, MACD),您可以使用Python中的pandas库来实现,而不需要使用talib库。
首先,您需要获取历史价格数据,例如某个股票的每日收盘价。然后,您可以使用以下步骤来计算三十日平均趋向指数:
1. 导入必要的库:
```python
import pandas as pd
```
2. 创建一个包含历史价格数据的DataFrame。假设您有一个名为`df`的DataFrame,其中包含了日期和收盘价两列。
3. 计算短期(12日)和长期(26日)的指数移动平均线(Exponential Moving Average, EMA)。这可以使用`rolling()`和`mean()`方法来实现:
```python
df['ema_short'] = df['closing_price'].ewm(span=12, adjust=False).mean()
df['ema_long'] = df['closing_price'].ewm(span=26, adjust=False).mean()
```
4. 计算MACD线,即短期EMA减去长期EMA:
```python
df['macd_line'] = df['ema_short'] - df['ema_long']
```
5. 计算信号线,通常是MACD线的九日指数移动平均线。同样,可以使用`rolling()`和`mean()`方法来实现:
```python
df['signal_line'] = df['macd_line'].ewm(span=9, adjust=False).mean()
```
这样,您就计算出了MACD指标。您可以进一步分析MACD线和信号线之间的交叉点来判断买入或卖出的时机。
请注意,这只是一种基本的实现方法,并且可能与talib库中的实现略有不同。但是,通过使用pandas库中的函数,您可以实现类似的功能而无需安装额外的库。
三十日平均趋向指数怎么用python 但不用talib
你可以使用Python来计算三十日平均趋向指数(Moving Average Convergence Divergence,MACD),而不依赖于`talib`库。下面是一个使用pandas和numpy库计算MACD的示例代码:
```python
import pandas as pd
import numpy as np
def calculate_macd(data, n_fast, n_slow, n_signal):
ema_fast = data.ewm(span=n_fast, min_periods=n_fast - 1).mean()
ema_slow = data.ewm(span=n_slow, min_periods=n_slow - 1).mean()
macd = ema_fast - ema_slow
signal = macd.ewm(span=n_signal, min_periods=n_signal - 1).mean()
histogram = macd - signal
return macd, signal, histogram
# 示例数据
data = pd.Series([10, 12, 15, 14, 16, 18, 17, 19, 20, 22, 25, 23, 24, 23, 22, 21, 19, 20, 18, 16])
# 计算MACD指标
n_fast = 12
n_slow = 26
n_signal = 9
macd, signal, histogram = calculate_macd(data, n_fast, n_slow, n_signal)
# 输出MACD指标结果
print("MACD:", macd)
print("Signal:", signal)
print("Histogram:", histogram)
```
在上面的示例代码中,`calculate_macd`函数接收一个数据序列和三个参数:`n_fast`表示快速移动平均线的窗口大小,`n_slow`表示慢速移动平均线的窗口大小,`n_signal`表示信号线的窗口大小。函数首先使用指数加权移动平均值(EMA)计算出快速和慢速移动平均线,然后计算出MACD线、信号线和柱状图。最后,示例代码使用给定的示例数据调用`calculate_macd`函数,并输出计算结果。
请注意,这只是一个简单的示例,你可以根据你的需求进行修改和扩展。
阅读全文