Olá a todos!
Tenho um EA que possui 2 condições para encerrar as posições e parar de operar. A primeira é uma meta de ganho e a segundo é um limite de perda, ambos diários. Porém ocorreu no dia de ontem de o limite de perda ser atingido e as operações não serem encerradas e o EA continuar operando. Que tipo de condição eu posso adicionar para que caso isso acontece haja uma ambiguidade que possa me proteger?
Eu utilizo o seguinte código:
Isso só diz sobre fechamento de ordem e não nos diz nada sobre como voce esta enviando as ordens de posições novas. Assim, daria pra dizer para colocar uma variavel global quando o Fechar() for chamado ser ativada e em algum ponto do seu codigo não mostrado antes dele analisar o(s) ativo(s) checar essa variavel para verificar se tem ou não que continuar. Se esse teste do lucro for a primeira coisa na parte do OnTick() daria pra fazer o Fechar() retornar se deve encerrar ou nao o dia. Coloquei as condições juntas só pra simplificar a escrita, a ideia seria isso:
if(lucro_final >= meta || lucro_final <= -limite_neg) { if (Fechar()) { return ; } else { // Fechar retornou false que seria para ele continuar com a analise e abertura... } }
Note que o fechar() é chamado somente dentro do bloco if, daria pra fazer algo numa linha so também deixando a condição assim:
if((lucro_final >= meta || lucro_final <= -limite_neg) && Fechar()) return ;
Isso só diz sobre fechamento de ordem e não nos diz nada sobre como voce esta enviando as ordens de posições novas. Assim, daria pra dizer para colocar uma variavel global quando o Fechar() for chamado ser ativada e em algum ponto do seu codigo não mostrado antes dele analisar o(s) ativo(s) checar essa variavel para verificar se tem ou não que continuar. Se esse teste do lucro for a primeira coisa na parte do OnTick() daria pra fazer o Fechar() retornar se deve encerrar ou nao o dia. Coloquei as condições juntas só pra simplificar a escrita, a ideia seria isso:
Note que o fechar() é chamado somente dentro do bloco if, daria pra fazer algo numa linha so também deixando a condição assim:
Não sei se eu entendi o que vc quis dizer, mas na verdade caso ele execute corretamente essa função que eu coloquei o código não haverá mais novas posições no dia. A ideia é ter algum outro modo de verificar se a condição foi preenchida pra não acontecer de o EA continuar operando (por algum erro ou bug) mesmo ja tendo satisfeito a condição, seja de meta ou de limite de perda.
Os meus EA rodam numa nuvem, essa ideia de ter um EA e rodar na nuvem ja é com a intenção de não ter que ficar o tempo todo na frente da tela neh. Por isso eu gostaria dessa ambiguidade na verificação, mas por meios diferentes, pra que não aconteça uma catastrofe com a minha conta sem eu ver.
Não sei se eu entendi o que vc quis dizer, mas na verdade caso ele execute corretamente essa função que eu coloquei o código não haverá mais novas posições no dia. A ideia é ter algum outro modo de verificar se a condição foi preenchida pra não acontecer de o EA continuar operando (por algum erro ou bug) mesmo ja tendo satisfeito a condição, seja de meta ou de limite de perda.
Os meus EA rodam numa nuvem, essa ideia de ter um EA e rodar na nuvem ja é com a intenção de não ter que ficar o tempo todo na frente da tela neh. Por isso eu gostaria dessa ambiguidade na verificação, mas por meios diferentes, pra que não aconteça uma catastrofe com a minha conta sem eu ver.
- www.mql5.com
Falaria primeiro pra focar em corrigir esse erro e depois criar essa camada de redundância. Acredito que depende do que voce quer, poderia ser um outro robo que verifica um possível estado de "margin call" e derruba todos os robos, entretanto isso pode ser pior que se voce encerra um robo em atividade (mesmo indevida) pode ser pior. No caso tem como criar variaveis globais na plataforma (https://www.mql5.com/pt/docs/globals), mas só é valida para o terminal em execução. Acredito que deva funcionar em ambiente de nuvem e ser compartilhada por todos os robos para comandar um encerrar "emergencial". Uma forma também seria notificar por algum uso de mensageria(telegram, whats, app do mt5, ...), voce ou seu usuário que um estado crítico foi alcançado e precisa de intervenção humana.
Qual erro vc está se referindo?
Como posso implementar essa parte de notificação por mensagem? Pode me mostrar um exemplo?
Qual erro vc está se referindo?
Como posso implementar essa parte de notificação por mensagem? Pode me mostrar um exemplo?
Aqui tem um exemplo de como criar um bot: https://www.mql5.com/pt/articles/2355
Aqui tem como configurar o push notification que dai a função alert e alarmes podem ser enviados pro app: https://www.metatrader5.com/pt/mobile-trading/iphone/help/settings_messages#notification_setup
- www.mql5.com
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Olá a todos!
Tenho um EA que possui 2 condições para encerrar as posições e parar de operar. A primeira é uma meta de ganho e a segundo é um limite de perda, ambos diários. Porém ocorreu no dia de ontem de o limite de perda ser atingido e as operações não serem encerradas e o EA continuar operando. Que tipo de condição eu posso adicionar para que caso isso acontece haja uma ambiguidade que possa me proteger?
Eu utilizo o seguinte código: