Добавить новость

Свыше 50% выпускников колледжей РФ находят работу в первый год после завершения учебы

Пассажиры ЦППК перевезли на 10% больше велосипедов с начала года

В Москве задержали бывшего проректора известного вуза

Сертификат на покупку собственной жилплощади вручили жительнице Волоколамска





Новости сегодня

Новости от TheMoneytizer

Разобраться со скриптом на питоне

Написан скрипт на python для парсинга данных с биржи OKX за последние 5 лет, всё реализовано согласно документации отсюда: https://www.okx.com/docs-v5/en/#order-book-trading...


Но при работе он отдаёт No data returned, No data available.


Код скрипта:


import requests
import pandas as pd
from datetime import datetime, timedelta
import time

# Function to fetch historical data from OKX API
def fetch_candlesticks(inst_id, bar='1D', start_time=None, end_time=None, limit=100):
url = f"https://www.okx.com/api/v5/market/history-candles"
params = {
'instId': inst_id,
'bar': bar,
'limit': limit,
}
if start_time:
params['after'] = start_time # Параметр для получения данных после этой временной метки
if end_time:
params['before'] = end_time # Параметр для получения данных до этой временной метки

print(f"Requesting data for {inst_id} | Bar: {bar} | After: {start_time} | Before: {end_time}")
response = requests.get(url, params=params)
# Check for rate limit errors (Too many requests)
if response.status_code == 429:
print("Rate limit exceeded. Waiting for 2 seconds before retrying...")
time.sleep(2) # Wait before retrying
return fetch_candlesticks(inst_id, bar, start_time, end_time, limit)

if response.status_code == 200:
data = response.json().get("data", [])
print(f"Received {len(data)} rows of data.")
return data
else:
print(f"Error fetching data for {inst_id} with timeframe {bar}: {response.status_code}")
return []

# Function to get all historical data for a specific timeframe and period
def fetch_full_history(inst_id, bar='1D', years=5):
end_time = int(datetime.now().timestamp() * 1000) # Текущий момент в миллисекундах
start_time = int((datetime.now() - timedelta(days=years * 365)).timestamp() * 1000) # 5 лет назад

all_data = []
while end_time > start_time:
data = fetch_candlesticks(inst_id, bar=bar, end_time=end_time)
if not data:
print(f"No data returned for {inst_id}. Stopping further requests.")
break
all_data.extend(data)
end_time = int(data[-1][0]) # Обновление end_time до временной метки последней свечи
print(f"Updated end_time to {end_time} (millis). Continuing to fetch earlier data.")

return all_data

# Function to save data to Excel
def save_to_excel(inst_id, data_dict, file_name='candlesticks_data.xlsx'):
with pd.ExcelWriter(file_name) as writer:
for timeframe, data in data_dict.items():
if not data:
print(f"No data available for {inst_id} with timeframe {timeframe}. Skipping.")
continue # Этот continue должен быть на том же уровне отступа

# Debug: Print the first row to check structure
print(f"Sample data for {inst_id} [{timeframe}]: {data[0]}")

# Fix for 9 columns: drop duplicate Quote Volume
columns = ['Timestamp', 'Open', 'High', 'Low', 'Close', 'Volume', 'Quote Volume', 'Ignored', 'Number of Trades']
try:
df = pd.DataFrame(data, columns=columns)
# Drop the 'Ignored' column
df.drop(columns=['Ignored'], inplace=True)
except Exception as e:
print(f"Error creating DataFrame for {inst_id} [{timeframe}]: {e}")
continue # Этот continue должен быть на том же уровне отступа

# Convert Timestamp to human-readable format
if 'Timestamp' in df.columns:
df['Timestamp'] = pd.to_numeric(df['Timestamp']) # Преобразование в число
df['Timestamp'] = pd.to_datetime(df['Timestamp'], unit='ms')
df['Date'] = df['Timestamp'].dt.date
df['Time'] = df['Timestamp'].dt.strftime('%H:%M:%S')
df = df[['Date', 'Time', 'Open', 'High', 'Low', 'Close', 'Volume', 'Quote Volume', 'Number of Trades']]

# Save data to the respective sheet
try:
df.to_excel(writer, sheet_name=f'{timeframe}', index=False)
except Exception as e:
print(f"Error writing to Excel for {inst_id} [{timeframe}]: {e}")
continue # Этот continue также должен быть на том же уровне отступа
print(f"Data saved to {file_name}")

