You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python币安交易脚本运行出现NoneType无Open属性报错如何修复

问题定位

报错的直接原因是getMinuteData函数没有显式返回处理好的DataFrame,Python函数在没有写return语句时默认会返回None,因此你赋值给df变量的值是None,调用df.Open自然会抛出属性不存在的错误。

修复方案

步骤1:给getMinuteData函数添加返回语句

修改后的函数如下:

def getMinuteData(symbol, interval, lookback):
    frame = pd.DataFrame(client.get_historical_klines(symbol, interval, lookback+' min ago EST'))
    frame = frame.iloc[:, :6]
    frame.columns = ['Time', 'Open', 'High', 'Low', 'Close', 'Volume']
    frame = frame.set_index('Time')
    frame.index = pd.to_datetime(frame.index, unit='ms')
    frame = frame.astype(float)
    print(frame)
    return frame # 新增这行返回处理好的DataFrame

步骤2:修复变量作用域问题

当前代码中order变量是在if not entered的分支内定义的,如果第一次调用没有触发买入条件,后续if entered分支引用order会抛出未定义的错误,调整逻辑如下:

def strategyTest(symbol, qty, entered=False):
    df = getMinuteData(symbol, '1m', '30')
    cumulRet = (df.Open.pct_change() + 1).cumprod() -1
    order = None # 提前定义order变量
    if not entered:
        if cumulRet [-1] < -0.002:
            order = client.create_order(symbol=symbol, side='BUY', type = 'MARKET', quantity=qty)
            print(order)
            entered = True
        else:
            print("No trade executed")
            return # 没触发买入直接退出,避免后续逻辑报错
    
    if entered and order is not None: # 增加order非空判断
        while True:
            df = getMinuteData(symbol, '1m', '30')
            sinceBuy = df.loc[df.index > pd.to_datetime(order['transactTime'], unit='ms')]
            if len(sinceBuy) > 0:
                sinceBuyReturns = (sinceBuy.Open.pct_change() + 1).cumprod() -1
                if sinceBuyReturns[-1] > 0.0015 or sinceBuyReturns[-1] < -0.0015:
                    sell_order = client.create_order(symbol=symbol, side='SELL', type = 'MARKET', quantity=qty)
                    print(sell_order)
                    break

其他可选优化点

  • 如果你使用的是币安国际站而非币安美国站,删除Client初始化参数里的tld='us',否则会请求失败返回空数据
  • 调用client.get_historical_klines前增加异常捕获,避免网络波动导致的程序崩溃
  • 确认交易对的最小下单精度,BTCUSDT的最小下单量通常是0.0001,你填写的0.0003符合要求,可根据自身账户余额调整

内容的提问来源于stack exchange,提问作者Reckliss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:33:00