Как получить точные данные из нескольких словарей, которые я получаю на стороне клиента через веб-сокет Python? ⇐ Python
-
Anonymous
Как получить точные данные из нескольких словарей, которые я получаю на стороне клиента через веб-сокет Python?
Я пытаюсь получить ltp (цену последней сделки или «lp» в прикрепленном ниже выводе) для некоторых акций через API брокеров следующим образом:
api.subscribe( [ "НФО|43232", "НФО|43207", "НФО|43224", "НФО|43206", "НФО|43228", "НФО|43214", "НФО|43221", "НФО|43220", ] ) В приведенном выше коде NFO= «обмен» и соответствующий номер 43232 — это номер токена (tk) акции, именно так я могу подписаться на несколько акций, а ниже — функция обратного вызова, где я получаю данные, где я могу выполнять операции с данными, например ltp_data =ick_data[" lp"], в котором я присваиваю 'lp' одной акции глобальной переменной ltp_data, которая постоянно обновляется по мере поступления новых данных, но у меня возникают проблемы при выполнении того же самого для нескольких акций.
def event_handler_feed_update(tick_data): печать (тип (тик_данные)) глобальные ltp_data print(f"обновление фида {tick_data}") а вот пример вывода -
обновление фида {'t': 'tk', 'e': 'NFO', 'tk': '43207', 'ts': 'NIFTY07DEC23P20600', 'pp': '2', ' ls': '50', 'ti': '0,05', 'lp': '0,05', 'pc': '-98,44', 'c': '3,20', 'ft': '1701942487', 'o ': '1,80', 'ч': '2,00', 'л': '0,05', 'ap': '0,88', 'v': '206011850', 'oi': '12497750', 'poi': '7224700', 'bp1': '0,05', 'sp1': '0,10', 'bq1': '770100', 'sq1': '852450'} обновление канала {'t': 'tk', 'e': 'NFO', 'tk': '43224', 'ts': 'NIFTY07DEC23C20800', 'pp': '2', 'ls': '50' , 'ti': '0,05', 'lp': '102,65', 'pc': '-38,40', 'c': '166,65', 'ft': '1701942487', 'o': '164,55', 'h': '164,55', 'l': '59,10', 'ap': '97,94', 'v': '173139250', 'oi': '3691200', 'poi': '2623400', 'bp1 ': '102,65', 'sp1': '102,75', 'bq1': '1450', 'sq1': '450'} обновление канала {'t': 'tk', 'e': 'NFO', 'tk': '43206', 'ts': 'NIFTY07DEC23C20600', 'pp': '2', 'ls': '50' , 'ti': '0,05', 'lp': '302,25', 'pc': '-15,13', 'c': '356,15', 'ft': '1701942487', 'o': '316,45', 'h': '335.15', 'l': '251.00', 'ap': '297.12', 'v': '2883550', 'oi': '775700', 'poi': '1036700', 'bp1 ': '302,25', 'sp1': '302,70', 'bq1': '450', 'sq1': '1600'} обновление канала {'t': 'tk', 'e': 'NFO', 'tk': '43228', 'ts': 'NIFTY07DEC23C20850', 'pp': '2', 'ls': '50' , 'ti': '0,05', 'lp': '52,70', 'pc': '-57,81', 'c': '124,90', 'ft': '1701942487', 'o': '122,35', 'h': '124.10', 'l': '22.25', 'ap': '53.13', 'v': '505757200', 'oi': '10148600', 'poi': '1997350', 'bp1' ': '52,65', 'sp1': '52,70', 'bq1': '2950', 'sq1': '250'} обновление канала {'t': 'tk', 'e': 'NFO', 'tk': '43214', 'ts': 'NIFTY07DEC23C20700', 'pp': '2', 'ls': '50' , 'ti': '0,05', 'lp': '202,40', 'pc': '-21,76', 'c': '258,70', 'ft': '1701942487', 'o': '226,65', 'h': '236.05', 'l': '151.00', 'ap': '193.76', 'v': '15679350', 'oi': '800600', 'poi': '1048900', 'bp1 ': '202,40', 'sp1': '202,65', 'bq1': '1550', 'sq1': '400'} обновление канала {'t': 'tk', 'e': 'NFO', 'tk': '43221', 'ts': 'NIFTY07DEC23P20750', 'pp': '2', 'ls': '50' , 'ti': '0,05', 'lp': '0,05', 'pc': '-99,38', 'c': '8,05', 'ft': '1701942487', 'o': '5,00', 'h': '10,75', 'l': '0,05', 'ap': '3,21', 'v': '458640800', 'oi': '8360600', 'poi': '4831550', 'bp1 ': '0.05', 'sp1': '0.10', 'bq1': '1202700', 'sq1': '1220700'} обновление канала {'t': 'tk', 'e': 'NFO', 'tk': '43220', 'ts': 'NIFTY07DEC23C20750', 'pp': '2', 'ls': '50' , 'ti': '0,05', 'lp': '152,60', 'pc': '-27,76', 'c': '211,25', 'ft': '1701942487', 'o': '165,00', 'h': '186,05', 'l': '103,85', 'ap': '142,92', 'v': '24274500', 'oi': '629050', 'poi': '662650', 'bp1 ': '152,50', 'sp1': '152,60', 'bq1': '750', 'sq1': '250'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43228', 'lp': '52.55', 'pc': '-57.93', 'ft': '1701942488 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43224', 'lp': '102.60', 'pc': '-38.43', 'ft': '1701942488 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43220', 'lp': '152.40', 'pc': '-27.86', 'ft': '1701942488 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43214', 'lp': '202.50', 'pc': '-21.72', 'ft': '1701942488 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43228', 'lp': '52.50', 'pc': '-57.97', 'ft': '1701942488 ', 'v': '505792900', 'bp1': '52,50', 'sp1': '52,60', 'bq1': '900', 'sq1': '400'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43224', 'lp': '102.55', 'pc': '-38.46', 'ft': '1701942488 ', 'v': '173143200', 'bp1': '102,55', 'sp1': '102,60', 'bq1': '2150', 'sq1': '350'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43220', 'ft': '1701942488', 'v': '24276700', 'bp1': '152.35' , 'sp1': '152,50', 'bq1': '300', 'sq1': '350'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43214', 'ft': '1701942488', 'v': '15680900', 'bp1': '202.25' , 'sp1': '202,55', 'bq1': '50', 'sq1': '350'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43206', 'ft': '1701942488', 'v': '2883800', 'bq1': '200' , 'кв1': '1500'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43221', 'ft': '1701942488', 'v': '458643050', 'bq1': '1200450' , 'sq1': '1220750'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43207', 'lp': '0.10', 'pc': '-96.88', 'ft': '1701942488 ', 'v': '206012650', 'bq1': '771300', 'sq1': '851700'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43232', 'ft': '1701942488', 'v': '2626000900', 'bq1': '3777150' , 'sq1': '2412850'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43206', 'lp': '302.65', 'pc': '-15.02', 'ft': '1701942488 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43228', 'lp': '52.45', 'pc': '-58.01', 'ft': '1701942489 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43224', 'lp': '102.50', 'pc': '-38.49', 'ft': '1701942489 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43220', 'lp': '152.30', 'pc': '-27.91', 'ft': '1701942489 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43214', 'lp': '202.40', 'pc': '-21.76', 'ft': '1701942489 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43228', 'ft': '1701942489', 'v': '505803900', 'bp1': '52.40' , 'sp1': '52,50', 'bq1': '8650', 'sq1': '2200'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43224', 'ft': '1701942489', 'v': '173147850', 'bp1': '102.45' , 'sp1': '102,50', 'bq1': '1900', 'sq1': '1100'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43220', 'ft': '1701942489', 'v': '24277500', 'bp1': '152.30' , 'sp1': '152,40', 'bq1': '50', 'sq1': '550'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43214', 'ft': '1701942489', 'v': '15681450', 'bp1': '202.40' , 'sp1': '202,50', 'bq1': '1350', 'sq1': '800'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43206', 'ft': '1701942489', 'v': '2883850', 'sp1': '302.55' , 'кв1': '50'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43221', 'ft': '1701942489', 'v': '458649450', 'bq1': '1192900' , 'sq1': '1220600'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43207', 'ft': '1701942489', 'v': '206025150', 'bq1': '759800' , 'sq1': '847800'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43232', 'lp': '0.20', 'pc': '-99.43', 'ft': '1701942489 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43232', 'ft': '1701942489', 'v': '2626229800', 'bq1': '3569400' , 'sq1': '2453000'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43207', 'lp': '0.05', 'pc': '-98.44', 'ft': '1701942489 ' Я хочу специально фильтровать только нужные значения из этой группы разных словарей, которые я получаю в режиме реального времени, я хочу назначить каждый «lp» соответствующего словаря уникальной переменной, которая должна продолжать обновляться по мере поступления данных, а также создайте пустой словарь {}, например - 'tk':'lp', который также должен продолжать обновляться, поскольку данные продолжают поступать в реальном времени через веб-сокет, как я могу этого добиться?
Я пытаюсь получить ltp (цену последней сделки или «lp» в прикрепленном ниже выводе) для некоторых акций через API брокеров следующим образом:
api.subscribe( [ "НФО|43232", "НФО|43207", "НФО|43224", "НФО|43206", "НФО|43228", "НФО|43214", "НФО|43221", "НФО|43220", ] ) В приведенном выше коде NFO= «обмен» и соответствующий номер 43232 — это номер токена (tk) акции, именно так я могу подписаться на несколько акций, а ниже — функция обратного вызова, где я получаю данные, где я могу выполнять операции с данными, например ltp_data =ick_data[" lp"], в котором я присваиваю 'lp' одной акции глобальной переменной ltp_data, которая постоянно обновляется по мере поступления новых данных, но у меня возникают проблемы при выполнении того же самого для нескольких акций.
def event_handler_feed_update(tick_data): печать (тип (тик_данные)) глобальные ltp_data print(f"обновление фида {tick_data}") а вот пример вывода -
обновление фида {'t': 'tk', 'e': 'NFO', 'tk': '43207', 'ts': 'NIFTY07DEC23P20600', 'pp': '2', ' ls': '50', 'ti': '0,05', 'lp': '0,05', 'pc': '-98,44', 'c': '3,20', 'ft': '1701942487', 'o ': '1,80', 'ч': '2,00', 'л': '0,05', 'ap': '0,88', 'v': '206011850', 'oi': '12497750', 'poi': '7224700', 'bp1': '0,05', 'sp1': '0,10', 'bq1': '770100', 'sq1': '852450'} обновление канала {'t': 'tk', 'e': 'NFO', 'tk': '43224', 'ts': 'NIFTY07DEC23C20800', 'pp': '2', 'ls': '50' , 'ti': '0,05', 'lp': '102,65', 'pc': '-38,40', 'c': '166,65', 'ft': '1701942487', 'o': '164,55', 'h': '164,55', 'l': '59,10', 'ap': '97,94', 'v': '173139250', 'oi': '3691200', 'poi': '2623400', 'bp1 ': '102,65', 'sp1': '102,75', 'bq1': '1450', 'sq1': '450'} обновление канала {'t': 'tk', 'e': 'NFO', 'tk': '43206', 'ts': 'NIFTY07DEC23C20600', 'pp': '2', 'ls': '50' , 'ti': '0,05', 'lp': '302,25', 'pc': '-15,13', 'c': '356,15', 'ft': '1701942487', 'o': '316,45', 'h': '335.15', 'l': '251.00', 'ap': '297.12', 'v': '2883550', 'oi': '775700', 'poi': '1036700', 'bp1 ': '302,25', 'sp1': '302,70', 'bq1': '450', 'sq1': '1600'} обновление канала {'t': 'tk', 'e': 'NFO', 'tk': '43228', 'ts': 'NIFTY07DEC23C20850', 'pp': '2', 'ls': '50' , 'ti': '0,05', 'lp': '52,70', 'pc': '-57,81', 'c': '124,90', 'ft': '1701942487', 'o': '122,35', 'h': '124.10', 'l': '22.25', 'ap': '53.13', 'v': '505757200', 'oi': '10148600', 'poi': '1997350', 'bp1' ': '52,65', 'sp1': '52,70', 'bq1': '2950', 'sq1': '250'} обновление канала {'t': 'tk', 'e': 'NFO', 'tk': '43214', 'ts': 'NIFTY07DEC23C20700', 'pp': '2', 'ls': '50' , 'ti': '0,05', 'lp': '202,40', 'pc': '-21,76', 'c': '258,70', 'ft': '1701942487', 'o': '226,65', 'h': '236.05', 'l': '151.00', 'ap': '193.76', 'v': '15679350', 'oi': '800600', 'poi': '1048900', 'bp1 ': '202,40', 'sp1': '202,65', 'bq1': '1550', 'sq1': '400'} обновление канала {'t': 'tk', 'e': 'NFO', 'tk': '43221', 'ts': 'NIFTY07DEC23P20750', 'pp': '2', 'ls': '50' , 'ti': '0,05', 'lp': '0,05', 'pc': '-99,38', 'c': '8,05', 'ft': '1701942487', 'o': '5,00', 'h': '10,75', 'l': '0,05', 'ap': '3,21', 'v': '458640800', 'oi': '8360600', 'poi': '4831550', 'bp1 ': '0.05', 'sp1': '0.10', 'bq1': '1202700', 'sq1': '1220700'} обновление канала {'t': 'tk', 'e': 'NFO', 'tk': '43220', 'ts': 'NIFTY07DEC23C20750', 'pp': '2', 'ls': '50' , 'ti': '0,05', 'lp': '152,60', 'pc': '-27,76', 'c': '211,25', 'ft': '1701942487', 'o': '165,00', 'h': '186,05', 'l': '103,85', 'ap': '142,92', 'v': '24274500', 'oi': '629050', 'poi': '662650', 'bp1 ': '152,50', 'sp1': '152,60', 'bq1': '750', 'sq1': '250'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43228', 'lp': '52.55', 'pc': '-57.93', 'ft': '1701942488 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43224', 'lp': '102.60', 'pc': '-38.43', 'ft': '1701942488 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43220', 'lp': '152.40', 'pc': '-27.86', 'ft': '1701942488 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43214', 'lp': '202.50', 'pc': '-21.72', 'ft': '1701942488 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43228', 'lp': '52.50', 'pc': '-57.97', 'ft': '1701942488 ', 'v': '505792900', 'bp1': '52,50', 'sp1': '52,60', 'bq1': '900', 'sq1': '400'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43224', 'lp': '102.55', 'pc': '-38.46', 'ft': '1701942488 ', 'v': '173143200', 'bp1': '102,55', 'sp1': '102,60', 'bq1': '2150', 'sq1': '350'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43220', 'ft': '1701942488', 'v': '24276700', 'bp1': '152.35' , 'sp1': '152,50', 'bq1': '300', 'sq1': '350'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43214', 'ft': '1701942488', 'v': '15680900', 'bp1': '202.25' , 'sp1': '202,55', 'bq1': '50', 'sq1': '350'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43206', 'ft': '1701942488', 'v': '2883800', 'bq1': '200' , 'кв1': '1500'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43221', 'ft': '1701942488', 'v': '458643050', 'bq1': '1200450' , 'sq1': '1220750'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43207', 'lp': '0.10', 'pc': '-96.88', 'ft': '1701942488 ', 'v': '206012650', 'bq1': '771300', 'sq1': '851700'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43232', 'ft': '1701942488', 'v': '2626000900', 'bq1': '3777150' , 'sq1': '2412850'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43206', 'lp': '302.65', 'pc': '-15.02', 'ft': '1701942488 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43228', 'lp': '52.45', 'pc': '-58.01', 'ft': '1701942489 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43224', 'lp': '102.50', 'pc': '-38.49', 'ft': '1701942489 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43220', 'lp': '152.30', 'pc': '-27.91', 'ft': '1701942489 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43214', 'lp': '202.40', 'pc': '-21.76', 'ft': '1701942489 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43228', 'ft': '1701942489', 'v': '505803900', 'bp1': '52.40' , 'sp1': '52,50', 'bq1': '8650', 'sq1': '2200'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43224', 'ft': '1701942489', 'v': '173147850', 'bp1': '102.45' , 'sp1': '102,50', 'bq1': '1900', 'sq1': '1100'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43220', 'ft': '1701942489', 'v': '24277500', 'bp1': '152.30' , 'sp1': '152,40', 'bq1': '50', 'sq1': '550'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43214', 'ft': '1701942489', 'v': '15681450', 'bp1': '202.40' , 'sp1': '202,50', 'bq1': '1350', 'sq1': '800'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43206', 'ft': '1701942489', 'v': '2883850', 'sp1': '302.55' , 'кв1': '50'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43221', 'ft': '1701942489', 'v': '458649450', 'bq1': '1192900' , 'sq1': '1220600'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43207', 'ft': '1701942489', 'v': '206025150', 'bq1': '759800' , 'sq1': '847800'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43232', 'lp': '0.20', 'pc': '-99.43', 'ft': '1701942489 '} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43232', 'ft': '1701942489', 'v': '2626229800', 'bq1': '3569400' , 'sq1': '2453000'} обновление канала {'t': 'tf', 'e': 'NFO', 'tk': '43207', 'lp': '0.05', 'pc': '-98.44', 'ft': '1701942489 ' Я хочу специально фильтровать только нужные значения из этой группы разных словарей, которые я получаю в режиме реального времени, я хочу назначить каждый «lp» соответствующего словаря уникальной переменной, которая должна продолжать обновляться по мере поступления данных, а также создайте пустой словарь {}, например - 'tk':'lp', который также должен продолжать обновляться, поскольку данные продолжают поступать в реальном времени через веб-сокет, как я могу этого добиться?
Мобильная версия