<p>为您修复了代码:</p>
<pre><code>import pandas as pd
import requests
import json
import plotly.graph_objs as go
from plotly.offline import plot
from pyti.exponential_moving_average import exponential_moving_average as ema
class TradingModel:
def __init__(self, symbol):
self.symbol = symbol
self.df = self.getData()
def getData(self):
base = 'https://api.binance.com'
endpoint = '/api/v1/klines'
params = '?&symbol=' + self.symbol + '&interval=1d'
url = base + endpoint + params
print(url)
data = requests.get(url)
dictionary = json.loads(data.text)
print(dictionary)
df = pd.DataFrame(dictionary)
print(df)
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)
df['fast_ema'] = ema(df['close'].tolist(), 12)
df['slow_ema'] = ema(df['close'].tolist(), 26)
df['macd_line']= df['fast_ema']-df['slow_ema']
df['signal_line']= ema(df['macd_line'].tolist(),9)
df['histogram']=df['macd_line']-df['signal_line']
return df
def strategy(self):
df = self.df
buy_signals = []
for i in range(1, len(df['close'])):
if (df['macd_line'][i]>df['signal_line'][i]) & 1>df['histogram'][i]>0 :
buy_signals.append([df['time'][i], df['low'][i]])
self.plotData(buy_signals=buy_signals)
def plotData(self, buy_signals=False):
df = self.df
candle = go.Candlestick(
x=df['time'],
open=df['open'],
close=df['close'],
high=df['high'],
low=df['low'],
name="Candlesticks")
fsma = go.Scatter(
x=df['time'],
y=df['macd_line'],
name="Macd_line",
line=dict(color=('rgba(102, 207, 255, 50)')))
ssma = go.Scatter(
x=df['time'],
y=df['signal_line'],
name="Signal_line ",
line=dict(color=('rgba(255, 207, 102, 50)')))
hsma = go.Scatter(
x=df['time'],
y=df['signal_line'],
name="histogram ",
line=dict(color=('rgba(255, 207, 102, 50)')))
data = [candle, ssma, fsma,hsma]
if buy_signals:
buys = go.Scatter(
x=[item[0] for item in buy_signals],
y=[item[1] for item in buy_signals],
name="Buy Signals",
mode="markers",
)
sells = go.Scatter(
x=[item[0] for item in buy_signals],
y=[item[1] * 1.05 for item in buy_signals],
name="Sell Signals",
mode="markers",
)
data = [candle, ssma, fsma, hsma ,buys, sells]
layout = go.Layout(title=self.symbol)
fig = go.Figure(data=data, layout=layout)
plot(fig, filename=self.symbol)
def Main():
symbol = "BTCUSDT"
model = TradingModel(symbol)
model.strategy()
if __name__ == '__main__':
Main()
</code></pre>