Использование веб-сокетов с потоком в Python (для торговли криптовалютой)Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Использование веб-сокетов с потоком в Python (для торговли криптовалютой)

Сообщение Anonymous »


Я пытаюсь создать программу торговли криптовалютой в Upbit, используя Python.

Я хочу создать две темы: В первом потоке криптовалюта в реальном времени будет получена с помощью Upbit-вебсокетов. Во втором потоке я получаю цену из первого потока, и если цена выше/ниже определенной цены, я хочу продать/купить ее.

Я создал пример кода, который показывает цену криптовалюты в реальном времени, используя веб-сокеты, как показано ниже:

импортировать json импортировать асинхронный код импортировать гнездо_asyncio из upbit.websocket импортировать UpbitWebSocket гнездо_asyncio.apply() тикер асинхронного определения (sock, payload): асинхронно с sock как conn: ожидайте conn.send (полезная нагрузка) пока правда: получение = ожидание conn.recv() данные = Recv.decode('utf8') результат = json.loads(данные) печать (результат) носок = UpbitWebSocket() валюты = ['KRW-BTC'] type_field = sock.generate_type_field( тип = 'тикер', коды=валюты ) полезная нагрузка = sock.generate_payload( type_fields=[type_field] ) event_loop = asyncio.get_event_loop() event_loop.run_until_complete(тикер(sock, payload)) Это работает хорошо. Опираясь на этот код, я попытался перейти к следующему шагу. Перед реальной торговлей я хотел напечатать цену криптовалюты во втором потоке, что достигается первым потоком. Я написал код, как показано ниже, но он работает неправильно.

импортировать json импортировать асинхронный код импортировать гнездо_asyncio импорт потоков из upbit.websocket импортировать UpbitWebSocket время импорта импортировать трассировку очередь импорта трассировкаmalloc.start() гнездо_asyncio.apply() # Функция для получения цены BTC в реальном времени асинхронный тикер определения (sock, payload, Price_queue): асинхронно с sock как conn: ожидайте conn.send (полезная нагрузка) пока правда: получение = ожидание conn.recv() данные = Recv.decode('utf8') результат = json.loads(данные) Price_queue.put(result) # Помещаем цену в очередь # Поток для печати цены BTC защита print_price_thread(price_queue): пока правда: цена = цена_queue.get() # Получаем цену из очереди печать (цена) носок = UpbitWebSocket() валюты = ['KRW-BTC'] type_field = sock.generate_type_field( тип = 'тикер', коды=валюты ) полезная нагрузка = sock.generate_payload( type_fields=[type_field] ) Price_queue = Queue.Queue() # Создаем очередь для передачи цен между потоками # Создаем и запускаем потоки Price_fetcher = threading.Thread(target=ticker, args=(sock, payload, Price_queue)) Price_printer = threading.Thread(target=print_price_thread, args=(price_queue,)) # Запускаем оба потока цена_fetcher.start() цена_принтер.старт() Я думаю, что использовать потоки и asyncio довольно сложно. Есть ли способ заставить приведенный выше код работать?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»