Итак, мне удалось получить доступ к API от брокера. Удалось получить цены в прямом эфире каждые миллисекунды. Эта потоковая передача является объектом-генератором, я передал объекту итератор, чтобы просмотреть каждую строку типа данных str, которая содержит информацию о различных ценах. Затем я использовал функцию split, чтобы разбить str на список и затем передать его в различные переменные, которые впоследствии можно будет использовать в качестве расчетов для условия входа или выхода из сделок.
однако ... Я чувствую, что должен написать всю свою цену, входя и выходя из сделок внутри цикла for. Если я разорву цикл, цена не будет течь ...
Поэтому мой вопрос: как мне упростить этот код, чтобы мне не пришлось писать все в одном цикле for, который генерирует цены в str? тип данных.
Если я просто распечатаю строку из stream_i, являющегося объектом генератора, без разбиения строк, то это то, что я получаю .. данные одной строки.
"1,1| 8063.9 | 8062.3 | 8065.8 | 8061.5 "
Здесь 1,1 - таблица, добавленная из подписки на сервер, остальные - цены, такие как open, close, high, low ...
Итакя разбил строку и затем передал эти цены в переменные .... чтобы иметь возможность выполнять любые расчеты с ценами.
def xtract_price_5m():
for line in stream_i:
if "|" in line:
table, data = line.split("|", 1)
if table == "1,1":
a_open, a_close, a_high, a_low = data.split("|", 3)
index_allprice = len(a_open + a_close + a_high + a_low)
if index_allprice > 15:
print(f"Open: {a_open} - Close: {a_close} - High: {a_high} - Low: {a_low} ")
if float(a_close) > float(a_open) and (float(a_close) - float(a_open)) < 10 and (float(a_close) - float(a_open)) > 4:
print("BUY BUY BUY !!!!!!")
else:
print("CANDLE TOO BIG OR TOO SMALL")
Если я просто напечатаю строку из stream_iкоторый является объектом-генератором, без разделения строк, то это то, что я получаю ... данные одной строки.
"1,1 | 8063.9 | 8062.3 | 8065.8 | 8061.5"
Shere 1, 1 - таблица, добавленная из подписки сервера, остальные - цены, такие какopen, close, high, low ...
Итак, я разбил строку вверх и затем передал эти цены в переменные ...., чтобы иметь возможность выполнять любые вычисления с ценами.
Есть ли способ, где я могу циклически пройти по этому объекту-генератору, получить цену, затем обновить ее до переменных вне этого цикла, затем повторить ... затем оттуда я могу выполнять вычисления вне этой итерации. Из-за того, что это живой поток обновления данных, это будет бесконечный цикл, повторяющий каждую обновляемую строку. Поэтому, если я прерву цикл, он прекратит потоковую передачу цен.
, например,
функция, которая разбивает строки и затем получает цены в виде отдельных данных
функция, которая затем использует эти данные для выполнения расчетов условий входа или выхода на рынок