Horário na Nuvem

 

Meu EA tem hora pra começar e hora pra terminar as operações, rodando na minha máquina eu garanto que está fluindo bem, mas no VPS o horário é outro, será que ele está puxando o horário certo?

A parte do código é esta :

bool CheckTime()
{
  //------------------------------------------------------------------
  MqlDateTime mdt;
  TimeToStruct(TimeCurrent(), mdt);
  bool AllowTrade = true;
 
Lucas Tavares:

Meu EA tem hora pra começar e hora pra terminar as operações, rodando na minha máquina eu garanto que está fluindo bem, mas no VPS o horário é outro, será que ele está puxando o horário certo?

A parte do código é esta :

Meu EA também atua com restrições de horário. Você deve ajustar a hora da VPS. Se tiver dificuldade em fazê-lo, sugiro utilizar o TimeTradeServer();

[ ]´s

 
Eu troquei todos os timecurrent por timetradeserver, será que isto é o suficiente?
 
Lucas Tavares:
Eu troquei todos os timecurrent por timetradeserver, será que isto é o suficiente?

Oh Lucas,

TimeCurrent() se está no OnInit() recebe o valor de MqlTick,time_msc mais atualizado da lista de ativos observados.

Não tem nada a ver onde o VPS está e sim com o servidor MT5, veja na janela de observação o TimeCurrent().


 
Me perdi, Rogério.
O que me deixa intrigado é que os relatórios do VPS estão em um horário diferente do meu, tenho medo do meu robô estar sem operar quando deveria.
 
Lucas Tavares:
Eu troquei todos os timecurrent por timetradeserver, será que isto é o suficiente?

Você não testou? Tudo que se codifica tem que ser testado. Mudou o código, testa...

Mas testa antes de colocar para rodar...

Você sabe testar essa sua função para ver se está funcionando adequadamente?


[ ]´s

 
Joscelino Celso de Oliveira:

Você não testou? Tudo que se codifica tem que ser testado. Mudou o código, testa...

Mas testa antes de colocar para rodar...


[ ]´s

Testei, e funcionou no testback.
Mas no vps não tenho como saber até surgir uma entrada e notar se ele entra ou não. E a depender do horário, pode ser que esteja ainda errado, mas que seja um horário em comum com os dois fuso horários onde o ea está operando, mesmo achando ser outra hora. (confuso/com fuso)
 
Lucas Tavares:
Testei, e funcionou no testback.
Mas no vps não tenho como saber até surgir uma entrada e notar se ele entra ou não. E a depender do horário, pode ser que esteja ainda errado, mas que seja um horário em comum com os dois fuso horários onde o ea está operando, mesmo achando ser outra hora. (confuso/com fuso)

Se vc está usando o TimeTradeServer() não precisa se preocupar com a VPS. O EA vai usar o horário do servidor da corretora.

Não me referi ao testback. Me referi a você efetivamente ver qual o horário que está sendo considerado pelo EA. Para isso, precisa imprimir o mesmo. 

Sugiro que faça no OnInit. Crie a mesma função (apenas para teste) dentro do OnInit e faça impressão do horário. Se bater está correto, se não bater está errado.

Outra coisa. Quando coloca o EA para rodar ele faz a leitura para envio de ordens dentro de OnTick() ou OnTimer()?? Não sei qual o motivo, mas em meu caso só funcionou adequadamente quando inseri a estratégia para envio de ordens dentro de OnTimer().

[ ]´s

 

Está dentro de OnTick ().

Mas bem antes, perto dos parâmetros tem :

datetime lastCandle = 0;

O que isto faz exatamente?

Vou realizar o teste do horário, pra ver o que ele printa. Boa dica!

 
Não consegui fazer o printf, estou meio perdido, confesso.
 
Lucas Tavares:
Me perdi, Rogério.
O que me deixa intrigado é que os relatórios do VPS estão em um horário diferente do meu, tenho medo do meu robô estar sem operar quando deveria.

Lucas,

acho que você está usando o VPS FOREX e confundindo a hora da msg do log do VPS  com a hora que a operação foi feita. 

È bem simples para constatar o horário que foi feita a operação,  abra o MT5 no seu PC se log no account que está com o VPS e o EA rodando e veja  históricos !

Razão: