Rev 796 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 796 | Rev 797 | ||
|---|---|---|---|
| Line 16... | Line 16... | ||
| 16 | }
|
16 | }
|
| 17 | 17 | ||
| 18 | public void iniciar() { |
18 | public void iniciar() { |
| 19 | 19 | ||
| 20 | System.out.println("Conectando ao TWS..."); |
20 | System.out.println("Conectando ao TWS..."); |
| 21 | client.eConnect("127.0.0.1", 7496, 2); // 7496 = live, 7497 = paper |
- | |
| 22 | 21 | ||
| - | 22 | // ➜ MESMOS PARAMETROS QUE DERAM isConnected = true
|
|
| - | 23 | client.eConnect("127.0.0.1", 7497, 2); |
|
| - | 24 | ||
| - | 25 | // espera um pouco pra conexão estabilizar
|
|
| - | 26 | try { Thread.sleep(2000); } catch (Exception ignored) {} |
|
| - | 27 | ||
| - | 28 | System.out.println("isConnected = " + client.isConnected()); |
|
| 23 | if (!client.isConnected()) { |
29 | if (!client.isConnected()) { |
| 24 | System.err.println("Falha ao conectar!"); |
- | |
| - | 30 | System.err.println("Ainda não conectado ao TWS. Saindo."); |
|
| 25 | return; |
31 | return; |
| 26 | }
|
- | |
| - | 32 | }
|
|
| 27 | 33 | ||
| 28 | // tipo de market data: 1 = realtime (se assinado), 3 = delayed
|
34 | // tipo de market data: 1 = realtime (se assinado), 3 = delayed
|
| 29 | client.reqMarketDataType(1); |
35 | client.reqMarketDataType(1); |
| 30 | 36 | ||
| 31 | // Cria o EReader que vai processar as mensagens da IBKR
|
- | |
| - | 37 | // Cria o EReader somente DEPOIS da conexão estar ok
|
|
| 32 | reader = new EReader(client, signal); |
38 | reader = new EReader(client, signal); |
| 33 | reader.start(); |
39 | reader.start(); |
| 34 | 40 | ||
| 35 | // Thread que fica processando as mensagens
|
41 | // Thread que fica processando as mensagens
|
| 36 | new Thread(() -> { |
42 | new Thread(() -> { |
| Line 38... | Line 44... | ||
| 38 | try { |
44 | try { |
| 39 | signal.waitForSignal(); |
45 | signal.waitForSignal(); |
| 40 | reader.processMsgs(); |
46 | reader.processMsgs(); |
| 41 | } catch (Exception e) { |
47 | } catch (Exception e) { |
| 42 | e.printStackTrace(); |
48 | e.printStackTrace(); |
| - | 49 | break; |
|
| 43 | }
|
50 | }
|
| 44 | }
|
51 | }
|
| 45 | }, "IBKR-Reader-Thread").start(); |
52 | }, "IBKR-Reader-Thread").start(); |
| 46 | 53 | ||
| 47 | try { Thread.sleep(1000); } catch (Exception ignored) {} |
- | |
| 48 | - | ||
| 49 | // --------------------------------------
|
- | |
| 50 | // CONTRATO DO MINI ÍNDICE (ajuste se precisar)
|
- | |
| 51 | // --------------------------------------
|
- | |
| - | 54 | // --------- CONTRATO PARA TESTE: AAPL (mais garantido) ----------
|
|
| 52 | Contract c = new Contract(); |
55 | Contract c = new Contract(); |
| 53 | c.symbol("PETR4"); // símbolo na IB |
- | |
| 54 | c.secType("FUT"); |
- | |
| 55 | c.exchange("B3"); // teste "BMF" ou "BVMF" se der erro 200 |
- | |
| 56 | c.currency("BRL"); |
- | |
| 57 | c.lastTradeDateOrContractMonth("202512"); // Z25 = Dez/2025 |
- | |
| 58 | // --------------------------------------
|
- | |
| - | 56 | c.symbol("AAPL"); |
|
| - | 57 | c.secType("STK"); |
|
| - | 58 | c.currency("USD"); |
|
| - | 59 | c.exchange("SMART"); |
|
| - | 60 | // c.primaryExch("NASDAQ");
|
|
| - | 61 | ||
| - | 62 | // ---------------------------------------------------------------
|
|
| 59 | 63 | ||
| 60 | System.out.println("Solicitando market data tick-by-tick..."); |
64 | System.out.println("Solicitando market data tick-by-tick..."); |
| 61 | client.reqTickByTickData(reqId, c, "Last", 0, true); |
65 | client.reqTickByTickData(reqId, c, "Last", 0, true); |
| 62 | }
|
66 | }
|
| 63 | 67 | ||