Files
v2realbot/testy/output_metriky_tradeList.py
2023-08-24 21:12:45 +02:00

1049 lines
36 KiB
Python

import pandas as pd
from v2realbot.utils.utils import AttributeDict
from v2realbot.common.model import TradeEvent, TradeUpdate, Order
from v2realbot.enums.enums import OrderSide, OrderStatus, OrderType
import datetime
from uuid import UUID
#testing tradelist
tradeList = [
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('67affc55-fa98-446f-8ac0-eb0bb494f450'),
order=Order(
id=UUID('ae8b1fff-8a87-4ec2-af7d-48765c62afc5'),
submitted_at=datetime.datetime(2023, 3, 24, 17, 58, 1, 538364),
filled_at=datetime.datetime(2023, 3, 24, 17, 58, 30, 735317),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.56,
side=OrderSide.BUY,
limit_price=42.56
),
timestamp=datetime.datetime(2023, 3, 24, 17, 58, 30, 735317),
position_qty=10.0,
price=42.56,
qty=10.0,
value=425.6,
cash=99574.4,
pos_avg_price=42.56
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('51b872ed-98f1-4540-af13-6d8beb6ab660'),
order=Order(
id=UUID('5cae451b-6c46-47d5-8a43-023569eebcac'),
submitted_at=datetime.datetime(2023, 3, 24, 18, 0, 43, 790484),
filled_at=datetime.datetime(2023, 3, 24, 18, 0, 46, 336552),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.51,
side=OrderSide.BUY,
limit_price=42.51
),
timestamp=datetime.datetime(2023, 3, 24, 18, 0, 46, 336552),
position_qty=20.0,
price=42.51,
qty=10.0,
value=425.09999999999997,
cash=99149.29999999999,
pos_avg_price=42.535000000000004
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('86e67324-8b74-4f67-bac7-16f2564f117d'),
order=Order(
id=UUID('f04a52b4-74e0-4de8-9ec3-a89d608e2c8d'),
submitted_at=datetime.datetime(2023, 3, 24, 18, 3, 20, 914489),
filled_at=datetime.datetime(2023, 3, 24, 18, 3, 22, 529390),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.44,
side=OrderSide.BUY,
limit_price=42.44
),
timestamp=datetime.datetime(2023, 3, 24, 18, 3, 22, 529390),
position_qty=30.0,
price=42.44,
qty=10.0,
value=424.4,
cash=98724.9,
pos_avg_price=42.50333333333333
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('8ef5eb96-9dfa-486b-b52b-bd1cc10ab75d'),
order=Order(
id=UUID('fae4fd0d-d1e4-46e2-85e5-f32708780e77'),
submitted_at=datetime.datetime(2023, 3, 24, 18, 3, 22, 575390),
filled_at=datetime.datetime(2023, 3, 24, 18, 5, 37, 585264),
canceled_at=None,
symbol='C',
qty=30,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=30,
filled_avg_price=42.52,
side=OrderSide.SELL,
limit_price=42.52
),
timestamp=datetime.datetime(2023, 3, 24, 18, 5, 37, 585264),
position_qty=0.0,
price=42.52,
qty=30.0,
value=1275.6000000000001,
cash=100000.5,
pos_avg_price=0.0
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('1b3ea95a-b51c-4894-83e1-82364695047a'),
order=Order(
id=UUID('40aef04b-677f-4429-9a6f-05de170df1ae'),
submitted_at=datetime.datetime(2023, 3, 24, 18, 10, 45, 566915),
filled_at=datetime.datetime(2023, 3, 24, 18, 11, 6, 387022),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.42,
side=OrderSide.BUY,
limit_price=42.42
),
timestamp=datetime.datetime(2023, 3, 24, 18, 11, 6, 387022),
position_qty=10.0,
price=42.42,
qty=10.0,
value=424.20000000000005,
cash=99576.3,
pos_avg_price=42.42
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('44baaa7c-4ff6-4e16-ac4a-0ae45a050c03'),
order=Order(
id=UUID('21b961ac-8129-4800-babd-81bb87eccfda'),
submitted_at=datetime.datetime(2023, 3, 24, 18, 13, 20, 777011),
filled_at=datetime.datetime(2023, 3, 24, 18, 14, 38, 586145),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.38,
side=OrderSide.BUY,
limit_price=42.38
),
timestamp=datetime.datetime(2023, 3, 24, 18, 14, 38, 586145),
position_qty=20.0,
price=42.38,
qty=10.0,
value=423.8,
cash=99152.5,
pos_avg_price=42.4
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('28c9f825-4300-46ce-b73e-3af795a836a9'),
order=Order(
id=UUID('28c897f5-cb12-4b2c-9b20-abde056e1b12'),
submitted_at=datetime.datetime(2023, 3, 24, 18, 14, 38, 632145),
filled_at=datetime.datetime(2023, 3, 24, 18, 15, 13, 203500),
canceled_at=None,
symbol='C',
qty=20,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=20,
filled_avg_price=42.42,
side=OrderSide.SELL,
limit_price=42.42
),
timestamp=datetime.datetime(2023, 3, 24, 18, 15, 13, 203500),
position_qty=0.0,
price=42.42,
qty=20.0,
value=848.4000000000001,
cash=100000.9,
pos_avg_price=0.0
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('445a98ae-6fbe-415d-88e8-f98f5c6fb411'),
order=Order(
id=UUID('f1e8412c-7e36-4d0c-97a7-88e5dbab9b25'),
submitted_at=datetime.datetime(2023, 3, 24, 18, 20, 0, 372031),
filled_at=datetime.datetime(2023, 3, 24, 18, 20, 10, 239271),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.39,
side=OrderSide.BUY,
limit_price=42.39
),
timestamp=datetime.datetime(2023, 3, 24, 18, 20, 10, 239271),
position_qty=10.0,
price=42.39,
qty=10.0,
value=423.9,
cash=99577.0,
pos_avg_price=42.39
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('e2e5cf75-6517-459b-89f8-f967a3442737'),
order=Order(
id=UUID('cf1cab4c-9e39-46a9-a804-d2e2337340bf'),
submitted_at=datetime.datetime(2023, 3, 24, 18, 20, 10, 285271),
filled_at=datetime.datetime(2023, 3, 24, 18, 20, 31, 861599),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.41,
side=OrderSide.SELL,
limit_price=42.41
),
timestamp=datetime.datetime(2023, 3, 24, 18, 20, 31, 861599),
position_qty=0.0,
price=42.41,
qty=10.0,
value=424.09999999999997,
cash=100001.1,
pos_avg_price=0.0
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('0f5308ae-bea1-4412-8922-344f6dac10ef'),
order=Order(
id=UUID('6f16c0c0-a86e-4e6f-b07e-7eb76347b223'),
submitted_at=datetime.datetime(2023, 3, 24, 18, 43, 20, 376929),
filled_at=datetime.datetime(2023, 3, 24, 18, 45, 52, 906738),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.99,
side=OrderSide.BUY,
limit_price=42.99
),
timestamp=datetime.datetime(2023, 3, 24, 18, 45, 52, 906738),
position_qty=10.0,
price=42.99,
qty=10.0,
value=429.90000000000003,
cash=99571.20000000001,
pos_avg_price=42.99
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('98f17b2e-4392-47e5-8697-c23878e1c71a'),
order=Order(
id=UUID('afc5a626-c3cb-4cf9-b887-7571dded2f6c'),
submitted_at=datetime.datetime(2023, 3, 24, 18, 45, 52, 952738),
filled_at=datetime.datetime(2023, 3, 24, 18, 46, 0, 627175),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=43.01,
side=OrderSide.SELL,
limit_price=43.01
),
timestamp=datetime.datetime(2023, 3, 24, 18, 46, 0, 627175),
position_qty=0.0,
price=43.01,
qty=10.0,
value=430.09999999999997,
cash=100001.30000000002,
pos_avg_price=0.0
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('5431e393-291c-4828-be51-706acc39deda'),
order=Order(
id=UUID('a3a6a1d1-8bf8-4fc6-995d-0d0766443c55'),
submitted_at=datetime.datetime(2023, 3, 24, 18, 49, 41, 540044),
filled_at=datetime.datetime(2023, 3, 24, 18, 50, 47, 441926),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.93,
side=OrderSide.BUY,
limit_price=42.93
),
timestamp=datetime.datetime(2023, 3, 24, 18, 50, 47, 441926),
position_qty=10.0,
price=42.93,
qty=10.0,
value=429.3,
cash=99572.00000000001,
pos_avg_price=42.93
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('f10ca407-0604-4e2e-b0cf-4e4243e57947'),
order=Order(
id=UUID('246d819c-6e1d-4fc0-a91e-17404fcc5cea'),
submitted_at=datetime.datetime(2023, 3, 24, 18, 50, 47, 487926),
filled_at=datetime.datetime(2023, 3, 24, 18, 54, 23, 727098),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.95,
side=OrderSide.SELL,
limit_price=42.95
),
timestamp=datetime.datetime(2023, 3, 24, 18, 54, 23, 727098),
position_qty=0.0,
price=42.95,
qty=10.0,
value=429.5,
cash=100001.50000000001,
pos_avg_price=0.0
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('9fcef2d1-2b55-4a74-9927-8463a74e75e2'),
order=Order(
id=UUID('f250e354-2291-499f-b1f0-d56788211959'),
submitted_at=datetime.datetime(2023, 3, 24, 18, 52, 20, 117195),
filled_at=datetime.datetime(2023, 3, 24, 19, 5, 39, 193071),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.86,
side=OrderSide.BUY,
limit_price=42.86
),
timestamp=datetime.datetime(2023, 3, 24, 19, 5, 39, 193071),
position_qty=10.0,
price=42.86,
qty=10.0,
value=428.6,
cash=99572.90000000001,
pos_avg_price=42.86
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('ea4b0db4-998e-4e2a-b614-98b157106164'),
order=Order(
id=UUID('570e9c37-5c4e-4437-9dd4-a642029ca6a7'),
submitted_at=datetime.datetime(2023, 3, 24, 19, 5, 39, 239071),
filled_at=datetime.datetime(2023, 3, 24, 19, 5, 46, 747462),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.88,
side=OrderSide.SELL,
limit_price=42.88
),
timestamp=datetime.datetime(2023, 3, 24, 19, 5, 46, 747462),
position_qty=0.0,
price=42.88,
qty=10.0,
value=428.8,
cash=100001.70000000001,
pos_avg_price=0.0
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('abf993dc-5aee-4b89-b48c-92bbfcb4efe4'),
order=Order(
id=UUID('f3be9459-1c89-4594-bee0-b64ace83a12e'),
submitted_at=datetime.datetime(2023, 3, 24, 19, 7, 22, 109412),
filled_at=datetime.datetime(2023, 3, 24, 19, 7, 25, 509392),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.79,
side=OrderSide.BUY,
limit_price=42.79
),
timestamp=datetime.datetime(2023, 3, 24, 19, 7, 25, 509392),
position_qty=10.0,
price=42.79,
qty=10.0,
value=427.9,
cash=99573.80000000002,
pos_avg_price=42.79
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('b30b01cf-b0da-4166-a5ee-9e398ce0caf7'),
order=Order(
id=UUID('44687505-271f-423d-b5eb-4022a3b0042e'),
submitted_at=datetime.datetime(2023, 3, 24, 19, 7, 25, 555392),
filled_at=datetime.datetime(2023, 3, 24, 19, 7, 49, 238057),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.81,
side=OrderSide.SELL,
limit_price=42.81
),
timestamp=datetime.datetime(2023, 3, 24, 19, 7, 49, 238057),
position_qty=0.0,
price=42.81,
qty=10.0,
value=428.1,
cash=100001.90000000002,
pos_avg_price=0.0
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('3d0bde12-75e4-4589-b51d-98f351c27f51'),
order=Order(
id=UUID('b4d1deb5-bedb-4792-87a2-d93d7a791245'),
submitted_at=datetime.datetime(2023, 3, 24, 19, 42, 0, 124666),
filled_at=datetime.datetime(2023, 3, 24, 19, 42, 3, 369522),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.97,
side=OrderSide.BUY,
limit_price=42.97
),
timestamp=datetime.datetime(2023, 3, 24, 19, 42, 3, 369522),
position_qty=10.0,
price=42.97,
qty=10.0,
value=429.7,
cash=99572.20000000003,
pos_avg_price=42.97
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('726bc5e6-94fd-4618-bee0-91339dbfa88c'),
order=Order(
id=UUID('b32bb6d0-c972-45a5-b6ac-144273e956ea'),
submitted_at=datetime.datetime(2023, 3, 24, 19, 42, 3, 415522),
filled_at=datetime.datetime(2023, 3, 24, 19, 42, 34, 428260),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.99,
side=OrderSide.SELL,
limit_price=42.99
),
timestamp=datetime.datetime(2023, 3, 24, 19, 42, 34, 428260),
position_qty=0.0,
price=42.99,
qty=10.0,
value=429.90000000000003,
cash=100002.10000000002,
pos_avg_price=0.0
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('0f3ab616-6616-4ba5-b32f-8c7f1a6be8cb'),
order=Order(
id=UUID('345162e0-5e7b-4e0c-b5bf-dffad0508da9'),
submitted_at=datetime.datetime(2023, 3, 24, 19, 42, 44, 484124),
filled_at=datetime.datetime(2023, 3, 24, 19, 49, 6, 219276),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.98,
side=OrderSide.BUY,
limit_price=42.98
),
timestamp=datetime.datetime(2023, 3, 24, 19, 49, 6, 219276),
position_qty=10.0,
price=42.98,
qty=10.0,
value=429.79999999999995,
cash=99572.30000000002,
pos_avg_price=42.98
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('53e0171c-6246-40ee-9dd8-f9155be32f11'),
order=Order(
id=UUID('826b174d-c894-4c7b-a25e-b42b23eaabad'),
submitted_at=datetime.datetime(2023, 3, 24, 19, 49, 6, 265276),
filled_at=datetime.datetime(2023, 3, 24, 19, 49, 57, 528455),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=43.005,
side=OrderSide.SELL,
limit_price=43.0
),
timestamp=datetime.datetime(2023, 3, 24, 19, 49, 57, 528455),
position_qty=0.0,
price=43.005,
qty=10.0,
value=430.05,
cash=100002.35000000002,
pos_avg_price=0.0
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('d827dc6f-51e2-4149-acd8-e438a271fa75'),
order=Order(
id=UUID('d931a776-2739-41ba-bd16-d9b45dff59ec'),
submitted_at=datetime.datetime(2023, 3, 24, 19, 52, 1, 100351),
filled_at=datetime.datetime(2023, 3, 24, 19, 52, 7, 321771),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.94,
side=OrderSide.BUY,
limit_price=42.94
),
timestamp=datetime.datetime(2023, 3, 24, 19, 52, 7, 321771),
position_qty=10.0,
price=42.94,
qty=10.0,
value=429.4,
cash=99572.95000000003,
pos_avg_price=42.94
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('20d15c7a-23c0-4815-85df-8a302e2e0f39'),
order=Order(
id=UUID('0419ba73-ad51-4df6-b211-ac4c42a6e032'),
submitted_at=datetime.datetime(2023, 3, 24, 19, 28, 43, 668847),
filled_at=datetime.datetime(2023, 3, 24, 19, 52, 41, 652899),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.9,
side=OrderSide.BUY,
limit_price=42.9
),
timestamp=datetime.datetime(2023, 3, 24, 19, 52, 41, 652899),
position_qty=20.0,
price=42.9,
qty=10.0,
value=429.0,
cash=99143.95000000003,
pos_avg_price=42.92
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('a2f8bc9b-d2ad-4a0a-a5f3-2cc728d2e541'),
order=Order(
id=UUID('36d89e04-fdfc-410d-9608-fa6517a3034d'),
submitted_at=datetime.datetime(2023, 3, 24, 19, 54, 43, 440852),
filled_at=datetime.datetime(2023, 3, 24, 19, 54, 49, 709012),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.87,
side=OrderSide.BUY,
limit_price=42.87
),
timestamp=datetime.datetime(2023, 3, 24, 19, 54, 49, 709012),
position_qty=30.0,
price=42.87,
qty=10.0,
value=428.7,
cash=98715.25000000003,
pos_avg_price=42.903333333333336
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('dace8d0b-6618-498c-aaea-7d6e43903c92'),
order=Order(
id=UUID('57222023-d25e-461b-811a-1abc87390971'),
submitted_at=datetime.datetime(2023, 3, 24, 19, 54, 49, 755012),
filled_at=datetime.datetime(2023, 3, 24, 19, 55, 45, 671150),
canceled_at=None,
symbol='C',
qty=30,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=30,
filled_avg_price=42.92,
side=OrderSide.SELL,
limit_price=42.92
),
timestamp=datetime.datetime(2023, 3, 24, 19, 55, 45, 671150),
position_qty=0.0,
price=42.92,
qty=30.0,
value=1287.6000000000001,
cash=100002.85000000003,
pos_avg_price=0.0
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('3ce200d5-3e8d-4af8-818d-41e3f49e91f9'),
order=Order(
id=UUID('09ada304-3920-4d21-a7c5-520116f60161'),
submitted_at=datetime.datetime(2023, 3, 24, 19, 8, 3, 126555),
filled_at=datetime.datetime(2023, 3, 24, 19, 59, 28, 62458),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.83,
side=OrderSide.BUY,
limit_price=42.83
),
timestamp=datetime.datetime(2023, 3, 24, 19, 59, 28, 62458),
position_qty=10.0,
price=42.83,
qty=10.0,
value=428.29999999999995,
cash=99574.55000000003,
pos_avg_price=42.83
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('51b1ef83-e486-44a1-9809-fd5ebca18a50'),
order=Order(
id=UUID('c8894c95-83bc-455e-8501-6622e74ad267'),
submitted_at=datetime.datetime(2023, 3, 24, 19, 59, 28, 108458),
filled_at=datetime.datetime(2023, 3, 24, 19, 59, 40, 517988),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.85,
side=OrderSide.SELL,
limit_price=42.85
),
timestamp=datetime.datetime(2023, 3, 24, 19, 59, 40, 517988),
position_qty=0.0,
price=42.85,
qty=10.0,
value=428.5,
cash=100003.05000000003,
pos_avg_price=0.0
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('1a0724f7-53de-42e3-9917-b65ecca4e7a0'),
order=Order(
id=UUID('14783679-6871-496c-8875-60c3d6ae0135'),
submitted_at=datetime.datetime(2023, 3, 24, 20, 0, 21, 449585),
filled_at=datetime.datetime(2023, 3, 24, 20, 0, 25, 189635),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.84,
side=OrderSide.BUY,
limit_price=42.84
),
timestamp=datetime.datetime(2023, 3, 24, 20, 0, 25, 189635),
position_qty=10.0,
price=42.84,
qty=10.0,
value=428.40000000000003,
cash=99574.65000000004,
pos_avg_price=42.84
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('087b5b76-0cc5-4462-971b-782fe4c4c6ad'),
order=Order(
id=UUID('3b5bf7fb-cba2-4bfb-b3b7-74e191caf928'),
submitted_at=datetime.datetime(2023, 3, 24, 20, 0, 25, 235635),
filled_at=datetime.datetime(2023, 3, 24, 20, 1, 49, 107372),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.86,
side=OrderSide.SELL,
limit_price=42.86
),
timestamp=datetime.datetime(2023, 3, 24, 20, 1, 49, 107372),
position_qty=0.0,
price=42.86,
qty=10.0,
value=428.6,
cash=100003.25000000004,
pos_avg_price=0.0
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('0302b8e0-d427-4f93-9b23-ee1da32149bd'),
order=Order(
id=UUID('446f4bab-3bd7-4bbb-ba9b-1d0445cc6371'),
submitted_at=datetime.datetime(2023, 3, 24, 20, 8, 0, 534518),
filled_at=datetime.datetime(2023, 3, 24, 20, 8, 18, 36437),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.83,
side=OrderSide.BUY,
limit_price=42.83
),
timestamp=datetime.datetime(2023, 3, 24, 20, 8, 18, 36437),
position_qty=10.0,
price=42.83,
qty=10.0,
value=428.29999999999995,
cash=99574.95000000004,
pos_avg_price=42.83
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('1c191c3f-fe56-4486-92f2-b4ab2e0d1d24'),
order=Order(
id=UUID('cb920785-4520-44e5-b6af-978da3927c59'),
submitted_at=datetime.datetime(2023, 3, 24, 20, 10, 41, 294273),
filled_at=datetime.datetime(2023, 3, 24, 20, 10, 45, 568943),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.78,
side=OrderSide.BUY,
limit_price=42.78
),
timestamp=datetime.datetime(2023, 3, 24, 20, 10, 45, 568943),
position_qty=20.0,
price=42.78,
qty=10.0,
value=427.8,
cash=99147.15000000004,
pos_avg_price=42.80499999999999
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('ec034230-58ba-4300-82c1-7d30399d1be0'),
order=Order(
id=UUID('f111ec92-77d2-4e38-b789-90d6ed471c76'),
submitted_at=datetime.datetime(2023, 3, 24, 20, 10, 45, 614943),
filled_at=datetime.datetime(2023, 3, 24, 20, 11, 12, 853893),
canceled_at=None,
symbol='C',
qty=20,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=20,
filled_avg_price=42.82,
side=OrderSide.SELL,
limit_price=42.82
),
timestamp=datetime.datetime(2023, 3, 24, 20, 11, 12, 853893),
position_qty=0.0,
price=42.82,
qty=20.0,
value=856.4,
cash=100003.55000000003,
pos_avg_price=0.0
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('2343a817-dcd9-42a5-8645-bf9e9fcb41a2'),
order=Order(
id=UUID('24f0e7a7-b1ce-42b6-9514-8721b240b31d'),
submitted_at=datetime.datetime(2023, 3, 24, 20, 14, 40, 530031),
filled_at=datetime.datetime(2023, 3, 24, 20, 14, 57, 348700),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.74,
side=OrderSide.BUY,
limit_price=42.74
),
timestamp=datetime.datetime(2023, 3, 24, 20, 14, 57, 348700),
position_qty=10.0,
price=42.74,
qty=10.0,
value=427.40000000000003,
cash=99576.15000000004,
pos_avg_price=42.74
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('57f57435-ff77-4e6f-96d6-b29b725c4693'),
order=Order(
id=UUID('b8470e7b-6773-47bb-984c-ab44832b3b3b'),
submitted_at=datetime.datetime(2023, 3, 24, 20, 14, 57, 394700),
filled_at=datetime.datetime(2023, 3, 24, 20, 15, 12, 621144),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.76,
side=OrderSide.SELL,
limit_price=42.76
),
timestamp=datetime.datetime(2023, 3, 24, 20, 15, 12, 621144),
position_qty=0.0,
price=42.76,
qty=10.0,
value=427.59999999999997,
cash=100003.75000000004,
pos_avg_price=0.0
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('069b4a2d-0377-4345-96b6-74e9fae89d9e'),
order=Order(
id=UUID('9a4bbe02-fc9e-4261-95d3-d609737662a9'),
submitted_at=datetime.datetime(2023, 3, 24, 20, 25, 41, 185936),
filled_at=datetime.datetime(2023, 3, 24, 20, 27, 34, 90412),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.86,
side=OrderSide.BUY,
limit_price=42.86
),
timestamp=datetime.datetime(2023, 3, 24, 20, 27, 34, 90412),
position_qty=10.0,
price=42.86,
qty=10.0,
value=428.6,
cash=99575.15000000004,
pos_avg_price=42.86
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('6bdd0e17-b1c2-4080-8f26-c980d615f31f'),
order=Order(
id=UUID('070c371c-f8d4-4437-b42f-6a94d3962d7b'),
submitted_at=datetime.datetime(2023, 3, 24, 20, 27, 34, 136412),
filled_at=datetime.datetime(2023, 3, 24, 20, 28, 24, 695266),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.88,
side=OrderSide.SELL,
limit_price=42.88
),
timestamp=datetime.datetime(2023, 3, 24, 20, 28, 24, 695266),
position_qty=0.0,
price=42.88,
qty=10.0,
value=428.8,
cash=100003.95000000004,
pos_avg_price=0.0
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('303bbd02-4d8b-4940-9878-52c1dca92c73'),
order=Order(
id=UUID('247f87b0-4d97-4527-bcf1-2e0679c546b0'),
submitted_at=datetime.datetime(2023, 3, 24, 20, 35, 0, 150590),
filled_at=datetime.datetime(2023, 3, 24, 20, 35, 23, 954682),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.9,
side=OrderSide.BUY,
limit_price=42.9
),
timestamp=datetime.datetime(2023, 3, 24, 20, 35, 23, 954682),
position_qty=10.0,
price=42.9,
qty=10.0,
value=429.0,
cash=99574.95000000004,
pos_avg_price=42.9
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('697ed9c5-40c3-439c-9811-29c9f4d74487'),
order=Order(
id=UUID('3ce9a256-059e-43ed-a290-286fa310fa21'),
submitted_at=datetime.datetime(2023, 3, 24, 20, 35, 24, 682),
filled_at=datetime.datetime(2023, 3, 24, 20, 36, 15, 43220),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.92,
side=OrderSide.SELL,
limit_price=42.92
),
timestamp=datetime.datetime(2023, 3, 24, 20, 36, 15, 43220),
position_qty=0.0,
price=42.92,
qty=10.0,
value=429.20000000000005,
cash=100004.15000000004,
pos_avg_price=0.0
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('e0a33f84-91d1-4e89-95d9-e95a3a90b0fb'),
order=Order(
id=UUID('2889c4db-7c12-4b17-b35f-c81f53625c71'),
submitted_at=datetime.datetime(2023, 3, 24, 20, 48, 0, 466959),
filled_at=datetime.datetime(2023, 3, 24, 20, 48, 0, 901059),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.91,
side=OrderSide.BUY,
limit_price=42.91
),
timestamp=datetime.datetime(2023, 3, 24, 20, 48, 0, 901059),
position_qty=10.0,
price=42.91,
qty=10.0,
value=429.09999999999997,
cash=99575.05000000003,
pos_avg_price=42.91
),
TradeUpdate(
event=TradeEvent.FILL,
execution_id=UUID('bca37e22-3ec2-4cf4-9ce8-779675469324'),
order=Order(
id=UUID('65a65038-7cda-4b18-aa5b-c48af539d1ba'),
submitted_at=datetime.datetime(2023, 3, 24, 20, 48, 0, 947059),
filled_at=datetime.datetime(2023, 3, 24, 20, 48, 55, 262008),
canceled_at=None,
symbol='C',
qty=10,
status=OrderStatus.FILLED,
order_type=OrderType.LIMIT,
filled_qty=10,
filled_avg_price=42.93,
side=OrderSide.SELL,
limit_price=42.93
),
timestamp=datetime.datetime(2023, 3, 24, 20, 48, 55, 262008),
position_qty=0.0,
price=42.93,
qty=10.0,
value=429.3,
cash=100004.35000000003,
pos_avg_price=0.0
)
]
#create pandas
trade_dict = AttributeDict(orderid=[],timestamp=[],symbol=[],side=[],order_type=[],qty=[],price=[],position_qty=[],value=[],cash=[],pos_avg_price=[])
for t in tradeList:
if t.event == TradeEvent.FILL:
trade_dict.orderid.append(str(t.order.id))
trade_dict.timestamp.append(t.timestamp)
trade_dict.symbol.append(t.order.symbol)
trade_dict.side.append(t.order.side)
trade_dict.qty.append(int(t.qty))
trade_dict.price.append(t.price)
trade_dict.position_qty.append(int(t.position_qty))
trade_dict.value.append(t.value)
trade_dict.cash.append(t.cash)
trade_dict.order_type.append(t.order.order_type)
trade_dict.pos_avg_price.append(t.pos_avg_price)
trade_df = pd.DataFrame(trade_dict)
trade_df = trade_df.set_index('timestamp',drop=False)
#max positions-
max_positions = trade_df.groupby('side')['qty'].value_counts().reset_index(name='count').sort_values(['qty'], ascending=False)
max_positions = max_positions[max_positions['side'] == OrderSide.SELL]
max_positions = max_positions.drop(columns=['side'], axis=1)
#filt = max_positions['side'] == 'OrderSide.BUY'
res = dict(zip(max_positions['qty'], max_positions['count']))
ouput_dict=dict(maxpos=str(res))
all_summary = trade_df.describe(include='all')
print(all_summary)
print(ouput_dict)
#a = trade_df.value_counts(subset=['position_qty'])
#print(max_positions.to_dict('records'))
#print(max_positions.to_dict('list'))
#print(trade_df.describe(include='max_positions'))