|
5 | 5 |
|
6 | 6 |
|
7 | 7 | class MyEventHandler(EventHandler): |
8 | | - def __init__(self): |
| 8 | + def __init__(self, fixSubscriptionCorrelationId): |
9 | 9 | super().__init__() |
| 10 | + self.fixSubscriptionCorrelationId = fixSubscriptionCorrelationId |
| 11 | + self.sentRequest = False |
| 12 | + self.firstProcessEventTime = None |
10 | 13 |
|
11 | 14 | def processEvent(self, event: Event, session: Session) -> None: |
12 | | - if event.getType() == Event.Type_AUTHORIZATION_STATUS: |
13 | | - print(f"Received an event of type AUTHORIZATION_STATUS:\n{event.toPrettyString(2, 2)}") |
14 | | - message = event.getMessageList()[0] |
15 | | - if message.getType() == Message.Type_AUTHORIZATION_SUCCESS: |
16 | | - request = Request(Request.Operation_FIX, "coinbase", "", "any") |
17 | | - request.appendFixParam( |
18 | | - [ |
19 | | - (35, "D"), |
20 | | - (11, "6d4eb0fb-2229-469f-873e-557dd78ac11e"), |
21 | | - (55, "BTC-USD"), |
22 | | - (54, "1"), |
23 | | - (44, "20000"), |
24 | | - (38, "0.001"), |
25 | | - (40, "2"), |
26 | | - (59, "1"), |
27 | | - ] |
28 | | - ) |
29 | | - session.sendRequestByFix(request) |
30 | | - elif event.getType() == Event.Type_FIX: |
31 | | - print(f"Received an event of type FIX:\n{event.toPrettyString(2, 2)}") |
| 15 | + if event.getType() != Event.Type_HEARTBEAT: |
| 16 | + print(f"Received an event:\n{event.toPrettyString(2, 2)}") |
| 17 | + if self.firstProcessEventTime is None: |
| 18 | + self.firstProcessEventTime = time.time() |
| 19 | + elapsedSeconds = 0 |
| 20 | + else: |
| 21 | + elapsedSeconds = time.time() - self.firstProcessEventTime |
| 22 | + |
| 23 | + if elapsedSeconds >= 1 and not self.sentRequest: |
| 24 | + self.sentRequest = True |
| 25 | + request = Request(Request.Operation_FIX, "binance") |
| 26 | + request.appendFixParam( |
| 27 | + [ |
| 28 | + (35, "D"), |
| 29 | + (11, request.generateNextClientOrderId()), |
| 30 | + (55, "BTCUSDT"), |
| 31 | + (54, "1"), |
| 32 | + (44, "100000"), |
| 33 | + (38, "0.0001"), |
| 34 | + (40, "2"), |
| 35 | + (59, "1"), |
| 36 | + ] |
| 37 | + ) |
| 38 | + session.sendRequestByFix(self.fixSubscriptionCorrelationId, request) |
32 | 39 |
|
33 | 40 |
|
34 | 41 | if __name__ == "__main__": |
35 | | - if not os.environ.get("COINBASE_API_KEY"): |
36 | | - print("Please set environment variable COINBASE_API_KEY", file=sys.stderr) |
37 | | - sys.exit(1) |
38 | | - if not os.environ.get("COINBASE_API_SECRET"): |
39 | | - print("Please set environment variable COINBASE_API_SECRET", file=sys.stderr) |
| 42 | + if not os.environ.get("BINANCE_FIX_API_KEY"): |
| 43 | + print("Please set environment variable BINANCE_FIX_API_KEY", file=sys.stderr) |
40 | 44 | sys.exit(1) |
41 | | - if not os.environ.get("COINBASE_API_PASSPHRASE"): |
42 | | - print("Please set environment variable COINBASE_API_PASSPHRASE", file=sys.stderr) |
| 45 | + if not os.environ.get("BINANCE_FIX_API_PRIVATE_KEY_PATH"): |
| 46 | + print("Please set environment variable BINANCE_FIX_API_PRIVATE_KEY_PATH", file=sys.stderr) |
43 | 47 | sys.exit(1) |
44 | | - eventHandler = MyEventHandler() |
| 48 | + fixSubscriptionCorrelationId = "any" |
| 49 | + eventHandler = MyEventHandler(fixSubscriptionCorrelationId) |
45 | 50 | option = SessionOptions() |
46 | 51 | config = SessionConfigs() |
47 | 52 | session = Session(option, config, eventHandler) |
48 | | - subscription = Subscription("coinbase", "", "FIX", "", "any") |
| 53 | + subscription = Subscription("binance", "", "FIX", "", fixSubscriptionCorrelationId) |
| 54 | + session.subscribe(subscription) |
| 55 | + subscription = Subscription("", "", "HEARTBEAT", "HEARTBEAT_INTERVAL_MILLISECONDS=1000") |
49 | 56 | session.subscribe(subscription) |
50 | | - time.sleep(10) |
| 57 | + time.sleep(100) |
51 | 58 | session.stop() |
52 | 59 | print("Bye") |
0 commit comments