Boa tarde,
o que você chama de fuso é a hora GMT e a função TimeGmt() é hora GMT. Para você calcular a hora local a partir de uma hora expressa como hora GMT tem que subtrair deslocamento entre as horas, e a função TimeGMTOffset() é esse deslocamento, então:
Print(TimeToString(values[i].time - TimeGMTOffset()) vai mostrar a hora local do evento.
Boa tarde,
o que você chama de fuso é a hora GMT e a função TimeGmt() é hora GMT. Para você calcular a hora local a partir de uma hora expressa como hora GMT tem que subtrair deslocamento entre as horas, e a função TimeGMTOffset() é esse deslocamento, então:
Print(TimeToString(values[i].time - TimeGMTOffset()) vai mostrar a hora local do evento.
Obrigado Rogério! vou testar.
Em um primeiro momento coloquei um paramentro de diferença de fuso. Para forex -3 horas, brasil +3 horas. Agora está filtrando as noticias certinho, mas vou testar a função!
Obrigado Rogério! vou testar.
Em um primeiro momento coloquei um parametro de diferença de fuso. Para forex -3 horas, brasil +3 horas. Agora está filtrando as noticias certinho, mas vou testar a função!
Gilberto,
não é bem assim. O mqlCalendarValue.time está em hora GMT, então se mqlCalendarValue.time = 05:30:00 aqui é 02:30:00, mas no horário de verão aqui é 03:30:00. Então deixar fixo 3 hora no programa é uma furada, Assim sendo, use o TimeGMTOffset() que já fica ajustado para 02:00:00 horas durante o horário de verão.
Se você quer calcular a hora da notícia em relação ao servidor Forex o cálculo é:
1) Ajuste a hora do evento para hora local ==> horaEvento = mqlCalendarValue.time - TimeGTMOffSet();
2) Em seguida ajuste para o horário do evento em função da hora do servidor ==> horaEvento = horaEvento + (TimeTradeServer() - TimeLocal());
Mas tem um problema, como o TimeLocal() é a hora do PC vai ter que confiar que a hora do PC está correta.
- 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
Pessoal, estou usando o CalendarValueHistory, para o robo não operar quando há noticias relevantes (impacto alto). Mas estou identificando um problema.
Por exemplo hoje (02/08/19), tem as 9:30 o Payroll não agricola
no MT5 logado no Forex, na aba calendário, apresenta como horário das 15:30 (no metatrader logado para o indice aparece 9:30), porém a função me retorno as 12:30 e com isso ele filtra o horário errado. A função identifica certinho o indicador, porém com alguma questão de fuso.
if(CalendarValueHistory(values,hora1,hora2,NULL,moeda1))
Values é o array
hora1 = inicio
hora 2 = fim
pais = NULL
moeda1 =USD
não vi na função algo que indique o fuso, pensei que fosse o pais, porém quando coloco ai ele não traz nada (coloando estados unidos, europa, brasil...etc)
alguem tem essa função implementada que poderia me ajudar?
Obrigado!