Alguem poderia me ajudar em como eu posso fazer pra arredondar para o horario atual até o quinto minuto? Ex:
Hora atual: 10:08 --> Gostaria que a operação fosse feita as 10:10.
Hora atual: 10:03 --> Gostaria que a operação fosse feita as 10:05.
Hora atual: 10:11 --> Gostaria que a operação fosse feita as 10:15.
Ou seja, de 5 em 5 minutos a partir da hora atual.
Segue um exemplo. Siga a logica e programe de acordo com sua estrategia.
Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação
Limitar robô por horário e/ou numero de operções.
Willian De Caldas Leite, 2018.12.27 00:33
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; }
Outra pergunta, sou novo por aqui existe alguma forma de saber se a candle fechou verde ou vermelha?
Verde ou vermelho eh apenas uma questão de estética. Você quer dizer se fechou em alta ou em baixa?
Alta:
Se fechamento > abertura
Baixa:
Se fechamento < abertura
Simples assim.
Segue um exemplo. Siga a logica e programe de acordo com sua estrategia.
obrigado!!!
Verde ou vermelho eh apenas uma questão de estética. Você quer dizer se fechou em alta ou em baixa?
Alta:
Se fechamento > abertura
Baixa:
Se fechamento < abertura
Simples assim.
Valeu amigo!
Alguem poderia me ajudar em como eu posso fazer pra arredondar para o horario atual até o quinto minuto? Ex:
Hora atual: 10:08 --> Gostaria que a operação fosse feita as 10:10.
Hora atual: 10:03 --> Gostaria que a operação fosse feita as 10:05.
Hora atual: 10:11 --> Gostaria que a operação fosse feita as 10:15.
Ou seja, de 5 em 5 minutos a partir da hora atual.
Olá wesleysiqueira02, uma forma simples e direta, em uma única linha de programação, de você fazer isso, é testar a existência de uma nova barra no instrumento e período escolhido, como por exemplo:
if(IsNewBar(_Symbol,PERIOD_M5)) { ... }
Se você ainda não usa nenhuma função para testar uma nova barra, nesse fórum e no Codebase
existem inúmeras formas de verificar isso, com maior ou menor qualidade, como por exemplo a simplificada abaixo, que é a mais elementar que me vem à
mente:
static int barras; bool IsNewBar(string symbol,ENUM_TIMEFRAMES period) { if(barras!=Bars(symbol,period)) { barras=Bars(symbol,period); return(true); } return(false); }
Sds.,
Rogério Figurelli
- 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
Alguem poderia me ajudar em como eu posso fazer pra arredondar para o horario atual até o quinto minuto? Ex:
Hora atual: 10:08 --> Gostaria que a operação fosse feita as 10:10.
Hora atual: 10:03 --> Gostaria que a operação fosse feita as 10:05.
Hora atual: 10:11 --> Gostaria que a operação fosse feita as 10:15.
Ou seja, de 5 em 5 minutos a partir da hora atual.