update dark pool flow

This commit is contained in:
MuslemRahimi 2024-07-23 10:27:06 +02:00
parent 39c1e93572
commit 01c187a91c

View File

@ -1,5 +1,5 @@
import time
from datetime import datetime, timedelta from datetime import timedelta
from GetStartEndDate import GetStartEndDate from GetStartEndDate import GetStartEndDate
from concurrent.futures import ThreadPoolExecutor, TimeoutError from concurrent.futures import ThreadPoolExecutor, TimeoutError
import intrinio_sdk as intrinio import intrinio_sdk as intrinio
@ -21,10 +21,11 @@ def save_json(data):
ujson.dump(data, file) ujson.dump(data, file)
identifier = 'GME'
source = 'cta_a_delayed' source = 'cta_a_delayed'
#start_date, end_date = GetStartEndDate().run() start_date, end_date = GetStartEndDate().run()
start_date = '' start_date = start_date.strftime("%Y-%m-%d")
end_date = '' end_date = end_date.strftime("%Y-%m-%d")
start_time = '' start_time = ''
end_time = '' end_time = ''
timezone = 'UTC' timezone = 'UTC'
@ -36,31 +37,30 @@ count = 0
def get_data(): def get_data():
data = [] data = []
#count = 0 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)
'''
while True: while True:
if count == 0: if count == 0:
next_page = '' next_page = ''
try: 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) 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)
data += response.trades
print(data) 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 next_page = response.next_page
if not next_page or count == 0:
if not next_page:
break break
count +=1 count +=1
print(f'Current length {len(data)}')
except Exception as e: except Exception as e:
print(e) print(e)
break break
'''
return data return data
def run(): def run():
@ -73,11 +73,10 @@ def run():
symbol_name_map = {row[0]: row[1] for row in stocks} symbol_name_map = {row[0]: row[1] for row in stocks}
stock_symbols = list(symbol_name_map.keys()) stock_symbols = list(symbol_name_map.keys())
data = get_data() data = get_data()
print(data)
# Convert each SecurityTrades object to a dictionary
data_dicts = [entry.__dict__ for entry in data]
# Filter the 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 = [ res = [
{ {
'symbol': entry['_symbol'], 'symbol': entry['_symbol'],
@ -90,7 +89,6 @@ def run():
for entry in filtered_data for entry in filtered_data
] ]
print(res)
if len(res) > 0: if len(res) > 0:
save_json(res) save_json(res)
@ -101,7 +99,7 @@ if __name__ == "__main__":
future = executor.submit(run) future = executor.submit(run)
try: try:
# Wait for the result with a timeout of 300 seconds (5 minutes) # Wait for the result with a timeout of 300 seconds (5 minutes)
future.result(timeout=10) future.result(timeout=1000)
except TimeoutError: except TimeoutError:
print("The operation timed out.") print("The operation timed out.")
except Exception as e: except Exception as e: