Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Se te ajudar eu uso esse padrao nos meus EA.
Muito legal!
Desculpe a ignorância (e é muita, estou começando agora :), qual o comando para usar no EA? Você usa no evento OnTrade()?
Seria legal se tivesse uma biblioteca assim para linkar no gerador de experts (achei uma legal - TradeState - mas também não sei usar :( .
Estou testando (para aprender) em um EA "pronto", mas o bendito ignora totalmente meu comando. Também tentei ExtExpert.Close(), mas é método privado da CExpert e o compilador não gostou da ideia...
Minha gambiarra:
Olá, como vai? Quebrando a cabeça com as datas?
Você precisa preparar as variáveis fazendo o tratamento com a função:
void sDATA(){
MqlDateTime sTimeKey, sTimeOpen;
TimeToStruct(StringToTime(sTimeKey_P),sTimeKey); // sTimeKey_P - String Contendo a informação de data // StimeKey - Variável que receberá as informações
}
*O erro no seu código é que vc está tentando comparar diretamente, sem fazer o tratamento.
Nelson, obrigado pela atenção.
Fiquei lutando com a comparação de strings x datas e desisti (por enquanto ;)
Tentei usar o código do Willian, mas parece que não funcionou. Aumentei a margem dos horários para ficar mais fácil de visualizar:
e alterei o meu OnTrade:
No entanto ele continua negociando nos períodos "proibidos":
Olá,
tres observações:
1) O evento correto para efetuar trades seria on OnTick.
2) O seu teste de data só vai funcionar no primeiro dia do backtest, pois datetime é dia e hora e do jeito que você fez o dia está fixo. A cada novo dia tem que ajustar novamente as datas.
3) PosistionsTotal() é a quantidade de posições abertas no MT5, ou seja de todos EA(s) e todas a operações manuais que você fez. Você quer mesmo fechar tudo?
Olá,
tres observações:
1) O evento correto para efetuar trades seria on OnTick.
Obrigado pela atenção, Rogério.
Como eu faria para controlar o evento de negociação dentro do ontick? Tem como "cancelar" o sinal do indicador?
2) O seu teste de data só vai funcionar no primeiro dia do backtest, pois datetime é dia e hora e do jeito que você fez o dia está fixo. A cada novo dia tem que ajustar novamente as datas.
Ótima observação (não tinha me ligado nesse detalhe). Mas acho que código do Willian cuida dessa parte (ou não)? Pelo que entendi da funçâo (trecho abaixo), ele extrai e compara apenas horas e minutos, pouco importando o dia:
{
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;
}//--- fim da verificacao de datas
Querer eu não quero, mas foi o jeito que eu achei pronto para começar a testar :)
Como poderia ser o código para fechar só as posições abertas pelo expert para o símbolo em questão?
Finalmente (se não for pedir muito), alguém poderia postar ou indicar um código de expert básico (de preferência feito com o gerador do mt5) que tenha essa bendita funcionalidade? É super frustrante não conseguir fazer nenhum teste minimamente realista com daytrade e não entender como codificar algo aparentemente tão simples.
Descobri a solução, nem precisa programar!
No gerador de experts, tem um módulo de filtro intradiário. Eu já tinha visto, mas achava que ele não limitava os trades.
O truque é ajeitar o badhoursofday (horas ruins do dia).
Ele mapeia um número binário com 24 bits, cada um correspondendo a uma hora do dia, sendo 1 para não negociar, e 0 liberado, na sequência (24 23 22... 01 00)
Então, por exemplo, para ativar entre as 10 e as 15h59: 111111110000001111111111.
Convertendo para decimal: 16712703.
Tenho certeza que os Srs. têm uma solução mais elegante (com controle de minutos, por exemplo), mas para mim já é um ótimo começo :D
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!
Olá, an.hernandez79!
Também sou iniciante. Assim como você, eu busco controlar diversos aspectos no meu EA, duração das posições, número de posições, máximo de perdas etc. Para as perdas, que eu não vi resposta acima, eu utilizo essa função:
Espero ter ajudado!
OLA BAO TARDE GOSTARIA DE SABER SE AO EFETUAR AS OPERAÇOES DE ENTRADA E FECHAMENTO E DATA SE EU PRESIZO ESTAR COM MEU COMPUTADOR LIGADO OU POSSO FAZER TODO PROSESSO E IR TRABALHAR OBRIGADO DESCULP PELA IGUINORANCIA AGUARDO RESPOSTA.