import config
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd
from binance.client import Client
from mplfinance.original_flavor import candlestick_ohlc
api_key = config.api_key
secret_key = config.api_secret
client = Client(api_key, secret_key)
symbol = "BTCUSDT"
interval = Client.KLINE_INTERVAL_5MINUTE
# Получение котировок за последние 100 интервалов
klines = client.get_historical_klines(symbol, interval, "100 hours ago UTC")
# Преобразование котировок в DataFrame
df = pd.DataFrame(klines, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume', 'close_time', 'quote_asset_volume', 'number_of_trades', 'taker_buy_base_asset_volume', 'taker_buy_quote_asset_volume', 'ignored'])
# Преобразование значений в числовой формат
df = df.astype(float)
# Преобразование timestamp в дату и время
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
# Установка timestamp как индекс DataFrame
df.set_index('timestamp', inplace=True)
volume = 3500
timeframe = 5 # изменение значения на 2 секунды
# Разница между текущей и предыдущей сделкой
df['time_diff'] = df.index.to_series().diff().dt.total_seconds() / 60
# Поиск крупных сделок
large_trades = df[(df['volume'] >= volume) & (df['time_diff'] <= timeframe)]
# Отображение графика свечей
ohlc = df[['open', 'high', 'low', 'close']].reset_index().values
ohlc[:,0] = mdates.date2num(ohlc[:,0])
fig, ax = plt.subplots()
candlestick_ohlc(ax, ohlc, width=0.0005, colorup='g', colordown='r', alpha=1.0)
# Отображение крупных сделок на графике
plt.scatter(large_trades.index, large_trades['close'], s=100, color='red', marker='*', label='Large Trades')
# Добавление легенды
plt.legend()
# Отображение графика
plt.show()