-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEMSXSubscriptions.py
More file actions
1043 lines (944 loc) · 72.6 KB
/
Copy pathEMSXSubscriptions.py
File metadata and controls
1043 lines (944 loc) · 72.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# EMSXSubscriptions.py
import blpapi
import sys
# for additional DEBUG logging
#os.environ['BLPAPI_LOGLEVEL'] = 'DEBUG'
ORDER_ROUTE_FIELDS = blpapi.Name("OrderRouteFields")
SLOW_CONSUMER_WARNING = blpapi.Name("SlowConsumerWarning")
SLOW_CONSUMER_WARNING_CLEARED = blpapi.Name("SlowConsumerWarningCleared")
SESSION_STARTED = blpapi.Name("SessionStarted")
SESSION_TERMINATED = blpapi.Name("SessionTerminated")
SESSION_STARTUP_FAILURE = blpapi.Name("SessionStartupFailure")
SESSION_CONNECTION_UP = blpapi.Name("SessionConnectionUp")
SESSION_CONNECTION_DOWN = blpapi.Name("SessionConnectionDown")
SERVICE_OPENED = blpapi.Name("ServiceOpened")
SERVICE_OPEN_FAILURE = blpapi.Name("ServiceOpenFailure")
SUBSCRIPTION_FAILURE = blpapi.Name("SubscriptionFailure")
SUBSCRIPTION_STARTED = blpapi.Name("SubscriptionStarted")
SUBSCRIPTION_TERMINATED = blpapi.Name("SubscriptionTerminated")
EXCEPTIONS = blpapi.Name("exceptions")
FIELD_ID = blpapi.Name("fieldId")
REASON = blpapi.Name("reason")
CATEGORY = blpapi.Name("category")
DESCRIPTION = blpapi.Name("description")
API_SEQ_NUM = blpapi.Name("API_SEQ_NUM")
DESCRIPTION = blpapi.Name("description")
EMSX_ACCOUNT = blpapi.Name("EMSX_ACCOUNT")
EMSX_AMOUNT = blpapi.Name("EMSX_AMOUNT")
EMSX_APA_MIC = blpapi.Name("EMSX_APA_MIC")
EMSX_ASSET_CLASS = blpapi.Name("EMSX_ASSET_CLASS")
EMSX_ASSIGNED_TRADER = blpapi.Name("EMSX_ASSIGNED_TRADER")
EMSX_AVG_PRICE = blpapi.Name("EMSX_AVG_PRICE")
EMSX_BASKET_NAME = blpapi.Name("EMSX_BASKET_NAME")
EMSX_BASKET_NUM = blpapi.Name("EMSX_BASKET_NUM")
EMSX_BLOCK_ID = blpapi.Name("EMSX_BLOCK_ID")
EMSX_BROKER = blpapi.Name("EMSX_BROKER")
EMSX_BROKER_COMM = blpapi.Name("EMSX_BROKER_COMM")
EMSX_BROKER_LEI = blpapi.Name("EMSX_BROKER_LEI")
EMSX_BROKER_SI = blpapi.Name("EMSX_BROKER_SI")
EMSX_BROKER_STATUS = blpapi.Name("EMSX_BROKER_STATUS")
EMSX_BSE_AVG_PRICE = blpapi.Name("EMSX_BSE_AVG_PRICE")
EMSX_BSE_FILLED = blpapi.Name("EMSX_BSE_FILLED")
EMSX_BUYSIDE_LEI = blpapi.Name("EMSX_BUYSIDE_LEI")
EMSX_CFD_FLAG = blpapi.Name("EMSX_CFD_FLAG")
EMSX_CLEARING_ACCOUNT = blpapi.Name("EMSX_CLEARING_ACCOUNT")
EMSX_CLEARING_FIRM = blpapi.Name("EMSX_CLEARING_FIRM")
EMSX_CLIENT_IDENTIFICATION = blpapi.Name("EMSX_CLIENT_IDENTIFICATION")
EMSX_COMM_DIFF_FLAG = blpapi.Name("EMSX_COMM_DIFF_FLAG")
EMSX_COMM_RATE = blpapi.Name("EMSX_COMM_RATE")
EMSX_CURRENCY_PAIR = blpapi.Name("EMSX_CURRENCY_PAIR")
EMSX_CUSTOM_ACCOUNT = blpapi.Name("EMSX_CUSTOM_ACCOUNT")
EMSX_CUSTOM_NOTE1 = blpapi.Name("EMSX_CUSTOM_NOTE1")
EMSX_CUSTOM_NOTE2 = blpapi.Name("EMSX_CUSTOM_NOTE2")
EMSX_CUSTOM_NOTE3 = blpapi.Name("EMSX_CUSTOM_NOTE3")
EMSX_CUSTOM_NOTE4 = blpapi.Name("EMSX_CUSTOM_NOTE4")
EMSX_CUSTOM_NOTE5 = blpapi.Name("EMSX_CUSTOM_NOTE5")
EMSX_DATE = blpapi.Name("EMSX_DATE")
EMSX_DAY_AVG_PRICE = blpapi.Name("EMSX_DAY_AVG_PRICE")
EMSX_DAY_FILL = blpapi.Name("EMSX_DAY_FILL")
EMSX_DIR_BROKER_FLAG = blpapi.Name("EMSX_DIR_BROKER_FLAG")
EMSX_EXCHANGE = blpapi.Name("EMSX_EXCHANGE")
EMSX_EXCHANGE_DESTINATION = blpapi.Name("EMSX_EXCHANGE_DESTINATION")
EMSX_EXEC_INSTRUCTION = blpapi.Name("EMSX_EXEC_INSTRUCTION")
EMSX_EXECUTE_BROKER = blpapi.Name("EMSX_EXECUTE_BROKER")
EMSX_FILL_ID = blpapi.Name("EMSX_FILL_ID")
EMSX_FILLED = blpapi.Name("EMSX_FILLED")
EMSX_GPI = blpapi.Name("EMSX_GPI")
EMSX_GTD_DATE = blpapi.Name("EMSX_GTD_DATE")
EMSX_HAND_INSTRUCTION = blpapi.Name("EMSX_HAND_INSTRUCTION")
EMSX_IDLE_AMOUNT = blpapi.Name("EMSX_IDLE_AMOUNT")
EMSX_INVESTOR_ID = blpapi.Name("EMSX_INVESTOR_ID")
EMSX_IS_MANUAL_ROUTE = blpapi.Name("EMSX_IS_MANUAL_ROUTE")
EMSX_ISIN = blpapi.Name("EMSX_ISIN")
EMSX_LAST_CAPACITY = blpapi.Name("EMSX_LAST_CAPACITY")
EMSX_LAST_FILL_DATE = blpapi.Name("EMSX_LAST_FILL_DATE")
EMSX_LAST_FILL_TIME = blpapi.Name("EMSX_LAST_FILL_TIME")
EMSX_LAST_FILL_TIME_MICROSEC = blpapi.Name("EMSX_LAST_FILL_TIME_MICROSEC")
EMSX_LAST_MARKET = blpapi.Name("EMSX_LAST_MARKET")
EMSX_LAST_PRICE = blpapi.Name("EMSX_LAST_PRICE")
EMSX_LAST_SHARES = blpapi.Name("EMSX_LAST_SHARES")
EMSX_LEG_FILL_DATE_ADDED = blpapi.Name("EMSX_LEG_FILL_DATE_ADDED")
EMSX_LEG_FILL_PRICE = blpapi.Name("EMSX_LEG_FILL_PRICE")
EMSX_LEG_FILL_SEQ_NO = blpapi.Name("EMSX_LEG_FILL_SEQ_NO")
EMSX_LEG_FILL_SHARES = blpapi.Name("EMSX_LEG_FILL_SHARES")
EMSX_LEG_FILL_SIDE = blpapi.Name("EMSX_LEG_FILL_SIDE")
EMSX_LEG_FILL_TICKER = blpapi.Name("EMSX_LEG_FILL_TICKER")
EMSX_LEG_FILL_TIME_ADDED = blpapi.Name("EMSX_LEG_FILL_TIME_ADDED")
EMSX_LIMIT_PRICE = blpapi.Name("EMSX_LIMIT_PRICE")
EMSX_MIFID_II_INSTRUCTION = blpapi.Name("EMSX_MIFID_II_INSTRUCTION")
EMSX_MISC_FEES = blpapi.Name("EMSX_MISC_FEES")
EMSX_ML_ID = blpapi.Name("EMSX_ML_ID")
EMSX_ML_LEG_QUANTITY = blpapi.Name("EMSX_ML_LEG_QUANTITY")
EMSX_ML_NUM_LEGS = blpapi.Name("EMSX_ML_NUM_LEGS")
EMSX_ML_PERCENT_FILLED = blpapi.Name("EMSX_ML_PERCENT_FILLED")
EMSX_ML_RATIO = blpapi.Name("EMSX_ML_RATIO")
EMSX_ML_REMAIN_BALANCE = blpapi.Name("EMSX_ML_REMAIN_BALANCE")
EMSX_ML_STRATEGY = blpapi.Name("EMSX_ML_STRATEGY")
EMSX_ML_TOTAL_QUANTITY = blpapi.Name("EMSX_ML_TOTAL_QUANTITY")
EMSX_MOD_PEND_STATUS = blpapi.Name("EMSX_MOD_PEND_STATUS")
EMSX_NOTES = blpapi.Name("EMSX_NOTES")
EMSX_NSE_AVG_PRICE = blpapi.Name("EMSX_NSE_AVG_PRICE")
EMSX_NSE_FILLED = blpapi.Name("EMSX_NSE_FILLED")
EMSX_ORD_REF_ID = blpapi.Name("EMSX_ORD_REF_ID")
EMSX_ORDER_AS_OF_DATE = blpapi.Name("EMSX_ORDER_AS_OF_DATE")
EMSX_ORDER_AS_OF_TIME_MICROSEC = blpapi.Name("EMSX_ORDER_AS_OF_TIME_MICROSEC")
EMSX_ORDER_TYPE = blpapi.Name("EMSX_ORDER_TYPE")
EMSX_ORIGINATE_TRADER = blpapi.Name("EMSX_ORIGINATE_TRADER")
EMSX_ORIGINATE_TRADER_FIRM = blpapi.Name("EMSX_ORIGINATE_TRADER_FIRM")
EMSX_OTC_FLAG = blpapi.Name("EMSX_OTC_FLAG")
EMSX_P_A = blpapi.Name("EMSX_P_A")
EMSX_PERCENT_REMAIN = blpapi.Name("EMSX_PERCENT_REMAIN")
EMSX_PM_UUID = blpapi.Name("EMSX_PM_UUID")
EMSX_PORT_MGR = blpapi.Name("EMSX_PORT_MGR")
EMSX_PORT_NAME = blpapi.Name("EMSX_PORT_NAME")
EMSX_PORT_NUM = blpapi.Name("EMSX_PORT_NUM")
EMSX_POSITION = blpapi.Name("EMSX_POSITION")
EMSX_PRINCIPAL = blpapi.Name("EMSX_PRINCIPAL")
EMSX_PRODUCT = blpapi.Name("EMSX_PRODUCT")
EMSX_QUEUED_DATE = blpapi.Name("EMSX_QUEUED_DATE")
EMSX_QUEUED_TIME = blpapi.Name("EMSX_QUEUED_TIME")
EMSX_QUEUED_TIME_MICROSEC = blpapi.Name("EMSX_QUEUED_TIME_MICROSEC")
EMSX_REASON_CODE = blpapi.Name("EMSX_REASON_CODE")
EMSX_REASON_DESC = blpapi.Name("EMSX_REASON_DESC")
EMSX_REMAIN_BALANCE = blpapi.Name("EMSX_REMAIN_BALANCE")
EMSX_ROUTE_AS_OF_DATE = blpapi.Name("EMSX_ROUTE_AS_OF_DATE")
EMSX_ROUTE_AS_OF_TIME_MICROSEC = blpapi.Name("EMSX_ROUTE_AS_OF_TIME_MICROSEC")
EMSX_ROUTE_CREATE_DATE = blpapi.Name("EMSX_ROUTE_CREATE_DATE")
EMSX_ROUTE_CREATE_TIME = blpapi.Name("EMSX_ROUTE_CREATE_TIME")
EMSX_ROUTE_CREATE_TIME_MICROSEC = blpapi.Name("EMSX_ROUTE_CREATE_TIME_MICROSEC")
EMSX_ROUTE_ID = blpapi.Name("EMSX_ROUTE_ID")
EMSX_ROUTE_LAST_UPDATE_TIME = blpapi.Name("EMSX_ROUTE_LAST_UPDATE_TIME")
EMSX_ROUTE_LAST_UPDATE_TIME_MICROSEC = blpapi.Name("EMSX_ROUTE_LAST_UPDATE_TIME_MICROSEC")
EMSX_ROUTE_PRICE = blpapi.Name("EMSX_ROUTE_PRICE")
EMSX_ROUTE_REF_ID = blpapi.Name("EMSX_ROUTE_REF_ID")
EMSX_SEC_NAME = blpapi.Name("EMSX_SEC_NAME")
EMSX_SEDOL = blpapi.Name("EMSX_SEDOL")
EMSX_SEQUENCE = blpapi.Name("EMSX_SEQUENCE")
EMSX_SETTLE_AMOUNT = blpapi.Name("EMSX_SETTLE_AMOUNT")
EMSX_SETTLE_DATE = blpapi.Name("EMSX_SETTLE_DATE")
EMSX_SI = blpapi.Name("EMSX_SI")
EMSX_SIDE = blpapi.Name("EMSX_SIDE")
EMSX_START_AMOUNT = blpapi.Name("EMSX_START_AMOUNT")
EMSX_STATUS = blpapi.Name("EMSX_STATUS")
EMSX_STEP_OUT_BROKER = blpapi.Name("EMSX_STEP_OUT_BROKER")
EMSX_STOP_PRICE = blpapi.Name("EMSX_STOP_PRICE")
EMSX_STRATEGY_END_TIME = blpapi.Name("EMSX_STRATEGY_END_TIME")
EMSX_STRATEGY_PART_RATE1 = blpapi.Name("EMSX_STRATEGY_PART_RATE1")
EMSX_STRATEGY_PART_RATE2 = blpapi.Name("EMSX_STRATEGY_PART_RATE2")
EMSX_STRATEGY_START_TIME = blpapi.Name("EMSX_STRATEGY_START_TIME")
EMSX_STRATEGY_STYLE = blpapi.Name("EMSX_STRATEGY_STYLE")
EMSX_STRATEGY_TYPE = blpapi.Name("EMSX_STRATEGY_TYPE")
EMSX_TICKER = blpapi.Name("EMSX_TICKER")
EMSX_TIF = blpapi.Name("EMSX_TIF")
EMSX_TIME_STAMP = blpapi.Name("EMSX_TIME_STAMP")
EMSX_TIME_STAMP_MICROSEC = blpapi.Name("EMSX_TIME_STAMP_MICROSEC")
EMSX_TRAD_UUID = blpapi.Name("EMSX_TRAD_UUID")
EMSX_TRADE_DESK = blpapi.Name("EMSX_TRADE_DESK")
EMSX_TRADE_REPORTING_INDICATOR = blpapi.Name("EMSX_TRADE_REPORTING_INDICATOR")
EMSX_TRADER = blpapi.Name("EMSX_TRADER")
EMSX_TRADER_NOTES = blpapi.Name("EMSX_TRADER_NOTES")
EMSX_TRANSACTION_REPORTING_MIC = blpapi.Name("EMSX_TRANSACTION_REPORTING_MIC")
EMSX_TS_ORDNUM = blpapi.Name("EMSX_TS_ORDNUM")
EMSX_TYPE = blpapi.Name("EMSX_TYPE")
EMSX_UNDERLYING_TICKER = blpapi.Name("EMSX_UNDERLYING_TICKER")
EMSX_URGENCY_LEVEL = blpapi.Name("EMSX_URGENCY_LEVEL")
EMSX_USER_COMM_AMOUNT = blpapi.Name("EMSX_USER_COMM_AMOUNT")
EMSX_USER_COMM_RATE = blpapi.Name("EMSX_USER_COMM_RATE")
EMSX_USER_FEES = blpapi.Name("EMSX_USER_FEES")
EMSX_USER_NET_MONEY = blpapi.Name("EMSX_USER_NET_MONEY")
EMSX_WAIVER_FLAG = blpapi.Name("EMSX_WAIVER_FLAG")
EMSX_WORK_PRICE = blpapi.Name("EMSX_WORK_PRICE")
EMSX_WORKING = blpapi.Name("EMSX_WORKING")
EMSX_YELLOW_KEY = blpapi.Name("EMSX_YELLOW_KEY")
ERRORCODE = blpapi.Name("errorCode")
EVENT_STATUS = blpapi.Name("EVENT_STATUS")
REASON = blpapi.Name("reason")
SERVICENAME = blpapi.Name("serviceName")
#d_emsx = "//blp/emapisvc" # Production environment
d_emsx = "//blp/emapisvc_beta" # beta/UAT environment
d_host = "localhost" # IP address of the Trading API Server instance.
d_port = 8194 # The port number configured for ServerAPI (default : 8194)
orderSubscriptionID=blpapi.CorrelationId(98)
routeSubscriptionID=blpapi.CorrelationId(99)
class SessionEventHandler(object):
def processEvent(self, event, session):
#for msg in event:
# print(msg)
# pass
try:
if event.eventType() == blpapi.Event.SESSION_STATUS:
self.processSessionStatusEvent(event,session)
elif event.eventType() == blpapi.Event.SERVICE_STATUS:
self.processServiceStatusEvent(event,session)
elif event.eventType() == blpapi.Event.SUBSCRIPTION_STATUS:
self.processSubscriptionStatusEvent(event, session)
elif event.eventType() == blpapi.Event.SUBSCRIPTION_DATA:
self.processSubscriptionDataEvent(event)
else:
self.processMiscEvents(event)
except:
print ("Exception: %s" % sys.exc_info()[0])
return False
def processSessionStatusEvent(self,event,session):
print ("Processing SESSION_STATUS event")
for msg in event:
if msg.messageType() == SESSION_STARTED:
print ("Session started...")
session.openServiceAsync(d_emsx)
elif msg.messageType() == SESSION_STARTUP_FAILURE:
print ("Error: Session startup failed", file=sys.stderr)
elif msg.messageType() == SESSION_TERMINATED:
print ("Error: Session has been terminated")
elif msg.messageType() == SESSION_CONNECTION_UP:
print ("Session connection is up")
elif msg.messageType() == SESSION_CONNECTION_DOWN:
print ("Error: Session connection is down")
def processServiceStatusEvent(self,event,session):
print ("Processing SERVICE_STATUS event")
for msg in event:
print(msg)
if msg.messageType() == SERVICE_OPENED:
print("EMSX service opened... ")
self.createOrderSubscription(session)
elif msg.messageType() == SERVICE_OPEN_FAILURE:
print ("Error: Service failed to open", file=sys.stderr)
def processSubscriptionStatusEvent(self, event, session):
print ("Processing SUBSCRIPTION_STATUS event")
for msg in event:
if msg.messageType() == SUBSCRIPTION_STARTED:
if msg.correlationIds()[0].value() == orderSubscriptionID.value():
print ("Order subscription started successfully")
self.createRouteSubscription(session)
elif msg.correlationIds()[0].value() == routeSubscriptionID.value():
print ("Route subscription started successfully")
elif msg.messageType() == SUBSCRIPTION_FAILURE:
print ("Error: Subscription failed", file=sys.stderr)
print ("MESSAGE: %s" % (msg), file=sys.stderr)
reason = msg.getElement("reason");
errorcode = reason.getElementAsInteger("errorCode")
description = reason.getElementAsString("description")
print ("Error: (%d) %s" % (errorcode, description), file=sys.stderr)
elif msg.messageType() == SUBSCRIPTION_TERMINATED:
print ("Error: Subscription terminated", file=sys.stderr)
print ("MESSAGE: %s" % (msg), file=sys.stderr)
def processSubscriptionDataEvent(self, event):
#print ("Processing SUBSCRIPTION_DATA event")
for msg in event:
if msg.messageType() == ORDER_ROUTE_FIELDS:
event_status = msg.getElementAsInteger("EVENT_STATUS")
if event_status == 1:
if msg.correlationIds()[0].value() == orderSubscriptionID.value():
#print ("O", end=".",)
#print ("O."),
pass
elif msg.correlationIds()[0].value() == routeSubscriptionID.value():
#print ("R", end=".",)
#print ("R."),
pass
elif event_status == 11:
if msg.correlationIds()[0].value() == orderSubscriptionID.value():
print ("Order - End of initial paint")
elif msg.correlationIds()[0].value() == routeSubscriptionID.value():
print ("Route - End of initial paint")
elif event_status == 4 or event_status == 6 or event_status == 7:
print ("")
if msg.correlationIds()[0].value() == orderSubscriptionID.value():
api_seq_num = msg.getElementAsInteger(API_SEQ_NUM) if msg.hasElement(API_SEQ_NUM) else 0
emsx_account = msg.getElementAsString(EMSX_ACCOUNT) if msg.hasElement(EMSX_ACCOUNT) else ""
emsx_amount = msg.getElementAsInteger(EMSX_AMOUNT) if msg.hasElement(EMSX_AMOUNT) else 0
emsx_asset_class = msg.getElementAsString(EMSX_ASSET_CLASS) if msg.hasElement(EMSX_ASSET_CLASS) else ""
emsx_assigned_trader = msg.getElementAsString(EMSX_ASSIGNED_TRADER) if msg.hasElement(EMSX_ASSIGNED_TRADER) else ""
emsx_avg_price = msg.getElementAsFloat(EMSX_AVG_PRICE) if msg.hasElement(EMSX_AVG_PRICE) else 0
emsx_basket_name = msg.getElementAsString(EMSX_BASKET_NAME) if msg.hasElement(EMSX_BASKET_NAME) else ""
emsx_basket_num = msg.getElementAsInteger(EMSX_BASKET_NUM) if msg.hasElement(EMSX_BASKET_NUM) else 0
emsx_block_id = msg.getElementAsString(EMSX_BLOCK_ID) if msg.hasElement(EMSX_BLOCK_ID) else ""
emsx_broker = msg.getElementAsString(EMSX_BROKER) if msg.hasElement(EMSX_BROKER) else ""
emsx_broker_comm = msg.getElementAsFloat(EMSX_BROKER_COMM) if msg.hasElement(EMSX_BROKER_COMM) else 0
emsx_bse_avg_price = msg.getElementAsFloat(EMSX_BSE_AVG_PRICE) if msg.hasElement(EMSX_BSE_AVG_PRICE) else 0
emsx_bse_filled = msg.getElementAsInteger(EMSX_BSE_FILLED) if msg.hasElement(EMSX_BSE_FILLED) else 0
emsx_buyside_lei = msg.getElementAsString(EMSX_BUYSIDE_LEI) if msg.hasElement(EMSX_BUYSIDE_LEI) else ""
emsx_cfd_flag = msg.getElementAsString(EMSX_CFD_FLAG) if msg.hasElement(EMSX_CFD_FLAG) else ""
emsx_client_identification = msg.getElementAsString(EMSX_CLIENT_IDENTIFICATION) if msg.hasElement(EMSX_CLIENT_IDENTIFICATION) else ""
emsx_comm_diff_flag = msg.getElementAsString(EMSX_COMM_DIFF_FLAG) if msg.hasElement(EMSX_COMM_DIFF_FLAG) else ""
emsx_comm_rate = msg.getElementAsFloat(EMSX_COMM_RATE) if msg.hasElement(EMSX_COMM_RATE) else 0
emsx_currency_pair = msg.getElementAsString(EMSX_CURRENCY_PAIR) if msg.hasElement(EMSX_CURRENCY_PAIR) else ""
emsx_custom_note1 = msg.getElementAsString(EMSX_CUSTOM_NOTE1) if msg.hasElement(EMSX_CUSTOM_NOTE1) else ""
emsx_custom_note2 = msg.getElementAsString(EMSX_CUSTOM_NOTE2) if msg.hasElement(EMSX_CUSTOM_NOTE2) else ""
emsx_custom_note3 = msg.getElementAsString(EMSX_CUSTOM_NOTE3) if msg.hasElement(EMSX_CUSTOM_NOTE3) else ""
emsx_custom_note4 = msg.getElementAsString(EMSX_CUSTOM_NOTE4) if msg.hasElement(EMSX_CUSTOM_NOTE4) else ""
emsx_custom_note5 = msg.getElementAsString(EMSX_CUSTOM_NOTE5) if msg.hasElement(EMSX_CUSTOM_NOTE5) else ""
emsx_date = msg.getElementAsInteger(EMSX_DATE) if msg.hasElement(EMSX_DATE) else 0
emsx_day_avg_price = msg.getElementAsFloat(EMSX_DAY_AVG_PRICE) if msg.hasElement(EMSX_DAY_AVG_PRICE) else 0
emsx_day_fill = msg.getElementAsInteger(EMSX_DAY_FILL) if msg.hasElement(EMSX_DAY_FILL) else 0
emsx_dir_broker_flag = msg.getElementAsString(EMSX_DIR_BROKER_FLAG) if msg.hasElement(EMSX_DIR_BROKER_FLAG) else ""
emsx_exchange = msg.getElementAsString(EMSX_EXCHANGE) if msg.hasElement(EMSX_EXCHANGE) else ""
emsx_exchange_destination = msg.getElementAsString(EMSX_EXCHANGE_DESTINATION) if msg.hasElement(EMSX_EXCHANGE_DESTINATION) else ""
emsx_exec_instruction = msg.getElementAsString(EMSX_EXEC_INSTRUCTION) if msg.hasElement(EMSX_EXEC_INSTRUCTION) else ""
emsx_fill_id = msg.getElementAsInteger(EMSX_FILL_ID) if msg.hasElement(EMSX_FILL_ID) else 0
emsx_filled = msg.getElementAsInteger(EMSX_FILLED) if msg.hasElement(EMSX_FILLED) else 0
emsx_gpi = msg.getElementAsString(EMSX_GPI) if msg.hasElement(EMSX_GPI) else ""
emsx_gtd_date = msg.getElementAsInteger(EMSX_GTD_DATE) if msg.hasElement(EMSX_GTD_DATE) else 0
emsx_hand_instruction = msg.getElementAsString(EMSX_HAND_INSTRUCTION) if msg.hasElement(EMSX_HAND_INSTRUCTION) else ""
emsx_idle_amount = msg.getElementAsInteger(EMSX_IDLE_AMOUNT) if msg.hasElement(EMSX_IDLE_AMOUNT) else 0
emsx_investor_id = msg.getElementAsString(EMSX_INVESTOR_ID) if msg.hasElement(EMSX_INVESTOR_ID) else ""
emsx_limit_price = msg.getElementAsFloat(EMSX_LIMIT_PRICE) if msg.hasElement(EMSX_LIMIT_PRICE) else 0
emsx_mifid_ii_instruction = msg.getElementAsString(EMSX_MIFID_II_INSTRUCTION) if msg.hasElement(EMSX_MIFID_II_INSTRUCTION) else ""
emsx_mod_pend_status = msg.getElementAsString(EMSX_MOD_PEND_STATUS) if msg.hasElement(EMSX_MOD_PEND_STATUS) else ""
emsx_notes = msg.getElementAsString(EMSX_NOTES) if msg.hasElement(EMSX_NOTES) else ""
emsx_nse_avg_price = msg.getElementAsFloat(EMSX_NSE_AVG_PRICE) if msg.hasElement(EMSX_NSE_AVG_PRICE) else 0
emsx_nse_filled = msg.getElementAsInteger(EMSX_NSE_FILLED) if msg.hasElement(EMSX_NSE_FILLED) else 0
emsx_order_as_of_date = msg.getElementAsInteger(EMSX_ORDER_AS_OF_DATE) if msg.hasElement(EMSX_ORDER_AS_OF_DATE) else 0
emsx_order_as_of_time_microsec = msg.getElementAsFloat(EMSX_ORDER_AS_OF_TIME_MICROSEC) if msg.hasElement(EMSX_ORDER_AS_OF_TIME_MICROSEC) else 0
emsx_ord_ref_id = msg.getElementAsString(EMSX_ORD_REF_ID) if msg.hasElement(EMSX_ORD_REF_ID) else ""
emsx_order_type = msg.getElementAsString(EMSX_ORDER_TYPE) if msg.hasElement(EMSX_ORDER_TYPE) else ""
emsx_originate_trader = msg.getElementAsString(EMSX_ORIGINATE_TRADER) if msg.hasElement(EMSX_ORIGINATE_TRADER) else ""
emsx_originate_trader_firm = msg.getElementAsString(EMSX_ORIGINATE_TRADER_FIRM) if msg.hasElement(EMSX_ORIGINATE_TRADER_FIRM) else ""
emsx_percent_remain = msg.getElementAsFloat(EMSX_PERCENT_REMAIN) if msg.hasElement(EMSX_PERCENT_REMAIN) else 0
emsx_pm_uuid = msg.getElementAsInteger(EMSX_PM_UUID) if msg.hasElement(EMSX_PM_UUID) else 0
emsx_port_mgr = msg.getElementAsString(EMSX_PORT_MGR) if msg.hasElement(EMSX_PORT_MGR) else ""
emsx_port_name = msg.getElementAsString(EMSX_PORT_NAME) if msg.hasElement(EMSX_PORT_NAME) else ""
emsx_port_num = msg.getElementAsInteger(EMSX_PORT_NUM) if msg.hasElement(EMSX_PORT_NUM) else 0
emsx_position = msg.getElementAsString(EMSX_POSITION) if msg.hasElement(EMSX_POSITION) else ""
emsx_principle = msg.getElementAsFloat(EMSX_PRINCIPAL) if msg.hasElement(EMSX_PRINCIPAL) else 0
emsx_product = msg.getElementAsString(EMSX_PRODUCT) if msg.hasElement(EMSX_PRODUCT) else ""
emsx_queued_date = msg.getElementAsInteger(EMSX_QUEUED_DATE) if msg.hasElement(EMSX_QUEUED_DATE) else 0
emsx_queued_time = msg.getElementAsInteger(EMSX_QUEUED_TIME) if msg.hasElement(EMSX_QUEUED_TIME) else 0
emsx_queued_time_microsec = msg.getElementAsFloat(EMSX_QUEUED_TIME_MICROSEC) if msg.hasElement(EMSX_QUEUED_TIME_MICROSEC) else 0
emsx_reason_code = msg.getElementAsString(EMSX_REASON_CODE) if msg.hasElement(EMSX_REASON_CODE) else ""
emsx_reason_desc = msg.getElementAsString(EMSX_REASON_DESC) if msg.hasElement(EMSX_REASON_DESC) else ""
emsx_remain_balance = msg.getElementAsFloat(EMSX_REMAIN_BALANCE) if msg.hasElement(EMSX_REMAIN_BALANCE) else 0
emsx_route_id = msg.getElementAsInteger(EMSX_ROUTE_ID) if msg.hasElement(EMSX_ROUTE_ID) else 0
emsx_route_price = msg.getElementAsFloat(EMSX_ROUTE_PRICE) if msg.hasElement(EMSX_ROUTE_PRICE) else 0
emsx_sec_name = msg.getElementAsString(EMSX_SEC_NAME) if msg.hasElement(EMSX_SEC_NAME) else ""
emsx_sequence = msg.getElementAsInteger(EMSX_SEQUENCE) if msg.hasElement(EMSX_SEQUENCE) else 0
emsx_settle_amount = msg.getElementAsFloat(EMSX_SETTLE_AMOUNT) if msg.hasElement(EMSX_SETTLE_AMOUNT) else 0
emsx_settle_date = msg.getElementAsInteger(EMSX_SETTLE_DATE) if msg.hasElement(EMSX_SETTLE_DATE) else 0
emsx_si = msg.getElementAsString(EMSX_SI) if msg.hasElement(EMSX_SI) else ""
emsx_side = msg.getElementAsString(EMSX_SIDE) if msg.hasElement(EMSX_SIDE) else ""
emsx_start_amount = msg.getElementAsInteger(EMSX_START_AMOUNT) if msg.hasElement(EMSX_START_AMOUNT) else 0
emsx_status = msg.getElementAsString(EMSX_STATUS) if msg.hasElement(EMSX_STATUS) else ""
emsx_step_out_broker = msg.getElementAsString(EMSX_STEP_OUT_BROKER) if msg.hasElement(EMSX_STEP_OUT_BROKER) else ""
emsx_stop_price = msg.getElementAsFloat(EMSX_STOP_PRICE) if msg.hasElement(EMSX_STOP_PRICE) else 0
emsx_strategy_end_time = msg.getElementAsInteger(EMSX_STRATEGY_END_TIME) if msg.hasElement(EMSX_STRATEGY_END_TIME) else 0
emsx_strategy_part_rate1 = msg.getElementAsFloat(EMSX_STRATEGY_PART_RATE1) if msg.hasElement(EMSX_STRATEGY_PART_RATE1) else 0
emsx_strategy_part_rate2 = msg.getElementAsFloat(EMSX_STRATEGY_PART_RATE2) if msg.hasElement(EMSX_STRATEGY_PART_RATE2) else 0
emsx_strategy_style = msg.getElementAsString(EMSX_STRATEGY_STYLE) if msg.hasElement(EMSX_STRATEGY_STYLE) else ""
emsx_strategy_type = msg.getElementAsString(EMSX_STRATEGY_TYPE) if msg.hasElement(EMSX_STRATEGY_TYPE) else ""
emsx_ticker = msg.getElementAsString(EMSX_TICKER) if msg.hasElement(EMSX_TICKER) else ""
emsx_tif = msg.getElementAsString(EMSX_TIF) if msg.hasElement(EMSX_TIF) else ""
emsx_time_stamp = msg.getElementAsInteger(EMSX_TIME_STAMP) if msg.hasElement(EMSX_TIME_STAMP) else 0
emsx_time_stamp_microsec = msg.getElementAsFloat(EMSX_TIME_STAMP_MICROSEC) if msg.hasElement(EMSX_TIME_STAMP_MICROSEC) else 0
emsx_trad_uuid = msg.getElementAsInteger(EMSX_TRAD_UUID) if msg.hasElement(EMSX_TRAD_UUID) else 0
emsx_trade_desk = msg.getElementAsString(EMSX_TRADE_DESK) if msg.hasElement(EMSX_TRADE_DESK) else ""
emsx_trader = msg.getElementAsString(EMSX_TRADER) if msg.hasElement(EMSX_TRADER) else ""
emsx_trader_notes = msg.getElementAsString(EMSX_TRADER_NOTES) if msg.hasElement(EMSX_TRADER_NOTES) else ""
emsx_ts_ordnum = msg.getElementAsInteger(EMSX_TS_ORDNUM) if msg.hasElement(EMSX_TS_ORDNUM) else 0
emsx_type = msg.getElementAsString(EMSX_TYPE) if msg.hasElement(EMSX_TYPE) else ""
emsx_underlying_ticker = msg.getElementAsString(EMSX_UNDERLYING_TICKER) if msg.hasElement(EMSX_UNDERLYING_TICKER) else ""
emsx_user_comm_amount = msg.getElementAsFloat(EMSX_USER_COMM_AMOUNT) if msg.hasElement(EMSX_USER_COMM_AMOUNT) else 0
emsx_user_comm_rate = msg.getElementAsFloat(EMSX_USER_COMM_RATE) if msg.hasElement(EMSX_USER_COMM_RATE) else 0
emsx_user_fees = msg.getElementAsFloat(EMSX_USER_FEES) if msg.hasElement(EMSX_USER_FEES) else 0
emsx_user_net_money = msg.getElementAsFloat(EMSX_USER_NET_MONEY) if msg.hasElement(EMSX_USER_NET_MONEY) else 0
emsx_user_work_price = msg.getElementAsFloat(EMSX_WORK_PRICE) if msg.hasElement(EMSX_WORK_PRICE) else 0
emsx_working = msg.getElementAsInteger(EMSX_WORKING) if msg.hasElement(EMSX_WORKING) else 0
emsx_yellow_key = msg.getElementAsString(EMSX_YELLOW_KEY) if msg.hasElement(EMSX_YELLOW_KEY) else ""
print ("ORDER MESSAGE: CorrelationID(%d) Status(%d)" % (msg.correlationIds()[0].value(),event_status))
print ("MESSAGE: %s" % (msg))
print ("API_SEQ_NUM: %d" % (api_seq_num))
print ("EMSX_ACCOUNT: %s" % (emsx_account))
print ("EMSX_AMOUNT: %d" % (emsx_amount))
print ("EMSX_ASSET_CLASS: %s" % (emsx_asset_class))
print ("EMSX_ASSIGNED_TRADER: %s" % (emsx_assigned_trader))
print ("EMSX_AVG_PRICE: %d" % (emsx_avg_price))
print ("EMSX_BASKET_NAME: %s" % (emsx_basket_name))
print ("EMSX_BASKET_NUM: %d" % (emsx_basket_num))
print ("EMSX_BLOCK_ID: %s" % (emsx_block_id))
print ("EMSX_BROKER: %s" % (emsx_broker))
print ("EMSX_BROKER_COMM: %d" % (emsx_broker_comm))
print ("EMSX_BSE_AVG_PRICE: %d" % (emsx_bse_avg_price))
print ("EMSX_BSE_FILLED: %d" % (emsx_bse_filled))
print ("EMSX_BUYSIDE_LEI: %s" % (emsx_buyside_lei))
print ("EMSX_CFD_FLAG: %s" % (emsx_cfd_flag))
print ("EMSX_CLIENT_IDENTIFICATION: %s" % (emsx_client_identification))
print ("EMSX_COMM_DIFF_FLAG: %s" % (emsx_comm_diff_flag))
print ("EMSX_COMM_RATE: %d" % (emsx_comm_rate))
print ("EMSX_CUSTOM_NOTE1: %s" % (emsx_custom_note1))
print ("EMSX_CUSTOM_NOTE2: %s" % (emsx_custom_note2))
print ("EMSX_CUSTOM_NOTE3: %s" % (emsx_custom_note3))
print ("EMSX_CUSTOM_NOTE4: %s" % (emsx_custom_note4))
print ("EMSX_CUSTOM_NOTE5: %s" % (emsx_custom_note5))
print ("EMSX_CURRENCY_PAIR: %s" % (emsx_currency_pair))
print ("EMSX_DATE: %d" % (emsx_date))
print ("EMSX_DAY_AVG_PRICE: %d" % (emsx_day_avg_price))
print ("EMSX_DAY_FILL: %d" % (emsx_day_fill))
print ("EMSX_DIR_BROKER_FLAG: %s" % (emsx_dir_broker_flag))
print ("EMSX_EXCHANGE: %s" % (emsx_exchange))
print ("EMSX_EXCHANGE_DESTINATION: %s" % (emsx_exchange_destination))
print ("EMSX_EXEC_INSTRUCTION: %s" % (emsx_exec_instruction))
print ("EMSX_FILL_ID: %d" % (emsx_fill_id))
print ("EMSX_FILLED: %d" % (emsx_filled))
print ("EMSX_GPI: %s" % (emsx_gpi))
print ("EMSX_GTD_DATE: %d" % (emsx_gtd_date))
print ("EMSX_HAND_INSTRUCTION: %s" % (emsx_hand_instruction))
print ("EMSX_IDLE_AMOUNT: %d" % (emsx_idle_amount))
print ("EMSX_INVESTOR_ID: %s" % (emsx_investor_id))
print ("EMSX_LIMIT_PRICE: %0.8f" % (emsx_limit_price))
print ("EMSX_MIFID_II_INSTRUCTION: %s" % (emsx_mifid_ii_instruction))
print ("EMSX_MOD_PEND_STATUS: %s" % (emsx_mod_pend_status))
print ("EMSX_NOTES: %s" % (emsx_notes))
print ("EMSX_NSE_AVG_PRICE: %d" % (emsx_nse_avg_price))
print ("EMSX_NSE_FILLED: %d" % (emsx_nse_filled))
print ("EMSX_ORD_REF_ID: %s" % (emsx_ord_ref_id))
print ("EMSX_ORDER_AS_OF_DATE: %d" % (emsx_order_as_of_date))
print ("EMSX_ORDER_AS_OF_TIME_MICROSEC: %0.8f" % (emsx_order_as_of_time_microsec))
print ("EMSX_ORDER_TYPE: %s" % (emsx_order_type))
print ("EMSX_ORIGINATE_TRADER: %s" % (emsx_originate_trader))
print ("EMSX_ORIGINATE_TRADER_FIRM: %s" % (emsx_originate_trader_firm))
print ("EMSX_PERCENT_REMAIN: %d" % (emsx_percent_remain))
print ("EMSX_PM_UUID: %d" % (emsx_pm_uuid))
print ("EMSX_PORT_MGR: %s" % (emsx_port_mgr))
print ("EMSX_PORT_NAME: %s" % (emsx_port_name))
print ("EMSX_PORT_NUM: %d" % (emsx_port_num))
print ("EMSX_POSITION: %s" % (emsx_position))
print ("EMSX_PRINCIPAL: %d" % (emsx_principle))
print ("EMSX_PRODUCT: %s" % (emsx_product))
print ("EMSX_QUEUED_DATE: %d" % (emsx_queued_date))
print ("EMSX_QUEUED_TIME: %d" % (emsx_queued_time))
print ("EMSX_QUEUED_TIME_MICROSEC: %0.8f" % (emsx_queued_time_microsec))
print ("EMSX_REASON_CODE: %s" % (emsx_reason_code))
print ("EMSX_REASON_DESC: %s" % (emsx_reason_desc))
print ("EMSX_REMAIN_BALANCE: %d" % (emsx_remain_balance))
print ("EMSX_ROUTE_ID: %d" % (emsx_route_id))
print ("EMSX_ROUTE_PRICE: %d" % (emsx_route_price))
print ("EMSX_SEC_NAME: %s" % (emsx_sec_name))
print ("EMSX_SEQUENCE: %d" % (emsx_sequence))
print ("EMSX_SETTLE_AMOUNT: %d" % (emsx_settle_amount))
print ("EMSX_SETTLE_DATE: %d" % (emsx_settle_date))
print ("EMSX_SI: %s" % (emsx_si))
print ("EMSX_SIDE: %s" % (emsx_side))
print ("EMSX_START_AMOUNT: %d" % (emsx_start_amount))
print ("EMSX_STATUS: %s" % (emsx_status))
print ("EMSX_STEP_OUT_BROKER: %s" % (emsx_step_out_broker))
print ("EMSX_STOP_PRICE: %d" % (emsx_stop_price))
print ("EMSX_STRATEGY_END_TIME: %d" % (emsx_strategy_end_time))
print ("EMSX_STRATEGY_PART_RATE1: %d" % (emsx_strategy_part_rate1))
print ("EMSX_STRATEGY_PART_RATE2: %d" % (emsx_strategy_part_rate2))
print ("EMSX_STRATEGY_STYLE: %s" % (emsx_strategy_style))
print ("EMSX_STRATEGY_TYPE: %s" % (emsx_strategy_type))
print ("EMSX_TICKER: %s" % (emsx_ticker))
print ("EMSX_TIF: %s" % (emsx_tif))
print ("EMSX_TIME_STAMP: %d" % (emsx_time_stamp))
print ("EMSX_TIME_STAMP_MICROSEC: %0.8f" % (emsx_time_stamp_microsec))
print ("EMSX_TRAD_UUID: %d" % (emsx_trad_uuid))
print ("EMSX_TRADE_DESK: %s" % (emsx_trade_desk))
print ("EMSX_TRADER: %s" % (emsx_trader))
print ("EMSX_TRADER_NOTES: %s" % (emsx_trader_notes))
print ("EMSX_TS_ORDNUM: %d" % (emsx_ts_ordnum))
print ("EMSX_TYPE: %s" % (emsx_type))
print ("EMSX_UNDERLYING_TICKER: %s" % (emsx_underlying_ticker))
print ("EMSX_USER_COMM_AMOUNT: %d" % (emsx_user_comm_amount))
print ("EMSX_USER_COMM_RATE: %d" % (emsx_user_comm_rate))
print ("EMSX_USER_FEES: %d" % (emsx_user_fees))
print ("EMSX_USER_NET_MONEY: %d" % (emsx_user_net_money))
print ("EMSX_WORK_PRICE: %d" % (emsx_user_work_price))
print ("EMSX_WORKING: %d" % (emsx_working))
print ("EMSX_YELLOW_KEY: %s" % (emsx_yellow_key))
elif msg.correlationIds()[0].value() == routeSubscriptionID.value():
api_seq_num = msg.getElementAsInteger(API_SEQ_NUM) if msg.hasElement(API_SEQ_NUM) else 0
emsx_amount = msg.getElementAsInteger(EMSX_AMOUNT) if msg.hasElement(EMSX_AMOUNT) else 0
emsx_apa_mic = msg.getElementAsString(EMSX_APA_MIC) if msg.hasElement(EMSX_APA_MIC) else ""
emsx_avg_price = msg.getElementAsFloat(EMSX_AVG_PRICE) if msg.hasElement(EMSX_AVG_PRICE) else 0
emsx_broker = msg.getElementAsString(EMSX_BROKER) if msg.hasElement(EMSX_BROKER) else ""
emsx_broker_comm = msg.getElementAsFloat(EMSX_BROKER_COMM) if msg.hasElement(EMSX_BROKER_COMM) else 0
emsx_broker_lei = msg.getElementAsString(EMSX_BROKER_LEI) if msg.hasElement(EMSX_BROKER_LEI) else ""
emsx_broker_si = msg.getElementAsString(EMSX_BROKER_SI) if msg.hasElement(EMSX_BROKER_SI) else ""
emsx_broker_status = msg.getElementAsString(EMSX_BROKER_STATUS) if msg.hasElement(EMSX_BROKER_STATUS) else ""
emsx_bse_avg_price = msg.getElementAsFloat(EMSX_BSE_AVG_PRICE) if msg.hasElement(EMSX_BSE_AVG_PRICE) else 0
emsx_bse_filled = msg.getElementAsInteger(EMSX_BSE_FILLED) if msg.hasElement(EMSX_BSE_FILLED) else 0
emsx_buyside_lei = msg.getElementAsString(EMSX_BUYSIDE_LEI) if msg.hasElement(EMSX_BUYSIDE_LEI) else ""
emsx_clearing_account = msg.getElementAsString(EMSX_CLEARING_ACCOUNT) if msg.hasElement(EMSX_CLEARING_ACCOUNT) else ""
emsx_clearing_firm = msg.getElementAsString(EMSX_CLEARING_FIRM) if msg.hasElement(EMSX_CLEARING_FIRM) else ""
emsx_client_identification = msg.getElementAsString(EMSX_CLIENT_IDENTIFICATION) if msg.hasElement(EMSX_CLIENT_IDENTIFICATION) else ""
emsx_comm_diff_flag = msg.getElementAsString(EMSX_COMM_DIFF_FLAG) if msg.hasElement(EMSX_COMM_DIFF_FLAG) else ""
emsx_comm_rate = msg.getElementAsFloat(EMSX_COMM_RATE) if msg.hasElement(EMSX_COMM_RATE) else 0
emsx_currency_pair = msg.getElementAsString(EMSX_CURRENCY_PAIR) if msg.hasElement(EMSX_CURRENCY_PAIR) else ""
emsx_custom_account = msg.getElementAsString(EMSX_CUSTOM_ACCOUNT) if msg.hasElement(EMSX_CUSTOM_ACCOUNT) else ""
emsx_day_avg_price = msg.getElementAsFloat(EMSX_DAY_AVG_PRICE) if msg.hasElement(EMSX_DAY_AVG_PRICE) else 0
emsx_day_fill = msg.getElementAsInteger(EMSX_DAY_FILL) if msg.hasElement(EMSX_DAY_FILL) else 0
emsx_exchange_destination = msg.getElementAsString(EMSX_EXCHANGE_DESTINATION) if msg.hasElement(EMSX_EXCHANGE_DESTINATION) else ""
emsx_exec_instruction = msg.getElementAsString(EMSX_EXEC_INSTRUCTION) if msg.hasElement(EMSX_EXEC_INSTRUCTION) else ""
emsx_execute_broker = msg.getElementAsString(EMSX_EXECUTE_BROKER) if msg.hasElement(EMSX_EXECUTE_BROKER) else ""
emsx_fill_id = msg.getElementAsInteger(EMSX_FILL_ID) if msg.hasElement(EMSX_FILL_ID) else 0
emsx_filled = msg.getElementAsInteger(EMSX_FILLED) if msg.hasElement(EMSX_FILLED) else 0
emsx_gpi = msg.getElementAsString(EMSX_GPI) if msg.hasElement(EMSX_GPI) else ""
emsx_gtd_date = msg.getElementAsInteger(EMSX_GTD_DATE) if msg.hasElement(EMSX_GTD_DATE) else 0
emsx_hand_instruction = msg.getElementAsString(EMSX_HAND_INSTRUCTION) if msg.hasElement(EMSX_HAND_INSTRUCTION) else ""
emsx_is_manual_route = msg.getElementAsInteger(EMSX_IS_MANUAL_ROUTE) if msg.hasElement(EMSX_IS_MANUAL_ROUTE) else 0
emsx_last_capacity = msg.getElementAsString(EMSX_LAST_CAPACITY) if msg.hasElement(EMSX_LAST_CAPACITY) else ""
emsx_last_fill_date = msg.getElementAsInteger(EMSX_LAST_FILL_DATE) if msg.hasElement(EMSX_LAST_FILL_DATE) else 0
emsx_last_fill_time = msg.getElementAsInteger(EMSX_LAST_FILL_TIME) if msg.hasElement(EMSX_LAST_FILL_TIME) else 0
emsx_last_fill_time_microsec = msg.getElementAsFloat(EMSX_LAST_FILL_TIME_MICROSEC) if msg.hasElement(EMSX_LAST_FILL_TIME_MICROSEC) else 0
emsx_last_market = msg.getElementAsString(EMSX_LAST_MARKET) if msg.hasElement(EMSX_LAST_MARKET) else ""
emsx_last_price = msg.getElementAsFloat(EMSX_LAST_PRICE) if msg.hasElement(EMSX_LAST_PRICE) else 0
emsx_last_shares = msg.getElementAsInteger(EMSX_LAST_SHARES) if msg.hasElement(EMSX_LAST_SHARES) else 0
emsx_leg_fill_date_added = msg.getElementAsInteger(EMSX_LEG_FILL_DATE_ADDED) if msg.hasElement(EMSX_LEG_FILL_DATE_ADDED) else 0
emsx_leg_fill_price = msg.getElementAsFloat(EMSX_LEG_FILL_PRICE) if msg.hasElement(EMSX_LEG_FILL_PRICE) else 0
emsx_leg_fill_seq_no = msg.getElementAsInteger(EMSX_LEG_FILL_SEQ_NO) if msg.hasElement(EMSX_LEG_FILL_SEQ_NO) else 0
emsx_leg_fill_shares = msg.getElementAsFloat(EMSX_LEG_FILL_SHARES) if msg.hasElement(EMSX_LEG_FILL_SHARES) else 0
emsx_leg_fill_side = msg.getElementAsString(EMSX_LEG_FILL_SIDE) if msg.hasElement(EMSX_LEG_FILL_SIDE) else ""
emsx_leg_fill_ticker = msg.getElementAsString(EMSX_LEG_FILL_TICKER) if msg.hasElement(EMSX_LEG_FILL_TICKER) else ""
emsx_leg_fill_time_added = msg.getElementAsInteger(EMSX_LEG_FILL_TIME_ADDED) if msg.hasElement(EMSX_LEG_FILL_TIME_ADDED) else 0
emsx_limit_price = msg.getElementAsFloat(EMSX_LIMIT_PRICE) if msg.hasElement(EMSX_LIMIT_PRICE) else 0
emsx_mifid_ii_instruction = msg.getElementAsString(EMSX_MIFID_II_INSTRUCTION) if msg.hasElement(EMSX_MIFID_II_INSTRUCTION) else ""
emsx_misc_fees = msg.getElementAsFloat(EMSX_MISC_FEES) if msg.hasElement(EMSX_MISC_FEES) else 0
emsx_ml_id = msg.getElementAsString(EMSX_ML_ID) if msg.hasElement(EMSX_ML_ID) else ""
emsx_ml_leg_quantity = msg.getElementAsInteger(EMSX_ML_LEG_QUANTITY) if msg.hasElement(EMSX_ML_LEG_QUANTITY) else 0
emsx_ml_num_legs = msg.getElementAsInteger(EMSX_ML_NUM_LEGS) if msg.hasElement(EMSX_ML_NUM_LEGS) else 0
emsx_ml_percent_filled = msg.getElementAsFloat(EMSX_ML_PERCENT_FILLED) if msg.hasElement(EMSX_ML_PERCENT_FILLED) else 0
emsx_ml_ratio = msg.getElementAsFloat(EMSX_ML_RATIO) if msg.hasElement(EMSX_ML_RATIO) else 0
emsx_ml_remain_balance = msg.getElementAsFloat(EMSX_ML_REMAIN_BALANCE) if msg.hasElement(EMSX_ML_REMAIN_BALANCE) else 0
emsx_ml_strategy = msg.getElementAsString(EMSX_ML_STRATEGY) if msg.hasElement(EMSX_ML_STRATEGY) else ""
emsx_ml_total_quantity = msg.getElementAsInteger(EMSX_ML_TOTAL_QUANTITY) if msg.hasElement(EMSX_ML_TOTAL_QUANTITY) else 0
emsx_notes = msg.getElementAsString(EMSX_NOTES) if msg.hasElement(EMSX_NOTES) else ""
emsx_nse_avg_price = msg.getElementAsFloat(EMSX_NSE_AVG_PRICE) if msg.hasElement(EMSX_NSE_AVG_PRICE) else 0
emsx_nse_filled = msg.getElementAsInteger(EMSX_NSE_FILLED) if msg.hasElement(EMSX_NSE_FILLED) else 0
emsx_order_type = msg.getElementAsString(EMSX_ORDER_TYPE) if msg.hasElement(EMSX_ORDER_TYPE) else ""
emsx_otc_flag = msg.getElementAsString(EMSX_OTC_FLAG) if msg.hasElement(EMSX_OTC_FLAG) else ""
emsx_p_a = msg.getElementAsString(EMSX_P_A) if msg.hasElement(EMSX_P_A) else ""
emsx_percent_remain = msg.getElementAsFloat(EMSX_PERCENT_REMAIN) if msg.hasElement(EMSX_PERCENT_REMAIN) else 0
emsx_principal = msg.getElementAsFloat(EMSX_PRINCIPAL) if msg.hasElement(EMSX_PRINCIPAL) else 0
emsx_queued_date = msg.getElementAsInteger(EMSX_QUEUED_DATE) if msg.hasElement(EMSX_QUEUED_DATE) else 0
emsx_queued_time = msg.getElementAsInteger(EMSX_QUEUED_TIME) if msg.hasElement(EMSX_QUEUED_TIME) else 0
emsx_queued_time_microsec = msg.getElementAsFloat(EMSX_QUEUED_TIME_MICROSEC) if msg.hasElement(EMSX_QUEUED_TIME_MICROSEC) else ""
emsx_reason_code = msg.getElementAsString(EMSX_REASON_CODE) if msg.hasElement(EMSX_REASON_CODE) else ""
emsx_reason_desc = msg.getElementAsString(EMSX_REASON_DESC) if msg.hasElement(EMSX_REASON_DESC) else ""
emsx_remain_balance = msg.getElementAsFloat(EMSX_REMAIN_BALANCE) if msg.hasElement(EMSX_REMAIN_BALANCE) else 0
emsx_route_as_of_date = msg.getElementAsInteger(EMSX_ROUTE_AS_OF_DATE) if msg.hasElement(EMSX_ROUTE_AS_OF_DATE) else 0
emsx_route_as_of_time_microsec = msg.getElementAsFloat(EMSX_ROUTE_AS_OF_TIME_MICROSEC) if msg.hasElement(EMSX_ROUTE_AS_OF_TIME_MICROSEC) else 0
emsx_route_create_date = msg.getElementAsInteger(EMSX_ROUTE_CREATE_DATE) if msg.hasElement(EMSX_ROUTE_CREATE_DATE) else 0
emsx_route_create_time = msg.getElementAsInteger(EMSX_ROUTE_CREATE_TIME) if msg.hasElement(EMSX_ROUTE_CREATE_TIME) else 0
emsx_route_create_time_microsec = msg.getElementAsFloat(EMSX_ROUTE_CREATE_TIME_MICROSEC) if msg.hasElement(EMSX_ROUTE_CREATE_TIME_MICROSEC) else 0
emsx_route_id = msg.getElementAsInteger(EMSX_ROUTE_ID) if msg.hasElement(EMSX_ROUTE_ID) else 0
emsx_route_last_update_time = msg.getElementAsInteger(EMSX_ROUTE_LAST_UPDATE_TIME) if msg.hasElement(EMSX_ROUTE_LAST_UPDATE_TIME) else 0
emsx_route_last_update_time_microsec = msg.getElementAsFloat(EMSX_ROUTE_LAST_UPDATE_TIME_MICROSEC) if msg.hasElement(EMSX_ROUTE_LAST_UPDATE_TIME_MICROSEC) else 0
emsx_route_price = msg.getElementAsFloat(EMSX_ROUTE_PRICE) if msg.hasElement(EMSX_ROUTE_PRICE) else 0
emsx_route_ref_id = msg.getElementAsString(EMSX_ROUTE_REF_ID) if msg.hasElement(EMSX_ROUTE_REF_ID) else ""
emsx_sequence = msg.getElementAsInteger(EMSX_SEQUENCE) if msg.hasElement(EMSX_SEQUENCE) else 0
emsx_settle_amount = msg.getElementAsFloat(EMSX_SETTLE_AMOUNT) if msg.hasElement(EMSX_SETTLE_AMOUNT) else 0
emsx_settle_date = msg.getElementAsInteger(EMSX_SETTLE_DATE) if msg.hasElement(EMSX_SETTLE_DATE) else 0
emsx_status = msg.getElementAsString(EMSX_STATUS) if msg.hasElement(EMSX_STATUS) else ""
emsx_stop_price = msg.getElementAsFloat(EMSX_STOP_PRICE) if msg.hasElement(EMSX_STOP_PRICE) else 0
emsx_strategy_end_time = msg.getElementAsInteger(EMSX_STRATEGY_END_TIME) if msg.hasElement(EMSX_STRATEGY_END_TIME) else 0
emsx_strategy_part_rate1 = msg.getElementAsFloat(EMSX_STRATEGY_PART_RATE1) if msg.hasElement(EMSX_STRATEGY_PART_RATE1) else 0
emsx_strategy_part_rate2 = msg.getElementAsFloat(EMSX_STRATEGY_PART_RATE2) if msg.hasElement(EMSX_STRATEGY_PART_RATE2) else 0
emsx_strategy_start_time = msg.getElementAsInteger(EMSX_STRATEGY_START_TIME) if msg.hasElement(EMSX_STRATEGY_START_TIME) else 0
emsx_strategy_style = msg.getElementAsString(EMSX_STRATEGY_STYLE) if msg.hasElement(EMSX_STRATEGY_STYLE) else ""
emsx_strategy_type = msg.getElementAsString(EMSX_STRATEGY_TYPE) if msg.hasElement(EMSX_STRATEGY_TYPE) else ""
emsx_tif = msg.getElementAsString(EMSX_TIF) if msg.hasElement(EMSX_TIF) else ""
emsx_time_stamp = msg.getElementAsInteger(EMSX_TIME_STAMP) if msg.hasElement(EMSX_TIME_STAMP) else 0
emsx_time_stamp_microsec = msg.getElementAsFloat(EMSX_TIME_STAMP_MICROSEC) if msg.hasElement(EMSX_TIME_STAMP_MICROSEC) else 0
emsx_trade_reporting_indicator = msg.getElementAsString(EMSX_TRADE_REPORTING_INDICATOR) if msg.hasElement(EMSX_TRADE_REPORTING_INDICATOR) else ""
emsx_transaction_reporting_mic = msg.getElementAsString(EMSX_TRANSACTION_REPORTING_MIC) if msg.hasElement(EMSX_TRANSACTION_REPORTING_MIC) else ""
emsx_type = msg.getElementAsString(EMSX_TYPE) if msg.hasElement(EMSX_TYPE) else ""
emsx_urgency_level = msg.getElementAsInteger(EMSX_URGENCY_LEVEL) if msg.hasElement(EMSX_URGENCY_LEVEL) else ""
emsx_user_comm_amount = msg.getElementAsFloat(EMSX_USER_COMM_AMOUNT) if msg.hasElement(EMSX_USER_COMM_AMOUNT) else 0
emsx_user_comm_rate = msg.getElementAsFloat(EMSX_USER_COMM_RATE) if msg.hasElement(EMSX_USER_COMM_RATE) else 0
emsx_user_fees = msg.getElementAsFloat(EMSX_USER_FEES) if msg.hasElement(EMSX_USER_FEES) else 0
emsx_user_net_money = msg.getElementAsFloat(EMSX_USER_NET_MONEY) if msg.hasElement(EMSX_USER_NET_MONEY) else 0
emsx_waiver_flag = msg.getElementAsString(EMSX_WAIVER_FLAG) if msg.hasElement(EMSX_WORKING) else ""
emsx_working = msg.getElementAsInteger(EMSX_WORKING) if msg.hasElement(EMSX_WORKING) else 0
emsx_route_as_of_date = msg.getElementAsInteger(EMSX_ROUTE_AS_OF_DATE) if msg.hasElement(EMSX_ROUTE_AS_OF_DATE) else 0
print ("ROUTE MESSAGE: CorrelationID(%d) Status(%d)" % (msg.correlationIds()[0].value(),event_status))
print ("MESSAGE: %s" % (msg))
print ("API_SEQ_NUM: %d" % (api_seq_num))
print ("EMSX_AMOUNT: %d" % (emsx_amount))
print ("EMSX_APA_MIC: %s" % (emsx_apa_mic))
print ("EMSX_AVG_PRICE: %d" % (emsx_avg_price))
print ("EMSX_BROKER: %s" % (emsx_broker))
print ("EMSX_BROKER_COMM: %d" % (emsx_broker_comm))
print ("EMSX_BROKER_LEI: %s" % (emsx_broker_lei))
print ("EMSX_BROKER_SI: %s" % (emsx_broker_si))
print ("EMSX_BROKER_STATUS: %s" % (emsx_broker_status))
print ("EMSX_BSE_AVG_PRICE: %d" % (emsx_bse_avg_price))
print ("EMSX_BSE_FILLED: %d" % (emsx_bse_filled))
print ("EMSX_BUYSIDE_LEI: %s" % (emsx_buyside_lei))
print ("EMSX_CLEARING_ACCOUNT: %s" % (emsx_clearing_account))
print ("EMSX_CLEARING_FIRM: %s" % (emsx_clearing_firm))
print ("EMSX_CLIENT_IDENTIFICATION: %s" % (emsx_client_identification))
print ("EMSX_COMM_DIFF_FLAG: %s" % (emsx_comm_diff_flag))
print ("EMSX_COMM_RATE: %d" % (emsx_comm_rate))
print ("EMSX_CURRENCY_PAIR: %s" % (emsx_currency_pair))
print ("EMSX_CUSTOM_ACCOUNT: %s" % (emsx_custom_account))
print ("EMSX_DAY_AVG_PRICE: %d" % (emsx_day_avg_price))
print ("EMSX_DAY_FILL: %d" % (emsx_day_fill))
print ("EMSX_EXCHANGE_DESTINATION: %s" % (emsx_exchange_destination))
print ("EMSX_EXEC_INSTRUCTION: %s" % (emsx_exec_instruction))
print ("EMSX_EXECUTE_BROKER: %s" % (emsx_execute_broker))
print ("EMSX_FILL_ID: %d" % (emsx_fill_id))
print ("EMSX_FILLED: %d" % (emsx_filled))
print ("EMSX_GPI: %s" % (emsx_gpi))
print ("EMSX_GTD_DATE: %d" % (emsx_gtd_date))
print ("EMSX_HAND_INSTRUCTION: %s" % (emsx_hand_instruction))
print ("EMSX_IS_MANUAL_ROUTE: %d" % (emsx_is_manual_route))
print ("EMSX_LAST_CAPACITY: %s" % (emsx_last_capacity))
print ("EMSX_LAST_FILL_DATE: %d" % (emsx_last_fill_date))
print ("EMSX_LAST_FILL_TIME: %d" % (emsx_last_fill_time))
print ("EMSX_LAST_FILL_TIME_MICROSEC: %0.8f" % (emsx_last_fill_time_microsec))
print ("EMSX_LAST_MARKET: %s" % (emsx_last_market))
print ("EMSX_LAST_PRICE: %d" % (emsx_last_price))
print ("EMSX_LAST_SHARES: %d" % (emsx_last_shares))
print ("EMSX_LEG_FILL_DATE_ADDED: %d" % (emsx_leg_fill_date_added))
print ("EMSX_LEG_FILL_PRICE: %0.8f" % (emsx_leg_fill_price))
print ("EMSX_LEG_FILL_SEQ_NO: %d" % (emsx_leg_fill_seq_no))
print ("EMSX_LEG_FILL_SHARES: %0.8f" % (emsx_leg_fill_shares))
print ("EMSX_LEG_FILL_SIDE: %s" % (emsx_leg_fill_side))
print ("EMSX_LEG_FILL_TICKER: %s" % (emsx_leg_fill_ticker))
print ("EMSX_LEG_FILL_TIME_ADDED: %d" % (emsx_leg_fill_time_added))
print ("EMSX_LIMIT_PRICE: %0.8f" % (emsx_limit_price))
print ("EMSX_MIFID_II_INSTRUCTION: %s" % (emsx_mifid_ii_instruction))
print ("EMSX_MISC_FEES: %d" % (emsx_misc_fees))
print ("EMSX_ML_ID: %s" % (emsx_ml_id))
print ("EMSX_ML_LEG_QUANTITY: %d" % (emsx_ml_leg_quantity))
print ("EMSX_ML_NUM_LEGS: %d" % (emsx_ml_num_legs))
print ("EMSX_ML_PERCENT_FILLED: %d" % (emsx_ml_percent_filled))
print ("EMSX_ML_RATIO: %d" % (emsx_ml_ratio))
print ("EMSX_ML_REMAIN_BALANCE: %d" % (emsx_ml_remain_balance))
print ("EMSX_ML_STRATEGY: %s" % (emsx_ml_strategy))
print ("EMSX_ML_TOTAL_QUANTITY: %d" % (emsx_ml_total_quantity))
print ("EMSX_NOTES: %s" % (emsx_notes))
print ("EMSX_NSE_AVG_PRICE: %d" % (emsx_nse_avg_price))
print ("EMSX_NSE_FILLED: %d" % (emsx_nse_filled))
print ("EMSX_ORDER_TYPE: %s" % (emsx_order_type))
print ("EMSX_OTC_FLAG: %s" % (emsx_otc_flag))
print ("EMSX_P_A: %s" % (emsx_p_a))
print ("EMSX_PERCENT_REMAIN: %d" % (emsx_percent_remain))
print ("EMSX_PRINCIPAL: %d" % (emsx_principal))
print ("EMSX_QUEUED_DATE: %d" % (emsx_queued_date))
print ("EMSX_QUEUED_TIME: %d" % (emsx_queued_time))
print ("EMSX_QUEUED_TIME_MICROSEC: %0.8f" % (emsx_queued_time_microsec))
print ("EMSX_REASON_CODE: %s" % (emsx_reason_code))
print ("EMSX_REASON_DESC: %s" % (emsx_reason_desc))
print ("EMSX_REMAIN_BALANCE: %d" % (emsx_remain_balance))
print ("EMSX_ROUTE_AS_OF_DATE: %d" % (emsx_route_as_of_date))
print ("EMSX_ROUTE_AS_OF_TIME_MICROSEC: %0.8f" % (emsx_route_as_of_time_microsec))
print ("EMSX_ROUTE_CREATE_DATE: %d" % (emsx_route_create_date))
print ("EMSX_ROUTE_CREATE_TIME: %d" % (emsx_route_create_time))
print ("EMSX_ROUTE_CREATE_TIME_MICROSEC: %0.8f" % (emsx_route_create_time_microsec))
print ("EMSX_ROUTE_ID: %d" % (emsx_route_id))
print ("EMSX_ROUTE_LAST_UPDATE_TIME: %d" % (emsx_route_last_update_time))
print ("EMSX_ROUTE_LAST_UPDATE_TIME_MICROSEC: %0.8f" % (emsx_route_last_update_time_microsec))
print ("EMSX_ROUTE_PRICE: %d" % (emsx_route_price))
print ("EMSX_ROUTE_REF_ID: %s" % (emsx_route_ref_id))
print ("EMSX_SEQUENCE: %d" % (emsx_sequence))
print ("EMSX_SETTLE_AMOUNT: %d" % (emsx_settle_amount))
print ("EMSX_SETTLE_DATE: %d" % (emsx_settle_date))
print ("EMSX_STATUS: %s" % (emsx_status))
print ("EMSX_STOP_PRICE: %d" % (emsx_stop_price))
print ("EMSX_STRATEGY_END_TIME: %d" % (emsx_strategy_end_time))
print ("EMSX_STRATEGY_PART_RATE1: %d" % (emsx_strategy_part_rate1))
print ("EMSX_STRATEGY_PART_RATE2: %d" % (emsx_strategy_part_rate2))
print ("EMSX_STRATEGY_START_TIME: %s" % (emsx_strategy_start_time))
print ("EMSX_STRATEGY_STYLE: %s" % (emsx_strategy_style))
print ("EMSX_STRATEGY_TYPE: %s" % (emsx_strategy_type))
print ("EMSX_TIF: %s" % (emsx_tif))
print ("EMSX_TIME_STAMP: %d" % (emsx_time_stamp))
print ("EMSX_TIME_STAMP_MICROSEC: %0.8f" % (emsx_time_stamp_microsec))
print ("EMSX_TRADE_REPORTING_INDICATOR: %s" % (emsx_trade_reporting_indicator))
print ("EMSX_TRANSACTION_REPORTING_MIC: %s" % (emsx_transaction_reporting_mic))
print ("EMSX_TYPE: %s" % (emsx_type))
print ("EMSX_URGENCY_LEVEL: %d" % (emsx_urgency_level))
print ("EMSX_USER_COMM_AMOUNT: %d" % (emsx_user_comm_amount))
print ("EMSX_USER_COMM_RATE: %d" % (emsx_user_comm_rate))
print ("EMSX_USER_FEES: %d" % (emsx_user_fees))
print ("EMSX_USER_NET_MONEY: %d" % (emsx_user_net_money))
print ("EMSX_WAIVER_FLAG: %s" % (emsx_waiver_flag))
print ("EMSX_WORKING: %d" % (emsx_working))
print ("EMSX_ROUTE_AS_OF_DATE: %d" % (emsx_route_as_of_date))
else:
print ("Error: Unexpected message", file=sys.stderr)
def processMiscEvents(self, event):
print ("Processing " + event.eventType() + " event")
for msg in event:
print ("MESSAGE: %s" % (msg))
def createOrderSubscription(self, session):
print ("Create Order subscription")
#orderTopic = d_emsx + "/order;team=TKTEAM?fields="
orderTopic = d_emsx + "/order?fields="
orderTopic = orderTopic + "API_SEQ_NUM,"
orderTopic = orderTopic + "EMSX_ACCOUNT,"
orderTopic = orderTopic + "EMSX_AMOUNT,"
orderTopic = orderTopic + "EMSX_ARRIVAL_PRICE,"
orderTopic = orderTopic + "EMSX_ASSET_CLASS,"
orderTopic = orderTopic + "EMSX_ASSIGNED_TRADER,"
orderTopic = orderTopic + "EMSX_AVG_PRICE,"
orderTopic = orderTopic + "EMSX_BASKET_NAME,"
orderTopic = orderTopic + "EMSX_BASKET_NUM,"
orderTopic = orderTopic + "EMSX_BLOCK_ID,"
orderTopic = orderTopic + "EMSX_BROKER,"
orderTopic = orderTopic + "EMSX_BROKER_COMM,"
orderTopic = orderTopic + "EMSX_BSE_AVG_PRICE,"
orderTopic = orderTopic + "EMSX_BSE_FILLED,"
orderTopic = orderTopic + "EMSX_BUYSIDE_LEI,"
orderTopic = orderTopic + "EMSX_CFD_FLAG,"
orderTopic = orderTopic + "EMSX_CLIENT_IDENTIFICATION,"
orderTopic = orderTopic + "EMSX_COMM_DIFF_FLAG,"
orderTopic = orderTopic + "EMSX_COMM_RATE,"
orderTopic = orderTopic + "EMSX_CUSTOM_NOTE1,"
orderTopic = orderTopic + "EMSX_CUSTOM_NOTE2,"
orderTopic = orderTopic + "EMSX_CUSTOM_NOTE3,"
orderTopic = orderTopic + "EMSX_CUSTOM_NOTE4,"
orderTopic = orderTopic + "EMSX_CUSTOM_NOTE5,"
orderTopic = orderTopic + "EMSX_CURRENCY_PAIR,"
orderTopic = orderTopic + "EMSX_DATE,"
orderTopic = orderTopic + "EMSX_DAY_AVG_PRICE,"
orderTopic = orderTopic + "EMSX_DAY_FILL,"
orderTopic = orderTopic + "EMSX_DIR_BROKER_FLAG,"
orderTopic = orderTopic + "EMSX_EXCHANGE,"
orderTopic = orderTopic + "EMSX_EXCHANGE_DESTINATION,"
orderTopic = orderTopic + "EMSX_EXEC_INSTRUCTION,"
orderTopic = orderTopic + "EMSX_FILL_ID,"
orderTopic = orderTopic + "EMSX_FILLED,"
orderTopic = orderTopic + "EMSX_GPI,"
orderTopic = orderTopic + "EMSX_GTD_DATE,"
orderTopic = orderTopic + "EMSX_HAND_INSTRUCTION,"
orderTopic = orderTopic + "EMSX_IDLE_AMOUNT,"
orderTopic = orderTopic + "EMSX_INVESTOR_ID,"
orderTopic = orderTopic + "EMSX_ISIN,"
orderTopic = orderTopic + "EMSX_LIMIT_PRICE,"
orderTopic = orderTopic + "EMSX_MIFID_II_INSTRUCTION,"
orderTopic = orderTopic + "EMSX_MOD_PEND_STATUS,"
orderTopic = orderTopic + "EMSX_NOTES,"
orderTopic = orderTopic + "EMSX_NSE_AVG_PRICE,"
orderTopic = orderTopic + "EMSX_NSE_FILLED,"
orderTopic = orderTopic + "EMSX_ORD_REF_ID,"
orderTopic = orderTopic + "EMSX_ORDER_AS_OF_DATE,"
orderTopic = orderTopic + "EMSX_ORDER_AS_OF_TIME_MICROSEC,"
orderTopic = orderTopic + "EMSX_ORDER_TYPE,"
orderTopic = orderTopic + "EMSX_ORIGINATE_TRADER,"
orderTopic = orderTopic + "EMSX_ORIGINATE_TRADER_FIRM,"
orderTopic = orderTopic + "EMSX_PERCENT_REMAIN,"
orderTopic = orderTopic + "EMSX_PM_UUID,"
orderTopic = orderTopic + "EMSX_PORT_MGR,"
orderTopic = orderTopic + "EMSX_PORT_NAME,"
orderTopic = orderTopic + "EMSX_PORT_NUM,"
orderTopic = orderTopic + "EMSX_POSITION,"
orderTopic = orderTopic + "EMSX_PRINCIPAL,"
orderTopic = orderTopic + "EMSX_PRODUCT,"
orderTopic = orderTopic + "EMSX_QUEUED_DATE,"
orderTopic = orderTopic + "EMSX_QUEUED_TIME,"
orderTopic = orderTopic + "EMSX_QUEUED_TIME_MICROSEC,"
orderTopic = orderTopic + "EMSX_REASON_CODE,"
orderTopic = orderTopic + "EMSX_REASON_DESC,"
orderTopic = orderTopic + "EMSX_REMAIN_BALANCE,"
orderTopic = orderTopic + "EMSX_ROUTE_ID,"
orderTopic = orderTopic + "EMSX_ROUTE_PRICE,"
orderTopic = orderTopic + "EMSX_SEC_NAME,"
orderTopic = orderTopic + "EMSX_SEDOL,"
orderTopic = orderTopic + "EMSX_SEQUENCE,"
orderTopic = orderTopic + "EMSX_SETTLE_AMOUNT,"
orderTopic = orderTopic + "EMSX_SETTLE_DATE,"
orderTopic = orderTopic + "EMSX_SI,"
orderTopic = orderTopic + "EMSX_SIDE,"
orderTopic = orderTopic + "EMSX_START_AMOUNT,"
orderTopic = orderTopic + "EMSX_STATUS,"
orderTopic = orderTopic + "EMSX_STEP_OUT_BROKER,"
orderTopic = orderTopic + "EMSX_STOP_PRICE,"
orderTopic = orderTopic + "EMSX_STRATEGY_END_TIME,"
orderTopic = orderTopic + "EMSX_STRATEGY_PART_RATE1,"
orderTopic = orderTopic + "EMSX_STRATEGY_PART_RATE2,"
orderTopic = orderTopic + "EMSX_STRATEGY_START_TIME,"
orderTopic = orderTopic + "EMSX_STRATEGY_STYLE,"
orderTopic = orderTopic + "EMSX_STRATEGY_TYPE,"
orderTopic = orderTopic + "EMSX_TICKER,"
orderTopic = orderTopic + "EMSX_TIF,"
orderTopic = orderTopic + "EMSX_TIME_STAMP,"
orderTopic = orderTopic + "EMSX_TIME_STAMP_MICROSEC,"
orderTopic = orderTopic + "EMSX_TRAD_UUID,"
orderTopic = orderTopic + "EMSX_TRADE_DESK,"
orderTopic = orderTopic + "EMSX_TRADER,"
orderTopic = orderTopic + "EMSX_TRADER_NOTES,"
orderTopic = orderTopic + "EMSX_TS_ORDNUM,"
orderTopic = orderTopic + "EMSX_TYPE,"
orderTopic = orderTopic + "EMSX_UNDERLYING_TICKER,"
orderTopic = orderTopic + "EMSX_USER_COMM_AMOUNT,"
orderTopic = orderTopic + "EMSX_USER_COMM_RATE,"
orderTopic = orderTopic + "EMSX_USER_FEES,"
orderTopic = orderTopic + "EMSX_USER_NET_MONEY,"
orderTopic = orderTopic + "EMSX_WORK_PRICE,"
orderTopic = orderTopic + "EMSX_WORKING,"
orderTopic = orderTopic + "EMSX_YELLOW_KEY"
print("Subscription: " + orderTopic)
subscriptions = blpapi.SubscriptionList()
subscriptions.add(topic=orderTopic,correlationId=orderSubscriptionID)
session.subscribe(subscriptions)
def createRouteSubscription(self, session):
print ("Create Route subscription")
#routeTopic = d_emsx + "/route;team=EMSX_API?fields="
routeTopic = d_emsx + "/route?fields="
routeTopic = routeTopic + "API_SEQ_NUM,"
routeTopic = routeTopic + "EMSX_AMOUNT,"
routeTopic = routeTopic + "EMSX_APA_MIC,"
routeTopic = routeTopic + "EMSX_AVG_PRICE,"
routeTopic = routeTopic + "EMSX_BROKER,"
routeTopic = routeTopic + "EMSX_BROKER_COMM,"
routeTopic = routeTopic + "EMSX_BROKER_LEI,"
routeTopic = routeTopic + "EMSX_BROKER_SI,"
routeTopic = routeTopic + "EMSX_BSE_AVG_PRICE,"
routeTopic = routeTopic + "EMSX_BSE_FILLED,"
routeTopic = routeTopic + "EMSX_BROKER_STATUS,"
routeTopic = routeTopic + "EMSX_BUYSIDE_LEI,"
routeTopic = routeTopic + "EMSX_CLEARING_ACCOUNT,"
routeTopic = routeTopic + "EMSX_CLEARING_FIRM,"
routeTopic = routeTopic + "EMSX_CLIENT_IDENTIFICATION,"
routeTopic = routeTopic + "EMSX_COMM_DIFF_FLAG,"
routeTopic = routeTopic + "EMSX_COMM_RATE,"
routeTopic = routeTopic + "EMSX_CURRENCY_PAIR,"
routeTopic = routeTopic + "EMSX_CUSTOM_ACCOUNT,"
routeTopic = routeTopic + "EMSX_DAY_AVG_PRICE,"
routeTopic = routeTopic + "EMSX_DAY_FILL,"
routeTopic = routeTopic + "EMSX_EXCHANGE_DESTINATION,"
routeTopic = routeTopic + "EMSX_EXEC_INSTRUCTION,"
routeTopic = routeTopic + "EMSX_EXECUTE_BROKER,"
routeTopic = routeTopic + "EMSX_FILL_ID,"
routeTopic = routeTopic + "EMSX_FILLED,"
routeTopic = routeTopic + "EMSX_GPI,"
routeTopic = routeTopic + "EMSX_GTD_DATE,"
routeTopic = routeTopic + "EMSX_HAND_INSTRUCTION,"
routeTopic = routeTopic + "EMSX_IS_MANUAL_ROUTE,"
routeTopic = routeTopic + "EMSX_LAST_CAPACITY,"
routeTopic = routeTopic + "EMSX_LAST_FILL_DATE,"
routeTopic = routeTopic + "EMSX_LAST_FILL_TIME,"
routeTopic = routeTopic + "EMSX_LAST_FILL_TIME_MICROSEC,"
routeTopic = routeTopic + "EMSX_LAST_MARKET,"
routeTopic = routeTopic + "EMSX_LAST_PRICE,"
routeTopic = routeTopic + "EMSX_LAST_SHARES,"
routeTopic = routeTopic + "EMSX_LEG_FILL_DATE_ADDED,"
routeTopic = routeTopic + "EMSX_LEG_FILL_PRICE,"
routeTopic = routeTopic + "EMSX_LEG_FILL_SEQ_NO,"
routeTopic = routeTopic + "EMSX_LEG_FILL_SHARES,"
routeTopic = routeTopic + "EMSX_LEG_FILL_SIDE,"
routeTopic = routeTopic + "EMSX_LEG_FILL_TICKER,"
routeTopic = routeTopic + "EMSX_LEG_FILL_TIME_ADDED,"
routeTopic = routeTopic + "EMSX_LIMIT_PRICE,"
routeTopic = routeTopic + "EMSX_MIFID_II_INSTRUCTION,"
routeTopic = routeTopic + "EMSX_MISC_FEES,"
routeTopic = routeTopic + "EMSX_ML_ID,"
routeTopic = routeTopic + "EMSX_ML_LEG_QUANTITY,"
routeTopic = routeTopic + "EMSX_ML_NUM_LEGS,"
routeTopic = routeTopic + "EMSX_ML_PERCENT_FILLED,"
routeTopic = routeTopic + "EMSX_ML_RATIO,"
routeTopic = routeTopic + "EMSX_ML_REMAIN_BALANCE,"
routeTopic = routeTopic + "EMSX_ML_STRATEGY,"
routeTopic = routeTopic + "EMSX_ML_TOTAL_QUANTITY,"
routeTopic = routeTopic + "EMSX_NOTES,"
routeTopic = routeTopic + "EMSX_NSE_AVG_PRICE,"
routeTopic = routeTopic + "EMSX_NSE_FILLED,"
routeTopic = routeTopic + "EMSX_ORDER_TYPE,"
routeTopic = routeTopic + "EMSX_OTC_FLAG,"
routeTopic = routeTopic + "EMSX_P_A,"
routeTopic = routeTopic + "EMSX_PERCENT_REMAIN,"
routeTopic = routeTopic + "EMSX_PRINCIPAL,"
routeTopic = routeTopic + "EMSX_QUEUED_DATE,"
routeTopic = routeTopic + "EMSX_QUEUED_TIME,"
routeTopic = routeTopic + "EMSX_QUEUED_TIME_MICROSEC,"
routeTopic = routeTopic + "EMSX_REASON_CODE,"
routeTopic = routeTopic + "EMSX_REASON_DESC,"
routeTopic = routeTopic + "EMSX_REMAIN_BALANCE,"
routeTopic = routeTopic + "EMSX_ROUTE_AS_OF_DATE,"
routeTopic = routeTopic + "EMSX_ROUTE_AS_OF_TIME_MICROSEC,"
routeTopic = routeTopic + "EMSX_ROUTE_CREATE_DATE,"
routeTopic = routeTopic + "EMSX_ROUTE_CREATE_TIME,"
routeTopic = routeTopic + "EMSX_ROUTE_CREATE_TIME_MICROSEC,"
routeTopic = routeTopic + "EMSX_ROUTE_ID,"
routeTopic = routeTopic + "EMSX_ROUTE_LAST_UPDATE_TIME,"
routeTopic = routeTopic + "EMSX_ROUTE_LAST_UPDATE_TIME_MICROSEC,"
routeTopic = routeTopic + "EMSX_ROUTE_PRICE,"
routeTopic = routeTopic + "EMSX_ROUTE_REF_ID,"
routeTopic = routeTopic + "EMSX_SEQUENCE,"
routeTopic = routeTopic + "EMSX_SETTLE_AMOUNT,"
routeTopic = routeTopic + "EMSX_SETTLE_DATE,"
routeTopic = routeTopic + "EMSX_STATUS,"
routeTopic = routeTopic + "EMSX_STOP_PRICE,"
routeTopic = routeTopic + "EMSX_STRATEGY_END_TIME,"
routeTopic = routeTopic + "EMSX_STRATEGY_PART_RATE1,"
routeTopic = routeTopic + "EMSX_STRATEGY_PART_RATE2,"
routeTopic = routeTopic + "EMSX_STRATEGY_START_TIME,"
routeTopic = routeTopic + "EMSX_STRATEGY_STYLE,"
routeTopic = routeTopic + "EMSX_STRATEGY_TYPE,"
routeTopic = routeTopic + "EMSX_TIF,"
routeTopic = routeTopic + "EMSX_TIME_STAMP,"
routeTopic = routeTopic + "EMSX_TIME_STAMP_MICROSEC,"
routeTopic = routeTopic + "EMSX_TRADE_REPORTING_INDICATOR,"
routeTopic = routeTopic + "EMSX_TRANSACTION_REPORTING_MIC,"
routeTopic = routeTopic + "EMSX_TYPE,"
routeTopic = routeTopic + "EMSX_URGENCY_LEVEL,"
routeTopic = routeTopic + "EMSX_USER_COMM_AMOUNT,"
routeTopic = routeTopic + "EMSX_USER_COMM_RATE,"
routeTopic = routeTopic + "EMSX_USER_FEES,"
routeTopic = routeTopic + "EMSX_USER_NET_MONEY,"
routeTopic = routeTopic + "EMSX_WAIVER_FLAG,"
routeTopic = routeTopic + "EMSX_WORKING"
print("Subscription: " + routeTopic)
subscriptions = blpapi.SubscriptionList()
subscriptions.add(topic=routeTopic,correlationId=routeSubscriptionID)
session.subscribe(subscriptions)
def main():
sessionOptions = blpapi.SessionOptions()
sessionOptions.setServerHost(d_host)
sessionOptions.setServerPort(d_port)