From 01c187a91c91860bdecc52dca55bcf37bb324ba2 Mon Sep 17 00:00:00 2001 From: MuslemRahimi Date: Tue, 23 Jul 2024 10:27:06 +0200 Subject: [PATCH] update dark pool flow --- app/cron_dark_pool_flow.py | 46 ++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/app/cron_dark_pool_flow.py b/app/cron_dark_pool_flow.py index a063300..d49a4bc 100644 --- a/app/cron_dark_pool_flow.py +++ b/app/cron_dark_pool_flow.py @@ -1,5 +1,5 @@ -import time -from datetime import datetime, timedelta + +from datetime import timedelta from GetStartEndDate import GetStartEndDate from concurrent.futures import ThreadPoolExecutor, TimeoutError import intrinio_sdk as intrinio @@ -21,10 +21,11 @@ def save_json(data): ujson.dump(data, file) +identifier = 'GME' source = 'cta_a_delayed' -#start_date, end_date = GetStartEndDate().run() -start_date = '' -end_date = '' +start_date, end_date = GetStartEndDate().run() +start_date = start_date.strftime("%Y-%m-%d") +end_date = end_date.strftime("%Y-%m-%d") start_time = '' end_time = '' timezone = 'UTC' @@ -36,31 +37,30 @@ def save_json(data): def get_data(): data = [] - #count = 0 - next_page = '' - try: - response = intrinio.SecurityApi().get_security_trades(source, start_date=start_date, start_time=start_time, end_date=end_date, end_time=end_time, timezone=timezone, page_size=page_size, darkpool_only=darkpool_only, min_size=min_size, next_page=next_page) - data = response.trades - except Exception as e: - print(e) - - ''' + count = 0 while True: if count == 0: next_page = '' try: - response = intrinio.SecurityApi().get_security_trades(source, start_date=start_date, start_time=start_time, end_date=end_date, end_time=end_time, timezone=timezone, page_size=page_size, darkpool_only=darkpool_only, min_size=min_size, next_page=next_page) - data += response.trades - print(data) + response = intrinio.SecurityApi().get_security_trades_by_symbol(identifier, source, start_date=start_date, start_time=start_time, end_date=end_date, end_time=end_time, timezone=timezone, page_size=page_size, darkpool_only=darkpool_only, min_size=min_size, next_page=next_page) + + filtered_entries = [ + entry.__dict__ for entry in response.trades + if int(entry._price * entry._total_volume) >= 2E9 + ] + + data.extend(filtered_entries) next_page = response.next_page - if not next_page or count == 0: + + if not next_page: break count +=1 + print(f'Current length {len(data)}') except Exception as e: print(e) break - ''' + return data def run(): @@ -73,11 +73,10 @@ def run(): symbol_name_map = {row[0]: row[1] for row in stocks} stock_symbols = list(symbol_name_map.keys()) data = get_data() + print(data) - # Convert each SecurityTrades object to a dictionary - data_dicts = [entry.__dict__ for entry in data] # Filter the data - filtered_data = [entry for entry in data_dicts if entry['_symbol'] in stock_symbols] + filtered_data = [entry for entry in data if entry['_symbol'] in stock_symbols] res = [ { 'symbol': entry['_symbol'], @@ -90,7 +89,6 @@ def run(): for entry in filtered_data ] - print(res) if len(res) > 0: save_json(res) @@ -101,7 +99,7 @@ def run(): future = executor.submit(run) try: # Wait for the result with a timeout of 300 seconds (5 minutes) - future.result(timeout=10) + future.result(timeout=1000) except TimeoutError: print("The operation timed out.") except Exception as e: