vfranca / mtcli Goto Github PK
View Code? Open in Web Editor NEWAplicativo de Linha de comando para converter dados do MetaTrader 5 para formato TXT.
License: BSD 3-Clause "New" or "Revised" License
Aplicativo de Linha de comando para converter dados do MetaTrader 5 para formato TXT.
License: BSD 3-Clause "New" or "Revised" License
mtcli-folder/
m5.bat
m15.bat
h1.bat
init.bat
...
mensagem de erro:
Traceback (most recent call last):
File "c:\python38\lib\runpy.py", line 193, in _run_module_as_main
return _run_code(code, main_globals, None,
File "c:\python38\lib\runpy.py", line 86, in run_code
exec(code, run_globals)
File "C:\Python38\Scripts\ema.exe_main.py", line 7, in
File "c:\python38\lib\site-packages\click\core.py", line 764, in call
return self.main(*args, **kwargs)
File "c:\python38\lib\site-packages\click\core.py", line 717, in main
rv = self.invoke(ctx)
File "c:\python38\lib\site-packages\click\core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "c:\python38\lib\site-packages\click\core.py", line 555, in invoke
return callback(*args, **kwargs)
File "c:\python38\lib\site-packages\mtcli\cli.py", line 58, in ema
click.echo(indicator.ema.get_ema(symbol, period, count))
File "c:\python38\lib\site-packages\mtcli\indicator\ema.py", line 40, in get_ema
last_ema = get_last_ema(csv_file, count)
File "c:\python38\lib\site-packages\mtcli\indicator\ema.py", line 32, in get_last_ema
return round(sum(prices) / len(prices), 2)
ZeroDivisionError: division by zero
É preciso completar a compilação do pacote para publicação no PyPI
Paste the command(s) you ran and the output.
If there was a crash, please include the traceback here.
Colocar no início da linha o mês da barra
A exibição em canal precisa ser atualizada para o a leitura de canal segundo o método Al Brooks
Paste the command(s) you ran and the output.
If there was a crash, please include the traceback here.
Para identificar o dia colocar no início da linha o dia da barra
erro ocorre com o comando abaixo:
sell wing20 -p116210 -sl 116810 -tp 115810
exemplos:
porcentagem do corpo da barra doji
porcentagem do corpo da barra de tendencia
tamanho médio da barra
Adicionar novo tipo ou forma de visualizar o gráfico:
o gráfico de gaps intradiários:
o gap entre o fechamento e a máxima ou mínima
e o gap entre barras
Quando é dados um comando para alterar o stoploss de uma posição e por engano se coloca um takeprofit em ves de um stop loss é exibida uma msg de erro de conexão perdida.
exemplo: alterar o stop loss de para 117760 quando o preço de entrada é 118005 mas por engano coloca tp em vez de sl
O ATR na verdade não representa o cálculo do ATR mas sim a média dos últimos n ranges
exemplos:
d1 para a view channel
dd1 para a view default
exemplo:
+120.20
indicando que a média está ascendente
Colocar a variável do caminho dos arquivos CSV no arqivo de configuração principal (settings.py)
Paste the command(s) you ran and the output.
If there was a crash, please include the traceback here.
mtcli start
o arquivo .env foi copiado para c:.env
digite o caminho do mt5:
o arquivo .env foi atualizado
pronto o mtcli está pronto para uso
Atualmente a leitura dos gráficos é feita com base nos dados do arquivo CSV exportado do MetaTrader5.
Quando na instalação do Python é escolhida a instalação somente para o usuário e não para todo o sistema o mtcli não encontra o .env
Com uma mensagem de erro mais adequada facilita a detecção do erro quando o caminho da pasta do MetaTrader é preenchida incorretamente
exemplo:
mt symbol petr4
25.10 fech
30.50 max
22.10 min
25.10 abr
28.50 mms20
Criar atalhos/aliases para comandos afim de agilizar a obtenção de informações durante as operações.
exemplos:
d1 para mt bars wing20 -p daily -v ch
dd1 para mt bars wing20 -p daily -v b
Colocar o dia e a semana no início da linha para identificar a barra
Se for digitado o ativo em minúscula o comando não encontra o ativo
comando:
mt positions -s wing20 -sl 116830
saída:
Traceback (most recent call last):
File "c:\python38\lib\runpy.py", line 193, in _run_module_as_main
return _run_code(code, main_globals, None,
File "c:\python38\lib\runpy.py", line 86, in run_code
exec(code, run_globals)
File "C:\Python38\Scripts\mt.exe_main.py", line 7, in
File "c:\python38\lib\site-packages\click\core.py", line 764, in call
return self.main(*args, **kwargs)
File "c:\python38\lib\site-packages\click\core.py", line 717, in main
rv = self.invoke(ctx)
File "c:\python38\lib\site-packages\click\core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "c:\python38\lib\site-packages\click\core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "c:\python38\lib\site-packages\click\core.py", line 555, in invoke
return callback(*args, **kwargs)
File "c:\python38\lib\site-packages\mtcli\cli.py", line 188, in positions
res = mt5.modify_position_symbol(symbol.upper(), stop_loss, 0.0)
File "c:\python38\lib\site-packages\mtcli\mt5_facade.py", line 200, in modify_position_symbol
raise Exception("Não existe posição aberta para esse ativo!")
Exception: Não existe posição aberta para esse ativo!
exemplos:
m5 - 5 minutos
m15 - 15 minutos
h1 - 1 hora
Ao configurar o mtcli um usuário não pode copiar o arquivo .env para C: pois não estava com as permissões necessárias
Refatorar o código para implementar classes nas camadas do modelo
o comando
:
position -s WING20 -sl 117220
gera uma mensagem de erro porém ele altera o stop loss da posição
Pode ser um script que exiba o conteúdo abaixo por exemplo:
check.py
python c:\python38
c:.env ok
conteúdo de .env
digits=
csv_path=""
Adicionar a informação da tendência da barra como é na exibição do range ou do volume
Ao executar buy com uma ação a opção -sl dá uma mensagem de erro quando é inserido um valor float ex 49.50
exemplo
mt abrev
exibe lista de abreviaturas
CP barra de pressão compradora
CH - canal
b - brooks
Uma ferramenta parecida com os checkadores de arquivo do composer do PHP ou do Poetry para verificar se o .env foi preenchido corretamente
A chave classifiers precisa ser atualizada
Uma numeração contínua continua de um dia para outro.
Então numa visão de um gráfico com 200 barras no m5 tería a barra 107 e depois a barra 1 do outro dia
comando:
mt sell wing20 -p 116110 -v 1 -sl 116450 -tp 115790
saída:
Traceback (most recent call last):
File "c:\python38\lib\runpy.py", line 193, in _run_module_as_main
return _run_code(code, main_globals, None,
File "c:\python38\lib\runpy.py", line 86, in run_code
exec(code, run_globals)
File "C:\Python38\Scripts\sell.exe_main.py", line 7, in
File "c:\python38\lib\site-packages\click\core.py", line 764, in call
return self.main(*args, **kwargs)
File "c:\python38\lib\site-packages\click\core.py", line 717, in main
rv = self.invoke(ctx)
File "c:\python38\lib\site-packages\click\core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "c:\python38\lib\site-packages\click\core.py", line 555, in invoke
return callback(*args, **kwargs)
File "c:\python38\lib\site-packages\mtcli\cli.py", line 122, in sell
res = trading.sell_stop(symbol, price, volume, stop_loss, take_profit)
File "c:\python38\lib\site-packages\mtcli\trading.py", line 64, in sell_stop
if res < 0:
TypeError: '<' not supported between instances of 'NoneType' and 'int'
O default de barras a serem exibidas quando a opção --count é omitida é de 40 barras.
Insuficiente quando se trabalha com gráficos menores de 15 min
é mais indicado aumentar para pelo menos 107 barras para melhor se trabalhar com gráficos de 5 min
Com alguma frequência, dependendo do uso, é necessário alterar a casa de dígitos depois do ponto decimal que para a maioria dos ativos é 2.
Porém para forex por exemplo é 5 e para o IBOV é 0
O módulo para calculo da média móvel sma.py está tomando o preço com 2 casas decimais. É preciso alterar para trabalhar com as casas decimais definidas no arquivo de configuração global (setings.py)
Paste the command(s) you ran and the output.
If there was a crash, please include the traceback here.
Ao executar o comando ema com o miniíndice de 30/12/2019 foi gerada uma exceção.
> ema wing20 -p daily -p 20
Traceback (most recent call last):
File "c:\python38\lib\runpy.py", line 193, in _run_module_as_main
return _run_code(code, main_globals, None,
File "c:\python38\lib\runpy.py", line 86, in _run_code
exec(code, run_globals)
File "C:\Python38\Scripts\ema.exe\__main__.py", line 7, in <module>
File "c:\python38\lib\site-packages\click\core.py", line 764, in __call__
return self.main(*args, **kwargs)
File "c:\python38\lib\site-packages\click\core.py", line 717, in main
rv = self.invoke(ctx)
File "c:\python38\lib\site-packages\click\core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "c:\python38\lib\site-packages\click\core.py", line 555, in invoke
return callback(*args, **kwargs)
File "c:\python38\lib\site-packages\cli_trade\cli.py", line 35, in ema
click.echo(indicator.ema.get_ema(symbol, period, count))
File "c:\python38\lib\site-packages\cli_trade\indicator\ema.py", line 33, in get_ema
close = get_price_close(file)
File "c:\python38\lib\site-packages\cli_trade\indicator\ema.py", line 13, in get_price_close
rows = bar_model(file)
File "c:\python38\lib\site-packages\cli_trade\_model.py", line 7, in bar_model
f = open(file, encoding = "utf-16", newline = "")
FileNotFoundError: [Errno 2] No such file or directory: 'C:/Users/Administrador/AppData/Roaming/MetaQuotes/Terminal/FB9A56D617EDDDFE29EE54EBEFFE96C1/MQL5/Files/win$n20.csv'
Os atalhos/aliases dos comandos do mtcli criados em arquivos em lote (BAT) estão se tornando um desenvolvimento à parte e por isso deve ter um repositório próprio
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.