首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python - AttributeError:模块'pandas‘没有属性'ewm’

Python - AttributeError:模块'pandas‘没有属性'ewm’
EN

Stack Overflow用户
提问于 2018-08-05 07:15:33
回答 8查看 19.2K关注 0票数 3

我正在尝试运行下面的代码,但是我得到了一个错误。

代码语言:javascript
运行
复制
line 43, in <module> ups_avg = pd.ewm(ups, span=RSI_N)[-1] 
AttributeError: module 'pandas' has no attribute 'ewm

我正在使用最新的pandas模块。请告诉我怎么修43行?谢谢

代码语言:javascript
运行
复制
from binance.client import Client    
import numpy as np    
import pandas as pd    
import smtplib    
import time    
import yaml    

CONFIG = yaml.load(open('./CONFIG.yml'))    
API_KEY = CONFIG['binance_api']['key']    
API_SECRET = CONFIG['binance_api']['secret']    
user = CONFIG['gmail']['user']    
passwd = CONFIG['gmail']['password']    

client = Client(API_KEY, API_SECRET)

# against ETH    
SYMBOLS = ('ADA', 'ADX', 'BAT', 'BCC', 'DASH', 'EOS', 'IOTA',

        'LTC', 'NEO', 'OMG', 'STORJ', 'XLM', 'NANO', 'XRP', 'XVG', 'ZEC')    
RSI_N = 14    
RSI_THRESHOLD = 8    
RUN_INTERVAL_MINS = 30

def send_email(rsi_values):    
    if len(rsi_values) > 0:        
        message = '\n'.join('{0:>8} {1:.2f}'.format(symbol, rsi) for (symbol, rsi) in rsi_values)    
        email_text = 'From: {0}\nTo: {1}\nSubject: Stock Recommendations\n\n{2}'.format(user, user, message)

        try:    
            server = smtplib.SMTP_SSL('smtp.gmail.com', 465)    
            server.ehlo()    
            server.login(user, passwd)    
            server.sendmail(user, user, email_text)    
            server.close()    
        except:    
            pass

while True:    
    rsi_values = []    
    for SYMBOL in SYMBOLS:    
        klines = client.get_historical_klines(SYMBOL + 'ETH', Client.KLINE_INTERVAL_30MINUTE, '{} hours ago UTC'.format((RSI_N + 3) // 2))    
        closings = np.asarray(klines, dtype=np.float)[-RSI_N - 1:, 4]        
        diffs = np.diff(closings)    
        ups = diffs.clip(min=0)    
        downs = diffs.clip(max=0)    
        ups_avg = pd.ewma(ups, span=RSI_N)[-1]    
        downs_avg = -pd.ewma(downs, span=RSI_N)[-1]    
        rs = ups_avg / downs_avg    
        rsi = 100 - 100 / (1 + rs)    
        rsi_values.append((SYMBOL, rsi))

    print('\n'.join('{0:>8} {1:.2f}'.format(symbol, rsi) for (symbol, rsi) in rsi_values))    
    rsi_values = list(filter(lambda x: x[1] < RSI_THRESHOLD, rsi_values))        
    send_email(rsi_values)        
    time.sleep(60 * RUN_INTERVAL_MINS)
EN

Stack Overflow用户

发布于 2018-08-05 07:29:44

试试这个:

代码语言:javascript
运行
复制
  ups_avg = pd.DataFrame.ewma(ups, span=RSI_N)[-1]

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.ewm.html

票数 0
EN
查看全部 8 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51690241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档