Boa tarde pessoal. Estou iniciando os estudos em MQL5, ou seja, não sei nada. Alguma coisa já aprendi. Já consegui criar um indicador simples. Estou baixando robôs gratuitos e fazendo testes, abrindo os códigos para tentar entender. A minha questão é, o que preciso inserir no código de um robô para que acrescente parâmetros de entrada nele para restringir a operação do mesmo por quantidades de ordens no dia? E para restringir por horário? Ou ainda restringir a uma perda por dia?
Obrigado!
Para limitar trades por horario inseri uma logica utilizando o "SE" e estipulando o horario atraves do datetime. Ao atingir o horario o EA fecha as posicoes e exclui ordens pendentes.
Quanto a quantidades de ordens por dia, ainda estou trabalhando nisso.
[]'s
até achei uma indicação de um colega aqui no forum em ingles (veja abaixo),mas eu já tentei adicionar o .mq5 e não deu certo, já tentei colocar a regra no arquivo do signal .mqh e tambem não obedece, no MT4 fica "facil", pois o codigo inteiro fica em um unico arquivo, mas no mt5 tem esse lance do indicador ser um arquivo separado,estou confuso
MqlDateTime dateTimeNowUtc; TimeGMT(dateTimeNowUtc); if (dateTimeNowUtc.hour>=9 && dateTimeNowUtc.hour<=15) { // do trade operations } else { // close any open positions but no other trade operations }
até achei uma indicação de um colega aqui no forum em ingles (veja abaixo),mas eu já tentei adicionar o .mq5 e não deu certo, já tentei colocar a regra no arquivo do signal .mqh e tambem não obedece, no MT4 fica "facil", pois o codigo inteiro fica em um unico arquivo, mas no mt5 tem esse lance do indicador ser um arquivo separado,estou confuso
Cara, eu fiz assim:
Primeiro declarei as variaveis:
datetime hora = TimeCurrent(Time); //-- Capturando hora atual
TimeToString(hora,TIME_SECONDS); //-- Normalizacao da Hora Atual
datetime close_time=D'17:15:00'; //-- Hora limite encerrar posicoes
TimeToString(close_time,TIME_SECONDS); //-- Normalizacao da Hora oara encerrar Trades
datetime hora_limite=D'16:00:00'; //-- Hora limite para operar
TimeToString(hora_limite,TIME_SECONDS); //-- Noramlizacao da Hora limite para operar
Depois criei uma logica simples:
if(hora>=close_time && PositionSelect(_Symbol)>=1)
{
//-- Fecha a posicao pelo limite de horario
trade.PositionClose(ticket,-1);
Esta funcionando corretamente.
[]'s
Se te ajudar eu uso esse padrao nos meus EA.
input string inicio="10:30"; //Horario de inicio(entradas); input string termino="17:30"; //Horario de termino(entradas); input string fechamento="17:45"; //Horario de fechamento(entradas); MqlDateTime horario_inicio,horario_termino,horario_fechamento,horario_atual; int OnInit() { //--- TimeToStruct(StringToTime(inicio),horario_inicio); //+-------------------------------------+ TimeToStruct(StringToTime(termino),horario_termino); //| Conversão das variaveis para mql | TimeToStruct(StringToTime(fechamento),horario_fechamento); //+-------------------------------------+ //verificação de erros nas entradas de horario if(horario_inicio.hour>horario_termino.hour || (horario_inicio.hour==horario_termino.hour && horario_inicio.min>horario_termino.min)) { printf ( "Parametos de horarios invalidos!" ); return INIT_FAILED; } if(horario_termino.hour>horario_fechamento.hour || (horario_termino.hour==horario_fechamento.hour && horario_termino.min>horario_fechamento.min)) { printf("Parametos de horarios invalidos!"); return INIT_FAILED; } bool HorarioEntrada() { TimeToStruct(TimeCurrent(),horario_atual); if(horario_atual.hour >= horario_inicio.hour && horario_atual.hour <= horario_termino.hour) { // Hora atual igual a de início if(horario_atual.hour == horario_inicio.hour) // Se minuto atual maior ou igual ao de início => está no horário de entradas if(horario_atual.min >= horario_inicio.min) return true; // Do contrário não está no horário de entradas else return false; // Hora atual igual a de término if(horario_atual.hour == horario_termino.hour) // Se minuto atual menor ou igual ao de término => está no horário de entradas if(horario_atual.min <= horario_termino.min) return true; // Do contrário não está no horário de entradas else return false; // Hora atual maior que a de início e menor que a de término return true; } // Hora fora do horário de entradas return false; } bool HorarioFechamento() { TimeToStruct(TimeCurrent(),horario_atual); // Hora dentro do horário de fechamento if(horario_atual.hour >= horario_fechamento.hour) { // Hora atual igual a de fechamento if(horario_atual.hour == horario_fechamento.hour) // Se minuto atual maior ou igual ao de fechamento => está no horário de fechamento if(horario_atual.min >= horario_fechamento.min) return true; // Do contrário não está no horário de fechamento else return false; // Hora atual maior que a de fechamento return true; } // Hora fora do horário de fechamento return false; }
Se te ajudar eu uso esse padrao nos meus EA.
Bem legal seu código, comentado e fácil de entender.
[]'s
Se te ajudar eu uso esse padrao nos meus EA.
eu to perdido nesse MT5,de verdade, MT4 era bem mais intuitivo..to apanhando bastante..
'HorarioEntrada' - function can be declared only in the global scope Estocastico.mq5 76 6
'HorarioFechamento' - function can be declared only in the global scope Estocastico.mq5 109 6
2 error(s), 0 warning(s) 3 1
Bem legal seu código, comentado e fácil de entender.
[]'s
eu to perdido nesse MT5,de verdade, MT4 era bem mais intuitivo..to apanhando bastante..
'HorarioEntrada' - function can be declared only in the global scope Estocastico.mq5 76 6
'HorarioFechamento' - function can be declared only in the global scope Estocastico.mq5 109 6
2 error(s), 0 warning(s) 3 1
Ao que parece você está criando uma função dentro da outra. Copie e cole as funções: 'HorarioEntrada' e 'HorarioFechamento' fora de OnInit() e compile.
Boa sorte!
[]´s
eu até entendi.. mas não consigo entender como faço implementações no MT5, fico perdido com esse negocio do EA ser dividido em codigo e e arquivo de sinal/classe
Tranquilo man. Também sou iniciante!

- 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
Boa tarde pessoal. Estou iniciando os estudos em MQL5, ou seja, não sei nada. Alguma coisa já aprendi. Já consegui criar um indicador simples. Estou baixando robôs gratuitos e fazendo testes, abrindo os códigos para tentar entender. A minha questão é, o que preciso inserir no código de um robô para que acrescente parâmetros de entrada nele para restringir a operação do mesmo por quantidades de ordens no dia? E para restringir por horário? Ou ainda restringir a uma perda por dia?
Obrigado!