Перейти к публикации
Форум ботоводов

Синхронизация времени в боте для Binance


Рекомендованные сообщения

Напишу тут про синхронизацию )))

Все равно не работает синхронизация времени как написано в "Бот для бинанса с индикаторами".

Я что то не до понимаю ))

if __name__ == "__main__":
    sync_time(bot, log, False, limits)
    t1 = threading.Thread(target=main_flow)
    t2 = threading.Thread(target=sync_time, args=(bot, log, True, limits))
    threads = [t1, t2]
    for t in threads:
        t.start()
    for t in threads:
        t.join()

этот блок кода создаст второй поток и запустит функцию sync_time передав туда limits для определения серверного времени

в функции же включится цикл и limits то ему передастся только один раз при включении !! Или я не прав?

def sync_time(bot, log, pause, limits):
    while True:
        try:
            # Получаем ограничения торгов по всем парам с биржи
            local_time = int(time.time())
            server_time = int(limits['serverTime']) // 1000

            # Бесконечный цикл программы
            shift_seconds = server_time - local_time
            if local_time + shift_seconds != server_time:
                bot.set_shift_seconds(shift_seconds)

получается что когда пройдет таймаут

if pause:
    time.sleep(10000)

цикл начнется заново, local_time возьмет через time.time(), а вот server_time то останется прежним !!!

shift_second станет -10000 и условие ниже никогда не выполнится.

Голову сломал как второй поток берет заново время биржи.

2 вопроса: Может где то в main потоке надо как то передавать повторно в поток 2 limits?

Или в функции где if pause после time.sleep брать новый limits?

Ссылка на комментарий
Поделиться на других сайтах

Что то новая залитая версия идентичная старой ) Уже сравнение сделал файлов и по размеру и содержимому. Не вижу что изменилось )))

Ссылка на комментарий
Поделиться на других сайтах

Доброго времени суток! Помогите разобраться. Написал бота для торговле фьючерсами на Bitmex. Сейчас пытаюсь перешить его на Binance фьючерсы. Всё встало из за того, что не могу поставить ордер купить по рынку. Пишет:

{"code":-1102,"msg":"Mandatory parameter 'timestamp' was not sent, was empty/null, or malformed."}

хотя я передаю этот параметр:

{'symbol': 'BTCUSDT', 'recvWindow': 5000, 'side': 'SELL', 'type': 'MARKET', 'quantity': 0.001, 'timestamp': 1575376182000}

что не так?

Ссылка на комментарий
Поделиться на других сайтах

  • 2 years later...

Тут ошибка в коде, это условие никогда не выполнится, сначала берется разница между сервером и локальным временем, затем в условии прибавляем к разнице локальное время, сначала вычли потом прибавили)) получается между условием != значения всегда будут одинаковыми, и условие никогда не сработает. Может тут имелось ввиду в условии?

local_time != server_time

Снимок.JPG

Изменено пользователем Newalyashka
Ссылка на комментарий
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...