Есть сторонние работающие шлюзы на Binance. Вроде, годовая тиковая история фьючерсов со снепшотом 100 мс доступна через CopyTicks.
внезапный вопрос, а где вы на Бинансе взяли тики ? их там нет, они не публичны и их внутренняя кухня :-)
там во все поля тикеры - срезы цен по таймеру, что полезный но несколько иной коленкор, усечённый аналог тф 0.1с . И со стаканом так-же.
чуть другой приоритет генерации, но например нейронки он сведёт с недалёкого ума. Ближе к терминам MT: Тик - цена поменялась больше чем на X, Тикер - прошёл квант времени Y.
внезапный вопрос, а где вы на Бинансе взяли тики ? их там нет, они не публичны и их внутренняя кухня :-)
там во все поля тикеры - срезы цен по таймеру, что полезный но несколько иной коленкор, усечённый аналог тф 0.1с . И со стаканом так-же.
чуть другой приоритет генерации, но например нейронки он сведёт с недалёкого ума. Ближе к терминам MT: Тик - цена поменялась больше чем на X, Тикер - прошёл квант времени Y.
Могу однозначно подтвердить что в части т.н. "futures" Binance реально "кухня", а не биржа. Биржевые торги там только на споте, а их futures == CFD обычных форекс-брокеров.
А подробнее можно? Для себя интересно, так как доверия к криптобиржам у меня было немного больше, чем к форекс кухням.
Если нужна история - можете обратиться в ЛС.
Спасибо за предложение.
Мне достаточно и дневных данных, просто нужно по более 50+ символам.
По этому набросал скрипт, что удовлетворяет мои потребности, может кому тоже пригодится.
Python Binance Futures USD-M export
(#TODO Batch downloader, в одном запросе максимум возвращает 1400 данных по свечам)
(#TODO Check delisted symbols, так данные для icpusdt грузятся удачно, а символ убран еще 2022.06.10 с обзора рынка, сейчас есть только icpbusd)
(#TODO Fix tick_volume value, по умолчанию поставлено 10, может влиять на производительность в тестере стратегий):
import requests import json import pandas as pd import datetime as dt import os LIMIT = 1400 #TODO Batch downloader symbols = ['BTCUSDT', 'ETHUSDT', 'SOLUSDT'] interval = '1d' #chart intervals: 1m 3m 5m 15m 30m 1h 2h 4h 6h 8h 12h 1d 3d 1w 1M start = str(int(dt.datetime(2020,5,1).timestamp()*1000)) end = str(int(dt.datetime(2022,8,1).timestamp()*1000)) outdir = './MQL5/Files/Binance_Import' if not os.path.exists(outdir): os.mkdir(outdir) url = 'https://fapi.binance.com/fapi/v1/klines' for symbol in symbols: print(symbol) par = {'symbol': symbol, 'interval': interval, 'startTime': start, 'endTime': end, 'LIMIT':LIMIT} req = requests.get(url, params= par) json_data = json.loads(req.text) data = pd.DataFrame(json_data) data.columns = ['datetime', 'open', 'high', 'low', 'close', 'volume','close_time', 'qav', 'num_trades','taker_base_vol', 'taker_quote_vol', 'ignore'] data.datetime /= 1000 data.datetime = data.datetime.astype('int64') data['tick_volume'] = 10 data['spread'] = 1 data['real_volume'] = 10 filepath = os.path.join(outdir, symbol+'.csv') data.to_csv(filepath, columns=['datetime', 'open', 'high', 'low', 'close', 'tick_volume', 'spread', 'real_volume'], sep='\t', index = None)
MT5 Import:
string ImportFileFindNext(string folder_path){ static string prev_folder; static ulong handle; string filename; if(prev_folder != folder_path){ FileFindClose(handle); prev_folder = folder_path; handle = FileFindFirst(prev_folder + "/*.*", filename); } else{ FileFindNext(handle, filename); } return filename; } string ImportGetSymbolName(string file_name){ int dot_pos = StringFind(file_name, "."); return StringSubstr(file_name, 0, dot_pos); } void ImportFileReadCsvData(string filepath, MqlRates &rates[], string delimiter = "\t"){ ZeroMemory(rates); int handle = FileOpen(filepath, FILE_READ | FILE_ANSI | FILE_CSV, '\t'); while(!FileIsLineEnding(handle)){ FileReadString(handle); } int size = 0; while(!FileIsEnding(handle)){ ArrayResize(rates, size+1, 2*(size+1)); rates[size].time = datetime(FileReadNumber(handle)); rates[size].open = FileReadNumber(handle); rates[size].high = FileReadNumber(handle); rates[size].low = FileReadNumber(handle); rates[size].close = FileReadNumber(handle); rates[size].tick_volume = long(FileReadNumber(handle)); rates[size].spread = int(FileReadNumber(handle)); rates[size].real_volume = long(FileReadNumber(handle)); ++size; } FileClose(handle); } void OnStart() { string import_folder = "Binance_import"; string custom_symbol_path = "Binance"; string next_file = ImportFileFindNext(import_folder); while(StringLen(next_file) > 0){ MqlRates rates[]; ImportFileReadCsvData(import_folder + "/" + next_file, rates); string symbol_name = ImportGetSymbolName(next_file); ArrayReverse(rates); CustomSymbolCreate(symbol_name, custom_symbol_path); CustomRatesUpdate(symbol_name,rates); SymbolSelect(symbol_name, true); next_file = ImportFileFindNext(import_folder); } }
Спасибо за предложение.
Мне достаточно и дневных данных, просто нужно по более 50+ символам.
По этому набросал скрипт, что удовлетворяет мои потребности, может кому тоже пригодится.
Python Binance Futures USD-M export
(#TODO Batch downloader, в одном запросе максимум возвращает 1400 данных по свечам)
(#TODO Check delisted symbols, так данные для icpusdt грузятся удачно, а символ убран еще 2022.06.10 с обзора рынка, сейчас есть только icpbusd):
MT5 Import:
У вас "от балды" задан tick_volume. Почитайте на что он влияет и как его задавать.
В любом случаи, спасибо за замечание, буду знать на будущее...
Хотелось бы обратить внимание разработчиков на CustomRatesUpdate и ее не лучшую реализацию, которая сделана тупо по ТЗ без какой-либо заботы о реальных пользователях:
1) Если данные tick_volume, spread, real_volume забить нулями - все успешно отработает, но график будет черным и нерабочим;
2) Если массив MqlRates rates[] будет отсортирован не в ту сторону - все успешно отработает, но график будет черным и нерабочим, а данные вообще не добавлятся;

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Платформа Binance Institutional представляет новый внутренний шлюз для брокеров MetaTrader 5 (MT5).
Сервис позволит брокерам напрямую соединить внешний сервер MT5 с источником ликвидности на Binance.
Меня интересуют исторические данные по фьючерсам USDⓈ-M Binance для их последующего анализа в МТ5.
Если у кого-то есть доступ к тестовым серверам МТ с шлюзом от Binance, по возможности прошу поделиться.
Спасибо.