Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 667

 
Leo59:
Infelizmente, não funciona.

init();
if(IsTradeAllowed()) Imprimir("Comércio é permitido");
if(!IsTradeAllowed()) Imprimir("O comércio NÃO é permitido");


Diz: "Comércio autorizado"

Tem de haver outra forma. Como?

Experimente desta forma:

starttime=(int)TimeCurrent()+sec; // например +5 секунд. Эту строку в OnInit

if(TimeCurrent()>starttime) {
...
}

Penso que o princípio é claro, e enquanto não houver um tick, oTimeCurrent não mudará

 
Vitaly Muzichenko:

Tente desta forma:

starttime=(int)TimeCurrent()+sec; // например +5 секунд

if(TimeCurrent()>starttime) {
...
}

Penso que o princípio é claro, e enquanto não houver um tick, oTimeCurrent não mudará

Sim, para o Forex é bom, porque as carraças vêm frequentemente. E se não for para Forex ?
 
Leo59:
Sim, para o forex é bom porque as carraças vêm frequentemente. E se não for para Forex?
A questão é que durante a inicialização a variável "starttime" será alguns segundos mais longa do que o tempo do servidor. Assim,quando os ticks chegam à abertura do mercado, entãoa TimeCurrentserá sempre maior do que ahora de início, e os ticks não importam - a condição é cumprida e será cumprida até à próxima reinicialização, por exemplo, mudando os prazos ou recarregando o terminal.
 
Vitaly Muzichenko:
A questão é que durante a inicialização o tempo variável "hora de início" será alguns segundos mais longo do que o tempo do servidor.
Preciso de processar a informação agora, antes da chegada do primeiro tick, para que quando o novo (primeiro) tick chegar, tudo esteja pronto a funcionar.
 
Leo59:
Não é. Verifique agora, se não se importar). Mas, não é essa a questão. Preciso de processar a informação agora, antes do primeiro tick chegar, para que quando o novo (primeiro) tick chegar, tudo esteja pronto para ir.
Tenho usado isto há vários anos, mas não preciso de processar nada até que não haja nenhuma carraça. Precisa de outra solução, e a ligação que lhe dei deve ser
 
Vitaly Muzichenko:
Tenho usado isto há alguns anos, mas não preciso de processar nada desde que não haja carraças. Precisa de outra solução, e a partir da ligação que lhe deu deve ser
Tem razão, "starttime=(int)TimeCurrent()+sec; // e.g. +5 segundos", claro, é maior que TimeCurrent(). Eu exagerei, o meu cérebro parece estar completamente derretido ))
O link que lá dei diz apenas TimeLocal() mas eu queria evitá-lo.
 
Leo59:
Tem razão, "starttime=(int)TimeCurrent()+sec; // por exemplo, +5 segundos", é claro, é maior do que TimeCurrent(). Eu exagerei, o meu cérebro parece estar completamente derretido ))
A ligação leva apenas ao TimeLocal() e eu queria evitá-lo.

Dependendo da tarefa, pode tentar usar uma combinação deTimeCurrent()+OnTimer(), ou TimeCurrent()+TimeGMT()+TimeGMTOffset()

Pode fazer todas as condições por temporizador e negociar porTimeCurrent() Existem muitas soluções, mas a escolha é sua para a sua tarefa individual.

 
Vitaly Muzichenko:

Dependendo da tarefa, pode tentar usar uma combinação deTimeCurrent()+OnTimer(), ou TimeCurrent()+TimeGMT()+TimeGMTOffset()

Pode executar todas as condições por temporizador e negociar porTimeCurrent() Existem muitas soluções, mas a escolha é sua para a sua tarefa individual.

E como, na minha pergunta, pode o OnTimer() ser aplicado?
 
Leo59:
E como, na minha pergunta, pode o OnTimer() ser aplicado ?
Manter a bandeira de inibição até que tudo tenha sido calculado, por exemplo...
 
Artyom Trishkin:
Segurar a bandeira de proibição de trabalho até que tudo tenha sido calculado, por exemplo...
Artyom, a questão era sobre como definir um dia de folga programático sem recorrer ao TimeLocal(). ))