# List of trading pairs (instrument IDs) with pairs that include USDT
inst_ids = [
'BTC-USDT', 'ETH-USDT', 'SOL-USDT', 'TON-USDT', 'XRP-USDT', # Use USDT pairs
'1INCH-USDT', 'ADA-USDT', 'ATOM-USDT', 'DOT-USDT', 'EGLD-USDT', # Update to available USDT pairs
'NEAR-USDT', 'TRX-USDT', 'ISP-USDT', 'KSM-USDT', 'ALGO-USDT'
]

# List of timeframes (5m, 15m, 1H, 1D)
timeframes = ['5m', '15m', '1H', '1D'] # Таймфреймы, которые вы указали

# Fetch data and save to Excel for each trading pair
for inst_id in inst_ids:
data_dict = {}
for timeframe in timeframes:
print(f"Fetching data for {inst_id} with timeframe {timeframe}...")
data = fetch_full_history(inst_id, bar=timeframe, years=5)
if data: # Проверяем, что данные не пустые
data_dict[timeframe] = data

if not data_dict:
print(f"No data available for {inst_id}. Skipping.")
continue # Этот continue должен быть на том же уровне отступа

file_name = f"{inst_id}_candlesticks.xlsx"
save_to_excel(inst_id, data_dict, file_name=file_name)

Читайте на 123ru.net


Новости 24/7 DirectAdvert - доход для вашего сайта



Частные объявления в Вашем городе, в Вашем регионе и в России



Smi24.net — ежеминутные новости с ежедневным архивом. Только у нас — все главные новости дня без политической цензуры. "123 Новости" — абсолютно все точки зрения, трезвая аналитика, цивилизованные споры и обсуждения без взаимных обвинений и оскорблений. Помните, что не у всех точка зрения совпадает с Вашей. Уважайте мнение других, даже если Вы отстаиваете свой взгляд и свою позицию. Smi24.net — облегчённая версия старейшего обозревателя новостей 123ru.net. Мы не навязываем Вам своё видение, мы даём Вам срез событий дня без цензуры и без купюр. Новости, какие они есть —онлайн с поминутным архивом по всем городам и регионам России, Украины, Белоруссии и Абхазии. Smi24.net — живые новости в живом эфире! Быстрый поиск от Smi24.net — это не только возможность первым узнать, но и преимущество сообщить срочные новости мгновенно на любом языке мира и быть услышанным тут же. В любую минуту Вы можете добавить свою новость - здесь.




Новости от наших партнёров в Вашем городе

Ria.city

Загруженность дорог Подмосковья в пятницу утром составляет 5 баллов

Стало известно, где пройдет торжественная церемония закрытия Года семьи

Мэр: Москва — один из главных центров развития прорывных технологий в России

Нежная кошка Море

Музыкальные новости

Собянин и Голикова открыли четвертый центр женского здоровья

Московское дерби: "Динамо" и "Локомотив" сразятся за выход в полуфинал Кубка России

В Подмосковье росгвардейцы пришли на помощь пострадавшим в результате ДТП

Большой театр проведет трансляцию «Щелкунчика» перед Новым годом

Новости России

Трамвайные пути на старой трубе: срок эксплуатации коллектора на Московской в Краснодаре, где случился провал, истек более 30 лет назад

В районе Дорогомилово обеспечили свободный проезд и проход вокруг жилого дома

В Можайске первые 5 семей получили ключи от своих квартир в доме на ул Полосухина

Что можно и нельзя делать православным верующим 30 ноября 2024 года в День Григория Чудотворца

Экология в России и мире

Андрей Губин завершил карьеру из-за проблем со здоровьем

"Норильский никель" - мировой лидер среди горнодобывающих компаний по объему социальных расходов

Работники филиала «Северный» ООО «ЛокоТех-Сервис» стали победителями Первенства по теннису среди работников Сольвычегодского железнодорожного узла.

Николай Семёнов – известный российский спортсмен, тренер, блогер и предприниматель.

Спорт в России и мире

Елене Рыбакиной "отдали" вторую победу на Уимблдоне

Даниил Медведев открыл собственный теннисный корт во Франции

Андреа Петкович заявила, что Синнера не включили в номинанты премии ATP из-за допинг-дела

«Настоящий позор». Кафельников отреагировал на допинг‑скандал с Игой Швентек

Moscow.media

Новодевичий монастырь снятый на телефон Xiaomi Redmi 12.

станция метро Черкизовская Москва

Грибочки под снегом

Объявлены победители Ежегодной Национальной Премии Автомобиль Года в России – 2024»











Топ новостей на этот час

Rss.plus






Стало известно, где пройдет торжественная церемония закрытия Года семьи

В Можайске первые 5 семей получили ключи от своих квартир в доме на ул Полосухина

Глава Жуковского провел встречу с жителями в формате выездной администрации

«Пряничный» собор в «городе монастырей»