mtcli-renko 1.0.0.dev3__tar.gz → 1.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mtcli_renko-1.1.0/LICENSE +21 -0
- mtcli_renko-1.1.0/PKG-INFO +530 -0
- mtcli_renko-1.1.0/README.md +501 -0
- mtcli_renko-1.1.0/mtcli_renko/commands/renko.py +125 -0
- mtcli_renko-1.1.0/mtcli_renko/conf.py +332 -0
- mtcli_renko-1.1.0/mtcli_renko/controllers/renko_controller.py +156 -0
- mtcli_renko-1.1.0/mtcli_renko/models/renko_model.py +275 -0
- mtcli_renko-1.1.0/mtcli_renko/plugin.py +66 -0
- mtcli_renko-1.1.0/mtcli_renko/utils/renko_stats.py +97 -0
- mtcli_renko-1.1.0/mtcli_renko/views/renko_view.py +200 -0
- mtcli_renko-1.1.0/pyproject.toml +80 -0
- mtcli_renko-1.0.0.dev3/LICENSE +0 -674
- mtcli_renko-1.0.0.dev3/PKG-INFO +0 -48
- mtcli_renko-1.0.0.dev3/README.md +0 -28
- mtcli_renko-1.0.0.dev3/mtcli_renko/commands/renko.py +0 -90
- mtcli_renko-1.0.0.dev3/mtcli_renko/conf.py +0 -72
- mtcli_renko-1.0.0.dev3/mtcli_renko/controllers/renko_controller.py +0 -42
- mtcli_renko-1.0.0.dev3/mtcli_renko/domain/timeframe.py +0 -87
- mtcli_renko-1.0.0.dev3/mtcli_renko/models/renko_model.py +0 -160
- mtcli_renko-1.0.0.dev3/mtcli_renko/plugin.py +0 -5
- mtcli_renko-1.0.0.dev3/mtcli_renko/views/renko_view.py +0 -37
- mtcli_renko-1.0.0.dev3/pyproject.toml +0 -58
- {mtcli_renko-1.0.0.dev3 → mtcli_renko-1.1.0}/mtcli_renko/__init__.py +0 -0
- {mtcli_renko-1.0.0.dev3 → mtcli_renko-1.1.0}/mtcli_renko/commands/__init__.py +0 -0
- {mtcli_renko-1.0.0.dev3 → mtcli_renko-1.1.0}/mtcli_renko/controllers/__init__.py +0 -0
- {mtcli_renko-1.0.0.dev3/mtcli_renko/domain → mtcli_renko-1.1.0/mtcli_renko/models}/__init__.py +0 -0
- {mtcli_renko-1.0.0.dev3/mtcli_renko/models → mtcli_renko-1.1.0/mtcli_renko/utils}/__init__.py +0 -0
- {mtcli_renko-1.0.0.dev3 → mtcli_renko-1.1.0}/mtcli_renko/views/__init__.py +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Valmir França
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,530 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mtcli-renko
|
|
3
|
+
Version: 1.1.0
|
|
4
|
+
Summary: Renko plugin institucional para mtcli (MetaTrader 5)
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Keywords: trading,renko,metatrader5,mt5,cli,price-action
|
|
8
|
+
Author: Valmir França
|
|
9
|
+
Author-email: vfranca3@gmail.com
|
|
10
|
+
Requires-Python: >=3.10,<3.14
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Classifier: Topic :: Office/Business :: Financial :: Investment
|
|
20
|
+
Requires-Dist: click (>=8.3.0,<9.0.0)
|
|
21
|
+
Requires-Dist: metatrader5 (>=5.0.5370,<6.0.0)
|
|
22
|
+
Requires-Dist: mtcli (>=3.7.0,<4.0.0)
|
|
23
|
+
Project-URL: Documentation, https://vfranca.github.io/mtcli-renko
|
|
24
|
+
Project-URL: Homepage, https://github.com/vfranca/mtcli-renko
|
|
25
|
+
Project-URL: Issues, https://github.com/vfranca/mtcli-renko/issues
|
|
26
|
+
Project-URL: Repository, https://github.com/vfranca/mtcli-renko
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
|
|
29
|
+
# mtcli-renko
|
|
30
|
+
|
|
31
|
+
Plugin **Renko profissional para o mtcli**.
|
|
32
|
+
|
|
33
|
+
O **mtcli-renko** adiciona ao CLI `mt` a capacidade de gerar **blocos Renko diretamente no terminal**, utilizando dados do **MetaTrader 5** ou de outras fontes configuradas no `mtcli`.
|
|
34
|
+
|
|
35
|
+
O plugin foi projetado para **análise de fluxo e price action**, oferecendo geração de Renko baseada em **ticks ou candles**, múltiplos **estilos de cálculo**, e saída **acessível para ambientes CLI**.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
# Características
|
|
40
|
+
|
|
41
|
+
* geração de **Renko a partir de ticks**
|
|
42
|
+
* geração de **Renko a partir de candles**
|
|
43
|
+
* **modo candle determinístico**
|
|
44
|
+
* **modo tick híbrido** (blocos confirmados + bloco em formação)
|
|
45
|
+
* **reconstrução do caminho do candle (path reconstruction)**
|
|
46
|
+
* **ancoragem opcional na abertura do pregão**
|
|
47
|
+
* ajuste automático de **UTC do servidor da corretora**
|
|
48
|
+
* **margem de segurança na abertura do pregão**
|
|
49
|
+
* saída em **texto puro**, ideal para terminal e leitores de tela
|
|
50
|
+
* arquitetura **MVC modular**
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
# Requisitos
|
|
55
|
+
|
|
56
|
+
* Python **3.10+**
|
|
57
|
+
* **MetaTrader 5**
|
|
58
|
+
* **mtcli**
|
|
59
|
+
|
|
60
|
+
Projeto relacionado:
|
|
61
|
+
|
|
62
|
+
[https://github.com/vfranca/mtcli](https://github.com/vfranca/mtcli)
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
# Instalação
|
|
67
|
+
|
|
68
|
+
Via pip:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
pip install mtcli-renko
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Ou com poetry:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
poetry add mtcli-renko
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Após a instalação o plugin será automaticamente carregado pelo **mtcli**.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
# Comando
|
|
85
|
+
|
|
86
|
+
O plugin adiciona o comando:
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
mt rk
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Exemplo simples:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
mt rk
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Exemplo com parâmetros:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
mt rk --brick 60
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
# Exemplo de saída
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
=== GRAFICO RENKO ===
|
|
110
|
+
Total de blocos: 5
|
|
111
|
+
|
|
112
|
+
METRICAS:
|
|
113
|
+
Up: 2
|
|
114
|
+
Down: 3
|
|
115
|
+
Delta: -1
|
|
116
|
+
|
|
117
|
+
PADROES:
|
|
118
|
+
H1
|
|
119
|
+
|
|
120
|
+
DOWN 181915 181855
|
|
121
|
+
UP 181855 181915
|
|
122
|
+
DOWN 181915 181855
|
|
123
|
+
DOWN 181855 181795
|
|
124
|
+
UP 181795 181855
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Quando o **modo tick híbrido** está ativo, o último bloco pode aparecer como **em formação**.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
# Modos de geração
|
|
132
|
+
|
|
133
|
+
O plugin suporta dois modos principais de dados.
|
|
134
|
+
|
|
135
|
+
## Tick mode
|
|
136
|
+
|
|
137
|
+
Os blocos Renko são gerados diretamente a partir de **ticks do mercado**.
|
|
138
|
+
|
|
139
|
+
Vantagens:
|
|
140
|
+
|
|
141
|
+
* maior precisão
|
|
142
|
+
* captura movimentos intra-candle
|
|
143
|
+
* ideal para análise de fluxo
|
|
144
|
+
|
|
145
|
+
Disponibiliza três estilos:
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
estrutural
|
|
149
|
+
agressivo
|
|
150
|
+
hibrido
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Híbrido
|
|
154
|
+
|
|
155
|
+
Modo recomendado.
|
|
156
|
+
|
|
157
|
+
Exibe:
|
|
158
|
+
|
|
159
|
+
* blocos **confirmados**
|
|
160
|
+
* último bloco **em formação**
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Candle mode
|
|
165
|
+
|
|
166
|
+
Os blocos Renko são gerados a partir de **candles históricos**.
|
|
167
|
+
|
|
168
|
+
Características:
|
|
169
|
+
|
|
170
|
+
* cálculo **determinístico**
|
|
171
|
+
* reconstrução do caminho interno do candle
|
|
172
|
+
* resultados consistentes entre execuções
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
# Configuração
|
|
177
|
+
|
|
178
|
+
As configurações são definidas em:
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
mtcli.ini
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Seção:
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
[renko]
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Exemplo completo:
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
[renko]
|
|
194
|
+
|
|
195
|
+
symbol = WIN$N
|
|
196
|
+
digits = 0
|
|
197
|
+
|
|
198
|
+
period = m1
|
|
199
|
+
data_mode = tick
|
|
200
|
+
|
|
201
|
+
bars = 566
|
|
202
|
+
|
|
203
|
+
brick = 60
|
|
204
|
+
|
|
205
|
+
max_ticks = 5000000
|
|
206
|
+
|
|
207
|
+
tick_style = hibrido
|
|
208
|
+
|
|
209
|
+
modo = simples
|
|
210
|
+
|
|
211
|
+
limit_bricks = 0
|
|
212
|
+
|
|
213
|
+
session_open = 09:00
|
|
214
|
+
|
|
215
|
+
session_open_offset_seconds = 0
|
|
216
|
+
|
|
217
|
+
broker_utc_offset = -3
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
# Parâmetros
|
|
223
|
+
|
|
224
|
+
## symbol
|
|
225
|
+
|
|
226
|
+
Ativo utilizado para gerar o Renko.
|
|
227
|
+
|
|
228
|
+
Exemplo:
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
symbol = WIN$N
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## digits
|
|
237
|
+
|
|
238
|
+
Número de casas decimais do ativo.
|
|
239
|
+
|
|
240
|
+
Exemplo:
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
digits = 0
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## period
|
|
249
|
+
|
|
250
|
+
Timeframe utilizado quando:
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
data_mode = candle
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
Exemplo:
|
|
257
|
+
|
|
258
|
+
```
|
|
259
|
+
period = m1
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## data_mode
|
|
265
|
+
|
|
266
|
+
Define a fonte de dados utilizada.
|
|
267
|
+
|
|
268
|
+
Valores possíveis:
|
|
269
|
+
|
|
270
|
+
```
|
|
271
|
+
tick
|
|
272
|
+
candle
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## bars
|
|
278
|
+
|
|
279
|
+
Quantidade de candles carregados quando:
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
data_mode = candle
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## brick
|
|
288
|
+
|
|
289
|
+
Tamanho do bloco Renko.
|
|
290
|
+
|
|
291
|
+
Exemplo:
|
|
292
|
+
|
|
293
|
+
```
|
|
294
|
+
brick = 60
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## max_ticks
|
|
300
|
+
|
|
301
|
+
Número máximo de ticks carregados quando:
|
|
302
|
+
|
|
303
|
+
```
|
|
304
|
+
data_mode = tick
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
Isso evita consumo excessivo de memória.
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## tick_style
|
|
312
|
+
|
|
313
|
+
Define o estilo de cálculo no modo **tick**.
|
|
314
|
+
|
|
315
|
+
Valores possíveis:
|
|
316
|
+
|
|
317
|
+
```
|
|
318
|
+
estrutural
|
|
319
|
+
agressivo
|
|
320
|
+
hibrido
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### estrutural
|
|
324
|
+
|
|
325
|
+
Renko mais conservador.
|
|
326
|
+
|
|
327
|
+
### agressivo
|
|
328
|
+
|
|
329
|
+
Gera blocos mais rapidamente.
|
|
330
|
+
|
|
331
|
+
### híbrido
|
|
332
|
+
|
|
333
|
+
Combina estabilidade e reatividade e permite mostrar:
|
|
334
|
+
|
|
335
|
+
* blocos confirmados
|
|
336
|
+
* bloco em formação
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
## modo
|
|
341
|
+
|
|
342
|
+
Define o algoritmo base de cálculo.
|
|
343
|
+
|
|
344
|
+
Valores possíveis:
|
|
345
|
+
|
|
346
|
+
```
|
|
347
|
+
simples
|
|
348
|
+
classico
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
---
|
|
352
|
+
|
|
353
|
+
## limit_bricks
|
|
354
|
+
|
|
355
|
+
Limita a quantidade de blocos exibidos.
|
|
356
|
+
|
|
357
|
+
Exemplo:
|
|
358
|
+
|
|
359
|
+
```
|
|
360
|
+
limit_bricks = 200
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
## session_open
|
|
366
|
+
|
|
367
|
+
Hora oficial de abertura do pregão.
|
|
368
|
+
|
|
369
|
+
Formato:
|
|
370
|
+
|
|
371
|
+
```
|
|
372
|
+
HH:MM
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
Exemplo:
|
|
376
|
+
|
|
377
|
+
```
|
|
378
|
+
session_open = 09:00
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
## session_open_offset_seconds
|
|
384
|
+
|
|
385
|
+
Margem de segurança aplicada à abertura do pregão.
|
|
386
|
+
|
|
387
|
+
Algumas corretoras enviam os primeiros ticks **alguns segundos após a abertura oficial**.
|
|
388
|
+
|
|
389
|
+
Esse parâmetro evita problemas de ancoragem.
|
|
390
|
+
|
|
391
|
+
Exemplo:
|
|
392
|
+
|
|
393
|
+
```
|
|
394
|
+
session_open_offset_seconds = 47
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## broker_utc_offset
|
|
400
|
+
|
|
401
|
+
Offset UTC do servidor da corretora.
|
|
402
|
+
|
|
403
|
+
Exemplo:
|
|
404
|
+
|
|
405
|
+
```
|
|
406
|
+
broker_utc_offset = -3
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
---
|
|
410
|
+
|
|
411
|
+
# Exemplos de uso
|
|
412
|
+
|
|
413
|
+
## Renko padrão
|
|
414
|
+
|
|
415
|
+
```
|
|
416
|
+
mt rk
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
421
|
+
## Definir tamanho do brick
|
|
422
|
+
|
|
423
|
+
```
|
|
424
|
+
mt rk --brick 30
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## Limitar quantidade de blocos
|
|
430
|
+
|
|
431
|
+
```
|
|
432
|
+
mt rk --limit-bricks 200
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
---
|
|
436
|
+
|
|
437
|
+
## Usar modo candle
|
|
438
|
+
|
|
439
|
+
```
|
|
440
|
+
mt rk --data-mode candle
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
---
|
|
444
|
+
|
|
445
|
+
# Arquitetura
|
|
446
|
+
|
|
447
|
+
O plugin segue arquitetura **MVC**, separando responsabilidades:
|
|
448
|
+
|
|
449
|
+
```
|
|
450
|
+
mtcli_renko/
|
|
451
|
+
|
|
452
|
+
commands/
|
|
453
|
+
renko.py
|
|
454
|
+
|
|
455
|
+
controllers/
|
|
456
|
+
renko_controller.py
|
|
457
|
+
|
|
458
|
+
models/
|
|
459
|
+
renko_model.py
|
|
460
|
+
|
|
461
|
+
views/
|
|
462
|
+
renko_view.py
|
|
463
|
+
|
|
464
|
+
conf.py
|
|
465
|
+
plugin.py
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
### Model
|
|
469
|
+
|
|
470
|
+
Responsável por:
|
|
471
|
+
|
|
472
|
+
* geração dos blocos Renko
|
|
473
|
+
* cálculo dos algoritmos
|
|
474
|
+
* reconstrução de path do candle
|
|
475
|
+
* lógica de tick e candle
|
|
476
|
+
|
|
477
|
+
### Controller
|
|
478
|
+
|
|
479
|
+
Responsável por:
|
|
480
|
+
|
|
481
|
+
* fluxo da execução
|
|
482
|
+
* carregamento de dados
|
|
483
|
+
* integração com o mtcli
|
|
484
|
+
|
|
485
|
+
### View
|
|
486
|
+
|
|
487
|
+
Responsável por:
|
|
488
|
+
|
|
489
|
+
* exibir os blocos no terminal
|
|
490
|
+
* saída compatível com leitores de tela
|
|
491
|
+
* formatação textual simples
|
|
492
|
+
|
|
493
|
+
---
|
|
494
|
+
|
|
495
|
+
# Desenvolvimento
|
|
496
|
+
|
|
497
|
+
Clone o repositório:
|
|
498
|
+
|
|
499
|
+
```
|
|
500
|
+
git clone https://github.com/vfranca/mtcli-renko
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
Instale dependências:
|
|
504
|
+
|
|
505
|
+
```
|
|
506
|
+
poetry install
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
---
|
|
510
|
+
|
|
511
|
+
# Testes
|
|
512
|
+
|
|
513
|
+
Execute:
|
|
514
|
+
|
|
515
|
+
```
|
|
516
|
+
pytest
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
---
|
|
520
|
+
|
|
521
|
+
# Licença
|
|
522
|
+
|
|
523
|
+
MIT License
|
|
524
|
+
|
|
525
|
+
---
|
|
526
|
+
|
|
527
|
+
# Autor
|
|
528
|
+
|
|
529
|
+
Valmir França
|
|
530
|
+
|