【发布时间】:2021-11-30 17:37:06
【问题描述】:
我对 Python 编码比较陌生,但我一直在关注视频来制作一个原始的加密交易机器人。我不断收到这个错误:
File "c:\Users\jate1\Desktop\Binance Bot.py", line 57, in <module>
strategyTest('BTCUSDT', 0.0003)
File "c:\Users\jate1\Desktop\Binance Bot.py", line 37, in strategyTest
cumulRet = (df.Open.pct_change() + 1).cumprod() -1
AttributeError: 'NoneType' object has no attribute 'Open'
我认为我的变量显示累积收益存在一些错误,但我不确定如何修复它。我确保这与视频中的完全相同,但错误仍然存在。如果有人知道如何解决它,帮助我将不胜感激。如果您需要更多信息,请询问。下面我会附上我的代码,别担心,我在代码中有API密钥,只是这里没有。
from binance import *
import pandas as pd
from pandas.core import frame, indexing
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
# Get account information
client = Client(api_key, api__secret, tld='us')
print(client.get_account())
# Datastream via websocket
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)
test = getMinuteData('BTCUSDT', '1m', '30')
# Trading Strategy - Buy if asset fell by more than 0.2% withint the last 30 min
# Sell if asset rises by more than 0.15% or falls further by 0.15%
def strategyTest(symbol, qty, entered=False):
df = getMinuteData(symbol, '1m', '30')
cumulRet = (df.Open.pct_change() + 1).cumprod() -1
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")
if entered:
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:
order = client.create_order(symbol=symbol, side='SELL', type = 'MARKET', quantity=qty)
print(order)
break
strategyTest('BTCUSDT', 0.0003)```
【问题讨论】:
-
在
getMinuteData函数的末尾添加return frame。你没有从那个函数返回任何东西
标签: python pandas attributeerror binance cryptocurrency