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

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

Электронные заказные письма в ДГИ можно направить с сайта «Почты России»

В Рузском округе состоится мастер-класс по изготовлению снежинок из бумаги

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





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

Новости от 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 лет назад

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

LADA Niva Travel: какие комплектации предусмотрены

"Динамо" подает в ЭСК РФС: инцидент с Тюкавиным требует пересмотра решений

Техник-паспортист СЛД «Сольвычегодск» Марина Созинова отмечена Благодарственным письмом от Совета женщин Сольвычегодского региона.

На заводах Желдорреммаш обновляется парк самоходной техники

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

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

Ресторан столичной сети Tehnikum откроется в комплексе на месте бывшего ДК «Телта» 

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

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

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

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

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

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

Компания «КЕНГУРУ.ПРО» приняла участие в благоустройстве набережной Махачкалы

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

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

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

Динара Сафина назвала турниры Большого шлема, которые Даниил Медведев может выиграть в следующем сезоне

Зарина Дияс узнала хорошую новость от WTA

Moscow.media

«Грузовичкоф» на передовой новых коллабораций с блогерами: выступление Наталии Поникаровской на конференции The Trends

В Азербайджане стартует третий этап проекта «Русский язык: читаем, слушаем, смотрим в странах СНГ»

Технологии защиты и комфорта StarLine представили на выставке Mondial de l’Auto Paris 2024

Филиал № 4 ОСФР по Москве и Московской области напоминает: С начала года сотрудники контакт-центра Отделения СФР по Москве и Московской области проконсультировали более 880 тысяч граждан











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

Rss.plus






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

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

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

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