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

Andrei22

Members
  • Публикации

    26
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    2

Последний раз Andrei22 выиграл 3 сентября

Публикации Andrei22 были самыми популярными!

Репутация

2 Neutral

Посетители профиля

Блок посетителей профиля отключен и не будет отображаться другим пользователям

  1. в гугле: import telebot описание создания habr.com, 10 минут работы если есть забугорный сервер
  2. Andrei22

    Binance Margin

    Андрей, я конечно дико извиняюсь, но тогда на гитхабе вверху в sapi удалить надо строчки: 'marginLoan': {'url': 'sapi/v1/margin/loan', 'method': 'POST', 'private':True}, 'marginRepay': {'url': 'sapi/v1/margin/repay', 'method': 'POST', 'private':True}, они дублируются внизу ))
  3. Andrei22

    Binance Margin

    типа вот так: 'marginLoanG': {'url': 'sapi/v1/margin/loan', 'method': 'GET', 'private': True}, 'marginRepayG': {'url': 'sapi/v1/margin/repay', 'method': 'GET', 'private': True}, а иначе он постом продолжает занимать )))
  4. Andrei22

    Binance Margin

    еще два не учтенных ! 'marginLoan': {'url': 'sapi/v1/margin/loan', 'method': 'POST', 'private': True}, 'marginRepay': {'url': 'sapi/v1/margin/repay', 'method': 'POST', 'private': True}, они должны быть еще с GETот чтоб получать значения Query loan record (USER_DATA) Get /sapi/v1/margin/loan Weight: 5 Parameters: Name Type Mandatory Description asset STRING YES txId LONG NO the tranId in POST /sapi/v1/margin/loan startTime LONG NO endTime LONG NO current LONG NO Currently querying page. Start from 1. Default:1 size LONG NO Default:10 Max:100 recvWindow LONG NO timestamp LONG YES txId or startTime must be sent. txId takes precedence. и repay тоже добавить GET
  5. Andrei22

    Binance Margin

    Спасибо, вот только еще больше не понимаю свою ошибку вроде все тоже самое а не работало ))) Андрей, кстати в статье два раза marginmaxTransferable. В гитхабе не знаю не смотрел )
  6. Andrei22

    Binance Margin

    может из за того что в строчке signature лишнее добавляется? payload_str = payload_str.decode("utf-8") + "&signature=" + str(sign) Если исправить с post на get то вроде все параметры передает лишнее signature там только ))
  7. Не пойму что не так делаю ? )) Добавил в api строчку: 'marginTransfer': {'url': 'sapi/v1/margin/transfer', 'method': 'POST', 'private': True}, делаю для примера coin ="BNB" transfer = bot.marginTransfer( asset=coin, amount=1, type=1, recvWindow=5000 ) получаю: {"code":-1102,"msg":"Mandatory parameter 'asset|amount|type' was not sent, was empty/null, or malformed."} 09-02 14:35:26 https://api.binance.com:443 "POST /sapi/v1/margin/transfer HTTP/1.1" 400 106 Что нет так? Parameters: Name Type Mandatory Description asset STRING YES The asset being transferred, e.g., BTC amount DECIMAL YES The amount to be transferred type INT YES 1: transfer from main account to margin account 2: transfer from margin account to main account recvWindow LONG NO timestamp LONG YES
  8. На бинансе, и переведенное у Андрея написано так: Откройте подключение к Open a stream to wss://stream.binance.com:9443/ws/bnbbtc@depth Собирайте в буфер информацию, которую получите оттуда Получите текущую информацию (слепок) по стаканам с адреса https://www.binance.com/api/v1/depth?symbol=BNBBTC&limit=1000 У себя в буфере удалите (и не принимайте) все события, у которых u <= lastUpdateId слепка и u > lastUpdateId+1 Каждое новое событие стрима должно быть выше предыдущего u на единицу Данные в каждом событии – абсолютные значения текущей цены и объема Если объем 0, удалите у себя цену Получение данных с 0, которых нет у вас в книге, допускается, и не является какой-либо ошибкой. Получается по api взял слепок из 1000 ордеров, а далее начиная 4 пункта лажа. Ну отфильтрую нулевые объемы, проверю что u новое, а сам updatedepth дает по 10-15 ордеров из них половина с нулевым объемом. Ну даже так, останется 5-10 ордеров свежих, обновлю я их, а остальные то 100, 500, 700 и т.п. их уже может убрали и нет того объема уже! Вопрос есть ли все таки способ по WS брать стаканы (более 30 хотя бы)? Например мне надо для того если ордер выставляю на продажу по маркету на "овномонете" скажем на 50к USDT, чтоб я мог подсчитать среднюю цену которая получится и не напрягать весом в 10 через API.
  9. Andrei22

    Bot для Binance с MACD

    pip install numpy надо еще (На win, пуск->выполнить->cmd)
  10. Andrei22

    Bot для Binance с MACD

    Это работает? Не совсем понятен stoch для чего, он более точный и не так прыгает как простой rsi?
  11. Andrei22

    Бот для Yobit

    в сторону интернета )) Ответа от биржи походу нет. Ключи api прописаны? Модули питона все установлены (pip install .......)? если включали уже до этого, увеличьте число nonce ))
  12. возможно все ))) У вас сейчас написано скорее всего amount + profit + fee, сделайте amount чтоб брал как свободный баланс с биржи. Одновременно несколько пар: Считаете сколько пар активных не купивших quote, делите свободную сумму на кол-во этих пар. Скажем у вас 100$ на четыре пары, первый раз поделится по 25 всем, если две пары скажем продадут за 26 и 28$, то у вас будет 54$ на свободные пары, "функция" их поделит вам по 27$. Если продастся одна пара из четырех, например за 40$ то она одна и будет использовать весь свободный баланс ))
  13. Буржуи пишут что вроде и этого хватает ))) while True: try: ws.run_forever() except: pass 
  14. В продолжение по вебсоектам ))) Как правильно делать реконнект? Не пойму проблему, вроде работает и 3 дня потом вылетает ошибка [WinError 10054] Удаленный хост принудительно разорвал существующее подключение ... ### closed ### Вот часть кода которое я использую: local_time = int(time.time()) restart_time = local_time + 82800 # 23 часа (82800 сек) def on_message(ws, message): global nonce global restart_time nonce += 1 socket_data = json.loads(message) if socket_data['e'] == 'error': # close and restart the socket print(socket_data['e']) print(socket_data['m']) ws.close() ....... local_time = int(time.time()) if local_time > restart_time: print("время рестарта") # ws.close() time.sleep(30) local_time = int(time.time()) restart_time = local_time + 82800 nonce = 0 # ws.on_open = on_open # ws.run_forever() def on_error(ws, error): print(error) def on_close(ws): print("### closed ###") def on_open(ws): print("### connected ###") if __name__ == "__main__": ws = websocket.WebSocketApp( "wss://stream.binance.com:9443/ws/" +............, on_message=on_message, on_error=on_error, on_close=on_close) ws.on_open = on_open while True: try: ws.run_forever() except: pass Запутался уже просто )) 1. Бинанс сам разрывает соединение и мне не нужно это отлавливать по error как сейчас выше? 2. Если надо самому обрывать соединение и реконнектиться то в условии if local_time > restart_time: соедиенние не закрывается (конечно раскомментировав), во всяком случае если в условии прописано ws.on_open = on_open ws.run_forever(), то он напишет заново ### connected ### и такое ощущение что дополнительно не разрывая предыдущие, если закомменитровать ws.on_open = on_open ws.run_forever() то тогда напишет ### closed ###. Если в def on_close(ws): написать ws.on_open = on_open ws.run_forever() то же заново не подключиться. Запутался уже как правильно рестарт сделать )))) То что написано выше, это последнее что придумал, но не уверен и не знаю как проверить правильно ли и одно соединение так получается хоть и работает больше суток.
×
×
  • Создать...