Форум устарел! Поддержка тут: https://t.me/osengine_official_support

Актуальные гайды здесь: https://smart-lab.ru/company/os_engine/blog/1024149.php

Загрузка секундных свечей с Биржи Bitmex

Терминал не подключает Эту биржу (Bitmex)

  1. aang32

    Регистрация:
    05.04.19
    Сообщения:
    3
    Был на сайте:
    11.05.22

    Есть потребность погнать тест бота на секундных свечах, боту нужны именно свечи в 1sec. Алгоритм уже есть, нужны только данные. Подскажите кто может)

    aang32
    18.04.2019 09:09
    #1
  2. Алексей Ван Команда форума

    Регистрация:
    02.02.13
    Сообщения:
    1176
    Был на сайте:
    04.12.24
    Цитата: aang32

    Есть потребность погнать тест бота на секундных свечах, боту нужны именно свечи в 1sec. Алгоритм уже есть, нужны только данные. Подскажите кто может)

    Секундные свечи собираются из трейдов. На данный момент Битмекс вроде качает данные, но длиться это очень долго, т.к. количество тиков за один запрос 500 штук за раз. А количество запросов в минуту ограничено. Попробуйте за пару дней для начала скачать. Посмотрите сколько это длится.

    Алексей Ван
    18.04.2019 15:56
    #2
  3. soundchaser

    Регистрация:
    05.04.18
    Сообщения:
    20
    Был на сайте:
    25.08.24

    Приветствую я себе скачивую вот таким классом (это форк основного проэкта)

    https://github.com/RusinDmitrii/OsEngine/blob/master/project/OsEngine/Entity/PreSaveDataSet.cs

    подключаю его в BitMexServer.cs

    вот в эту процедуру

    ///


    /// take tick data on instrument for period
    /// взять тиковые данные по инструменту за определённый период
    ///


    public List GetTickDataToSecurity(Security security, DateTime startTime, DateTime endTime, DateTime lastDate)
    {
    List lastTrades = new List();
    //+++
    PreSaveDataSet ds = new PreSaveDataSet("Bimex",security.Name);
    ds.NewLogMessageEvent += SendLogMessage;
    lastTrades = ds.LoadTrades();
    if (lastTrades.Count > 0)
    {
    lastDate = lastTrades[lastTrades.Count - 1].Time;
    }
    //---
    while (lastDate < endTime)
    {
    lastDate = TimeZoneInfo.ConvertTimeToUtc(lastDate);
    List trades = GetTickHistoryToSecurity(security, startTime, endTime, lastDate);
    if (trades == null ||
    trades.Count == 0)
    {
    lastDate = lastDate.AddSeconds(1);
    Thread.Sleep(2000);
    continue;
    }
    for (int i2 = 0; i2 < trades.Count; i2++)
    {
    Trade ft = lastTrades.Find(x => x.Id == trades[i2].Id);
    if (ft != null)
    {
    trades.RemoveAt(i2);
    }
    }
    if (trades.Count == 0)
    {
    lastDate = lastDate.AddSeconds(1);
    continue;
    }
    DateTime uniTime = trades[trades.Count - 1].Time.ToUniversalTime();
    if (trades.Count != 0 && lastDate < uniTime)
    {
    lastDate = trades[trades.Count - 1].Time;
    }
    else
    {
    lastDate = lastDate.AddSeconds(1);
    }
    lastTrades.AddRange(trades);
    //+++
    ds.SaveTrades(trades);
    //---
    Thread.Sleep(2000);
    }
    return lastTrades;
    }


    тк сервер выдает по 500 записей скорость скачивания получается за сутки выкачивает примерно неделю, если нужно согу прислать выкаченную таким образом тиковую историю по эфиру за 4й кваотал 2018

    soundchaser
    22.04.2019 13:19
    #3
  4. soundchaser

    Регистрация:
    05.04.18
    Сообщения:
    20
    Был на сайте:
    25.08.24

    Суть предложенного костыля в том что он сохраняет промежуточные данные, и можно презапускать плаформу, скачка пойдет с места останова

    soundchaser
    22.04.2019 13:23
    #4