Atraso no envio de ordem

 

Amigos, 


De vez em quando minhas ordens estão entrando com atraso no mercado e tem me causado prejuízo.

Gostaria da opinião de voces se essa parte do código abaixo pode trazer lentidão na execução, uma vez que esta inserida no OnTick().

Acredito que toda vez que ela é executada, existe uma troca de informação com a corretora buscando informaçoes do meu histórico de ordens. Se a corretora demora alguns segundos pra enviar esse histórico, irá atrasar a execução da ordem.

Tem algum sentido ou não?


Void OnTick()
 {

   ulong ticketh;
   datetime last=0;
   HistorySelect(iTime(PERIOD_D1,1),TimeCurrent());
   for(int i=HistoryOrdersTotal()-1; i>=0; i--)
     {
      ticketh=HistoryOrderGetTicket(i);
      if(ticketh>0)
        {
         if(HistoryOrderGetString(ticketh,ORDER_SYMBOL)==Symbol())
           {
            datetime entry=HistoryOrderGetInteger(ticketh,ORDER_TIME_SETUP);
            if(entry>last)
               last=entry;
           }
           
         
        }
      }

 }


Alguém sabe se essa função pode ser executada somente quando for encerrada (fechada) cada operação, evitando que ela fique se repetindo a cada tick ?

 
Guilherme Mendonca:

Amigos, 


De vez em quando minhas ordens estão entrando com atraso no mercado e tem me causado prejuízo.

Gostaria da opinião de voces se essa parte do código abaixo pode trazer lentidão na execução, uma vez que esta inserida no OnTick().

Acredito que toda vez que ela é executada, existe uma troca de informação com a corretora buscando informaçoes do meu histórico de ordens. Se a corretora demora alguns segundos pra enviar esse histórico, irá atrasar a execução da ordem.

Tem algum sentido ou não?



Alguém sabe se essa função pode ser executada somente quando for encerrada (fechada) cada operação, evitando que ela fique se repetindo a cada tick ?

Por que você precisa questionar "a cada tick" a Sua Posição?

Código insano...

 
Flavio Jarabeck:

Por que você precisa questionar "a cada tick" a Sua Posição?

Código insano...

Obrigado por responder. Essa função me dá o horário exato do último trade que eu fiz, após isso eu coloco um “descanso” no EA de X minutos.
Qdo é passado esses X minutos e as condições de entrada estão verdadeiras, ele entra em um novo trade. 
O OnTick serve pra qdo receber o primeiro tick naquele horário de X minutos após o último trade, ele envia uma nova ordem.

Você acha que eu poderia utilizar essa função no OnTimer com set em milissegundos ? E deixar pra conferir o horário a cada 500 ms por exemplo?