cei-bot v1.0.2
cei-bot 💸
Bot para ler dados do Canal Eletrônico do Investidor, a principal funcionalidade desse projeto é obter dados do CEI - Canal Eletrônico do Investidor e tranformá-lo em informações que possam ser consumidos por outras aplicações.
- Dependências
- Instalação
- Utilização
- Settings
- 1. Obtenção dos Rendimentos
- 2. Obtenção carteira de ativos
- 3. Negociação de ativos
- 4. Tesouro Direto
- Tecnologias
- Features
- Contribuidores
- Licença
Dependências
O cei-bot utiliza a seguinte dependência:
- puppeteer API de alto nível para controlar o Chrome ou Chromium
Instalação
Basta instalar utilizando o NPM:
npm i cei-bot
ou
yarn add cei-botUtilização
- Crie uma instância do
CeiServicepassando com os seguintes parametros:
login: Usuário de entrada no CEI que pode ser o CPF ou CNPJ;password: Senha de acesso ao CEI;settings: Configurações para controle da interação com a página do CEI;
a - Typescript
import { CeiService } from 'cei-bot';
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
(async () => {
const data = await ceiService.getIncomeAsync();
console.log(JSON.stringify(data, null, 2));
})();b - Javascript
const CeiService = require('cei-bot').CeiService;
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
ceiService.getIncomeAsync().then(data => {
console.log(JSON.stringify(data, null, 2));
});c - Settings
import { CeiService } from 'cei-bot';
const ceiService = new CeiService(
{
login: 'username',
password: 'password',
},
{
headless: false,
delay: 200,
timeout: 400,
},
);
(async () => {
const data = await ceiService.getIncomeAsync();
console.log(JSON.stringify(data, null, 2));
})();Settings
| Propriedade | Tipo | Default | Descrição |
|---|---|---|---|
| headless | Boolean | true | Se true, o navegador interno do Puppeteer será executado pode ser observado as acões. |
| delay | Number | 300 | Tempo, em ms, usado para adicionar valores nos inputs para evitar problemas de digitação muito rápida. |
| timeout | Number | 300 | Tempo, em ms, de resposta de uma ação, para evitar obtenção de informações nulas ou vazias espera um tempo para a respsosta do navegador. |
1. Obtenção dos Rendimentos
Serviço para obtenção dos rendimentos.
a - Javascript
const CeiService = require('cei-bot').CeiService;
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
ceiService.getIncomeAsync().then(data => {
console.log(JSON.stringify(data, null, 2));
});b - TypeScript
import { CeiService } from 'cei-bot';
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
const data = await ceiService.getIncomeAsync();
console.log(JSON.stringify(data, null, 2));1.1. Get Income
Retorna os dados os rendiementos do mês.
const resuls = await ceiService.getIncomeAsync();Resultado:
[
{
brokerName: '100 - Corretora 100',
brokerCode: '100',
status: 'S',
errors: [],
incomeList: [
{
active: 'Ação 01',
specification: 'ON NM',
code: 'ACAO01',
paymentDate: '01/01/2020',
eventType: 'DIVIDENDO',
quantity: 100,
quotationFactor: 1,
grossValue: 50.06,
netValue: 50,
},
{
active: 'Ação 02',
specification: 'ON NM',
code: 'ACAO02',
paymentDate: '05/01/2020',
eventType: 'DIVIDENDO',
quantity: 118,
quotationFactor: 1,
grossValue: 80.01,
netValue: 80,
},
{
active: 'Ação 03',
specification: 'ON NM',
code: 'ACAO03',
paymentDate: '10/01/2020',
eventType: 'JUROS SOBRE CAPITAL PRÓPRIO',
quantity: 118,
quotationFactor: 1,
grossValue: 25.04,
netValue: 21.13,
},
{
active: 'Ação 04',
specification: 'CI',
code: 'ACAO04',
paymentDate: '15/01/2020',
eventType: 'RENDIMENTO',
quantity: 29,
quotationFactor: 1,
grossValue: 34.87,
netValue: 34.06,
},
],
},
{
brokerName: '200 - Corretora 200',
brokerCode: '200',
status: 'N',
errors: [],
incomeList: [],
},
{
brokerName: '300 - Corretora 300',
brokerCode: '300',
status: 'N',
errors: [],
incomeList: [],
},
];brokerName = Nome da corretora;
brokerCode = Código da corretora;
status = Situação do retorno que pode ser S para Sucesso, E para situação de erro e N para situação de resposta não encontrada. Quando S representa que obteve dados do CEI se N significa não existem informações para a corretora;
errors = Lista de erros em formato de String;
- incomeList = Lista com todos os rendimentos encontrado no CEI;
Income List
| Propriedade | Tipo | Descrição |
|---|---|---|
| active | String | Nome completo da ação. |
| specification | String | Especificação da ação se é Ações ordinárias (ON) ou preferenciais (PN). |
| code | String | Código de negociação do ativo. |
| paymentDate | String | Data de pagamento ou previsão de pagamento do ativo. |
| eventType | String | Tipo de evento do ativo que pode ser: Dividendo, Juros sobre capital, Rendimento, etc. |
| quantity | Number | Quantidade do ativo na carteira. |
| quotationFactor | Number | Fator da cotação. |
| grossValue | Number | Valor Bruto (R$) do rendimento do ativo. |
| netValue | Number | Valor líquido (R$) do rendimento do ativo. |
2. Obtenção carteira de ativos
Serviço para obtenção dos ativos disponíveis no CEI.
a - Javascript
const CeiService = require('cei-bot').CeiService;
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
ceiService.getPortfolioAsync().then(data => {
console.log(JSON.stringify(data, null, 2));
});b - TypeScript
import { CeiService } from 'cei-bot';
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
const data = await ceiService.getPortfolioAsync();
console.log(JSON.stringify(data, null, 2));2.1. Get Portfolio
Retorna os dados da carteira de ativos do mês no CEI.
const resuls = await ceiService.getPortfolioAsync();Resultado:
[
{
status: 'S',
errors: [],
brokerName: "100 - Corretora 100'",
brokerCode: '100',
portfolioList: [
{
company: 'Empresa 01',
specification: 'CI',
code: 'ABC01',
codISIN: 'BRBABC01',
price: '110,10',
quantity: '60',
quotationFactor: 1,
grossValue: '2.100,10',
},
{
company: 'Empresa 02',
specification: 'ON NM',
code: 'CCC02',
codISIN: 'BRECCC02',
price: '40,60',
quantity: '200',
quotationFactor: 1,
grossValue: '5.000,70',
},
{
company: 'Empresa 03',
specification: 'ON NM',
code: 'CCC03',
codISIN: 'BRECCC03',
price: '60,60',
quantity: '700',
quotationFactor: 1,
grossValue: '1.000,10',
},
{
company: 'Empresa 04',
specification: 'ON NM',
code: 'CCC04',
codISIN: 'BRECCC04',
price: '15,60',
quantity: '600',
quotationFactor: 1,
grossValue: '10.000,70',
},
],
},
{
status: 'N',
errors: [],
brokerName: 'Empresa 02',
brokerCode: '200',
portfolioList: [],
},
{
status: 'N',
errors: [],
brokerName: 'Empresa 03',
brokerCode: '300',
portfolioList: [],
},
];brokerName = Nome da corretora;
brokerCode = Código da corretora;
status = Situação do retorno que pode ser S para Sucesso, E para situação de erro e N para situação de resposta não encontrada. Quando S representa que obteve dados do CEI se N significa não existem informações para a corretora;
errors = Lista de erros em formato de String;
- portfolioList = Lista com todos os ativos da sua carteira encontrado no CEI;
Portfolio List
| Propriedade | Tipo | Descrição |
|---|---|---|
| company | String | Nome da empresa . |
| specification | String | Especificação da ação se é Ações ordinárias (ON) ou preferenciais (PN). |
| code | String | Código de negociação do ativo. |
| codISIN | String | International Securities Identification Number. |
| price | Number | Preço do ativo. |
| quantity | Number | Quantidade do ativo na carteira. |
| quotationFactor | Number | Fator da cotação. |
| grossValue | Number | Valor Bruto (R$) do rendimento do ativo. |
3. Negociação de ativos
Serviço para a obtenção das negociações de ativos.
a - Javascript
const CeiService = require('cei-bot').CeiService;
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
ceiService.getActiveTradesAsync().then(data => {
console.log(JSON.stringify(data, null, 2));
});b - TypeScript
import { CeiService } from 'cei-bot';
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
const data = await ceiService.getActiveTradesAsync();
console.log(JSON.stringify(data, null, 2));3.1. Get Active Trades
Retorna os dados das negociações de ativos no período disponivel.
const resuls = await ceiService.getActiveTradesAsync();Resultado:
[
{
"status": "S",
"errors": [],
"brokerName": "01 - Corretora 01",
"brokerCode": "01",
"startDate": "01/01/2020",
"endDate" : "01/01/2021",
"tradedAssetList": [
{
"businessDate": "01/01/2021",
"buyOrSell": "C",
"marketplace": "Mercado a Vista",
"termMaturity": "",
"code": "COD001",
"specification": "FII COD001",
"quantity": 10,
"price": 100.10,
"totalAmount": 1001,
"quotationFactor": 1
},
{
"businessDate": "01/01/2021",
"buyOrSell": "C",
"marketplace": "Mercado a Vista",
"termMaturity": "",
"code": "COD002",
"specification": "ON",
"quantity": 5,
"price": 0.94,
"totalAmount": 4.7,
"quotationFactor": 1
},
{
"businessDate": "01/01/2020",
"buyOrSell": "C",
"marketplace": "Merc. Fracionário",
"termMaturity": "",
"code": "COD003",
"specification": "ON",
"quantity": 9,
"price": 0.97,
"totalAmount": 8.73,
"quotationFactor": 1
}
],
"negociatedSummaryList": [
{
"code": "COD001",
"period": "01/01/2020 a 01/01/2021",
"purchaseAmount": 50,
"saleAmount": 0,
"averagePurchasePrice": 102.8,
"averageSalePrice": 0,
"liquidity": 0,
"position": "-"
},
{
"code": "COD002",
"period": "01/01/2020 a 01/01/2021",
"purchaseAmount": 100,
"saleAmount": 0,
"averagePurchasePrice": 42.381,
"averageSalePrice": 0,
"liquidity": 0,
"position": "-"
},
{
"code": "COD003",
"period": "01/01/2020 a 01/01/2021",
"purchaseAmount": 28,
"saleAmount": 0,
"averagePurchasePrice": 26.831,
"averageSalePrice": 0,
"liquidity": 0,
"position": "-"
}
]
},
{
"status": "S",
"errors": [],
"brokerName": "02 - Corretora 02",
"brokerCode": "02",
"tradedAssetList": [],
"negociatedSummaryList": []
},
{
"status": "S",
"errors": [],
"brokerName": "03 - Corretora 03",
"brokerCode": "03",
"tradedAssetList": [],
"negociatedSummaryList": []
}
]brokerName = Nome da corretora;
brokerCode = Código da corretora;
startDate = Período inicial disponível;
endDate = Período final disponível;
status = Situação do retorno que pode ser S para Sucesso, E para situação de erro e N para situação de resposta não encontrada. Quando S representa que obteve dados do CEI se N significa não existem informações para a corretora;
errors = Lista de erros em formato de String;
- tradedAssetList = Lista de todos ativos negociados;
- negociatedSummaryList = Lista do resumo dos negócios no período;
TradedAsset List
| Propriedade | Tipo | Descrição |
|---|---|---|
| businessDate | String | Data de negócio. |
| buyOrSell | String | Compra/Venda. |
| marketplace | String | Mercado, Mercado a Vista, Merc. Fracionário, etc. |
| termMaturity | String | Prazo/Vencimento. |
| code | String | Código negociação do ativo. |
| specification | String | Especificação do ativo. |
| quantity | Number | Quantidade de ativos. |
| price | Number | Preço unitário (R$) do ativo. |
| totalAmount | Number | Valor total da quantidade vezes preço unitário. |
| quotationFactor | Number | Fator de cotação. |
3.2. Negociated Summary List
| Propriedade | Tipo | Descrição |
|---|---|---|
| code | String | Código do ativo. |
| period | String | período da negociação dos ativos. |
| purchaseAmount | Number | Quantidade de compra. |
| saleAmount | Number | Quantidade de venda. |
| averagePurchasePrice | Number | Preço médio de compra. |
| averageSalePrice | Number | Preço médio de venda. |
| liquidity | Number | Quantidade liquída. |
| position | Number | Posição. |
4. Tesouro Direto
Serviço para obtenção dos investimentos em tesouro direto.
a - Javascript
const CeiService = require('cei-bot').CeiService;
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
ceiService.getTreasureAsync().then(data => {
console.log(JSON.stringify(data, null, 2));
});b - TypeScript
import { CeiService } from 'cei-bot';
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
const data = await ceiService.getTreasureAsync();
console.log(JSON.stringify(data, null, 2));4.1. Get Treasure
Retorna os dados dos investimentos em tesouro direto.
const resuls = await ceiService.getTreasureAsync();Resultado:
[
{
"status": "S",
"errors": [],
"brokerName": "100 - Corretora 01",
"brokerCode": "100",
"treasureList": [
{
"Title": "Tesouro IPCA+ 2055",
"maturity": "15/05/2055",
"Extrato Analítico": "15.330,03",
"invested": "19.204,41",
"currentGross": "18.262,37",
"currentNet": "10,80",
"total": "0,00",
"blocked": ""
},
{
"Title": "Tesouro IPCA+ 2035",
"maturity": "15/05/2035",
"Extrato Analítico": "3.997,44",
"invested": "4.133,27",
"currentGross": "4.096,96",
"currentNet": "3,14",
"total": "0,00",
"blocked": ""
}
]
},
{
"status": "N",
"errors": [],
"brokerName": "200 - Corretora 02",
"brokerCode": "200",
"treasureList": []
},
{
"status": "N",
"errors": [],
"brokerName": "300 - Corretora 03",
"brokerCode": "300",
"treasureList": []
},
]brokerName = Nome da corretora;
brokerCode = Código da corretora;
status = Situação do retorno que pode ser S para Sucesso, E para situação de erro e N para situação de resposta não encontrada. Quando S representa que obteve dados do CEI se N significa não existem informações para a corretora;
errors = Lista de erros em formato de String;
- treasureList = Lista com todos os investimentos em tesouro direto;
Treasure List
| Propriedade | Tipo | Descrição |
|---|---|---|
| Title | String | Título do tesouro direto. |
| maturity | String | Data de vencimento. |
| invested | Number | Valor investido. |
| currentGross | Number | Bruto total. |
| currentNet | Number | Líquido atual. |
| total | Number | Quatidade total comprado. |
| blocked | Number | Quantidade bloqueada. |
🛠 Tecnologias
As seguintes ferramentas foram usadas na construção do projeto:
Features
- Rendiemntos
- Carteira de ações
- Negociação de ativos
- Tesouro direto
Contribuidores
Licença
MIT
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago