Mql5-Python-Integration

 

Olá para todos.


Antes de mais nada gostaria de informar que estou aprendendo a programar em Python, tenho algum conhecimento sobre o assunto, mas não muito, bem como tenho conhecimento em Mql5 e não é muito.


Sendo assim, na busca por desenvolver Expert Advisors de forma mais simples e mais rápida eu me deparei com a integração MQL5-Python.

Achei incrível a possibilidade de poder fazer a mesma coisa que eu fazia em Mql5 diretamente em Python, na hora entendi que eu poderia aplicar minhas ideias de forma muito mais simples e muito mais rápido. Porém, muitas coisas teriam de serem escritas inicialmente, logo, para facilitar minha vida e permitir que eu conseguisse implementar minhas ideias eu criei algumas classes, todas baseadas na estrutura de classes do Metatrader 5.


https://github.com/Joaopeuko/Mql5-Python-Integration


Gostaria de lembrar mais uma vez que eu estou aprendendo sobre o assunto, gostaria de críticas construtivas que me ajudassem a me desenvolver e me aprimorar como desenvolvedor, quero saber o que é possível mudar e como fazer isso para que tudo fique melhor.


Gostaria de informar também que tudo que foi criado, foi feito para negociar Mini Índice, tento deixar o código o mais genérico possível para que funcione em todos os tipos de ativos, porém, tem horas que algumas coisas me escapam o olhar.


Algumas considerações:

No código é possível notar que eu uso dois stop loss e dois take profit.


Trade:

    def __init__(self,
                 expert_name,
                 version,
                 symbol,
                 magic_number,
                 lot,
                 stop_loss,  
                 emergency_stop_loss,  
                 take_profit,  
                 emergency_take_profit,  
                 start_time='9:15',  
                 finishing_time='17:30',  
                 ending_time='17:50',  
                 fee=0.0,
                 ):


Aqueles com o emergency antes do nome é o stop loss e o take profit que todos conhecem, que desenha uma linha no gráfico, porém, sempre senti tanto com MQL5 e com o Python uma rigidez muito grande em trabalhar com eles, logo, eu inseri no código como uma proteção, e desenvolvi meu próprio stop e take profit, a diferença é o que eu desenvolvi (ele abre uma posição contrária a que estava, para encerrar a operação) fica mais fácil adicionar comentário ou salvar qualquer tipo de informação em arquivos. Que é o que eu uso hoje, salvo informações no momento de entrada e saída das operações, mas isso ainda não está no código.

Quando negocio mini índice com 1 contrato eu sei que o custo operacional médio é de 25 centavos para entrar e 25 centavos para sair, esse valor pode variar para mais ou para menos de acordo com o dia. Em alguns momentos eu vejo o valor positivo na minha conta, mas não tenho certeza se estou perdendo dinheiro para as taxas, por isso, eu criei essa variável que sempre que encerra a operação ele considera esse valor e subtrai do ganho e da perda. Não é considerado imposto nesse momento, mas quem tiver interesse é possível criar também.


O metatrader se inicializa automaticamente quando você rodar o arquivo Python (example.py), para o mesmo acontecer o metatrader tem de estar instalado no computador, se ainda assim não der certo, basta abrir o metatrader de forma manual, isso deve funcionar.


Ctrl + C corta o ‘while’, caso você queira encerrar antes do fim do dia.


Lembrando que como ainda estou aprendendo existem certas coisas que podem parecer óbvias para alguns, mas eu levei um tempo para entender, como exemplo, a linha de cima.


Desde já, muito obrigado.





Documentação sobre MQL5: Integração / MetaTrader para Python
Documentação sobre MQL5: Integração / MetaTrader para Python
  • www.mql5.com
Python é uma linguagem de programação moderna de alto nível para o desenvolvimento de scripts e aplicativos. Possui muitas bibliotecas para aprendizado de máquina, automação de processos, análise de dados e visualização. O pacote MetaTrader para Python é projetado para o recebimento conveniente e rápido de informações de negociação através de...
 
Olá como faço para o indicador CCI , pode me ajudar? Também sou novo em python estou aprendendo a criar experts para mini indice
 
Euler Belfortt #:
Olá como faço para o indicador CCI , pode me ajudar? Também sou novo em python estou aprendendo a criar experts para mini indice

Tem uma biblioteca com muitos indicadores implementados use ela! Mais informacoes tem um help

% pip install ta
import ta
from ta.trend import CCIIndicator
help(CCIIndicator)
 
Existe alguma forma de colocar um trailing stop no trade para que o stop se mova a cada 10 pontos?
 

Tentei fazer importando a média movel mas ele não faz a entrada, será que fiz algo de errado?


moving_average = indicator.moving_average(symbol=trade.symbol, period=3)

    try:
        print(moving_average)
        if tick.time_msc != time:
            buy = (tick.last > moving_average['moving_average_result'])
            sell = (tick.last < moving_average['moving_average_result'])

            trade.open_position(buy, sell, 'Example Advisor')

            time = tick.time_msc

        if trade.days_end():
            trade.close_position('End of the trading day reached.')
            break

    except TypeError:
        pass
 
Euler Belfortt #:

Tentei fazer importando a média movel mas ele não faz a entrada, será que fiz algo de errado?


moving_average = indicator.moving_average(symbol=trade.symbol, period=3)

    try:
        print(moving_average)
        if tick.time_msc != time:
            buy = (tick.last > moving_average['moving_average_result'])
            sell = (tick.last < moving_average['moving_average_result'])

            trade.open_position(buy, sell, 'Example Advisor')

            time = tick.time_msc

        if trade.days_end():
            trade.close_position('End of the trading day reached.')
            break

    except TypeError:
        pass
Certamente, mostre todo o codigo (e cole ele adequadamente usando o botao !) porque desconheco um trade/tick/indicator na parte de integracao ou estude as funcoes da ala de integracao: https://www.mql5.com/pt/docs/integration/python_metatrader5