【问题标题】:pandas/stockstats type error ('NoneType' object is not subscriptable)pandas/stockstats 类型错误('NoneType' 对象不可下标)
【发布时间】:2020-09-03 13:50:34
【问题描述】:

我正在尝试制作一个交易机器人,当 macdh 从负数变为正数时,我想获得买入信号。我得到 macdh 值,但是当我输入 if 参数时,我得到 typeerror。 我的错误类型是 如果 df['macdh'].iloc[i]>0 和 df['macdh'].iloc[-2]

import requests
import json
from stockstats import StockDataFrame as Sdf


class TradingModel:
    def __init__(self, symbol):
        self.symbol = symbol
        self.df = self.getData()

    def getData(self):

        # define URL
        base = 'https://api.binance.com'
        endpoint = '/api/v3/klines'
        params = '?&symbol='+self.symbol+'&interval=4h'

        url = base + endpoint + params


        data = requests.get(url)
        dictionary = json.loads(data.text)

        # put in dataframe and clean-up
        df = pd.DataFrame.from_dict(dictionary)
        df = df.drop(range(6, 12), axis=1)


        col_names = ['time', 'open', 'high', 'low', 'close', 'volume']
        df.columns = col_names

        for col in col_names:
            df[col]=df[col].astype(float)

        stock = Sdf.retype(df)
        df['macdh']=stock['macdh']
        df['macds']=stock['macds']
        df['macd']=stock['macd']
        print(df)

    def strategy(self):
        df = self.df
        buy_signals=[]
        for i in range(1,len(df['close'])):
            if df['macdh'][i]>0 and df['macdh'].iloc[-2]<0:
                buy_signals.append(df['time'][i],df['low'][i])




def Main():
    symbol = "BTCUSDT"
    model = TradingModel(symbol)
    model.strategy()

if __name__ == '__main__':
    Main() ``

【问题讨论】:

  • iloc 的值为 None
  • @Samwise 我该如何解决?
  • @Samwise 没办法解决? :)

标签: python pandas dataframe typeerror


【解决方案1】:

当我添加返回 df 时,它就完成了

    df['macdh']=stock['macdh']
    df['macds']=stock['macds']
    df['macd']=stock['macd']
    return df

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 2020-02-22
    • 2013-01-13
    • 1970-01-01
    • 2013-09-22
    相关资源
    最近更新 更多