Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 767
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Não notei a resposta de imediato. Bem, para ser honesto, eu não entendi bem o que você quis dizer ao dizer que não há confusão sobre isso.
O que você quer dizer com "não importa o tempoStringToTime() conta os segundos transcorridos"?
A função essencialmente leva uma data à esquerda(acredito que a data do PC local é à esquerda) e compara a hora atual do servidor do corretor com ela, por que isso não importaria?
Da captura de tela acima, o comentário diz que o tempo em seu PC local é 1 hora antes do tempo do corretor, ou seja, o turno GMT é maior. Se fossem X horas a menos, seria crítico, como no caso de eu ter escrito sobre sexta-feira.
Quanto ao fim do tempo de negociação. Acho que para a funçãoStringToTime() não deveimportar quando o corretor termina o dia ou a semana de negociação...
Não tenho outra explicação.
Se são 11:40 em Moscou, então passaram XXX segundos de 01.01.1970 até a hora atual.
Quando forem 11:40 em Londres, por exemplo, o número de segundos será o mesmo que em Moscou agora... Isto só porque 01.01.1970 em Londres foi muito mais tarde que a época atual. Não é o tempo especificado, mas apenas o número de segundos.
Tente escrever você mesmo uma fórmula para calcular o número de segundos desde 01.01.1970 00:00:00.
Por um curto período de tempo, você poderia usar esta fórmula. Desde o início do mês corrente passou 6*24*60*60 + 11*60*60 + 59*60 + valor atual de segundos no relógio que você está olhando.
É claro que a comparação se baseia no número de segundos decorridos desde o ano 70, mas este número de segundos leva em conta tudo - data e hora.
Vou dar apenas um exemplo, que é essencialmente uma simplificação de um problema que encontrei recentemente.
Inicialmente eu tinha uma solução desse tipo:
E agora o gimmick: a impressão especificada no código aparecerá na sexta-feira, mas não depois das 21h30, mas às 00h00 do primeiro tick.
Porque quando o servidor do meu corretor chegou na sexta-feira, no meu PC local ainda era quinta-feira, o timeshift é diferente.
No testador, tudo está bem e a impressão será liberada como deve ser na sexta-feira depois das 21h30. Isso não é confuso?
É claro que a comparação se baseia no número de segundos decorridos desde o ano 70, mas este número de segundos leva em conta tudo - data e hora.
Apenas para dar um exemplo, basicamente uma simplificação de um problema que encontrei recentemente.
Inicialmente eu tinha uma solução desse tipo:
E agora o gimmick: a impressão especificada no código aparecerá na sexta-feira, mas não depois das 21h30, mas às 00h00 do primeiro tick.
Porque quando o servidor do meu corretor chegou na sexta-feira, no meu PC local ainda era quinta-feira, o timeshift é diferente.
No testador, tudo está bem e a impressão será liberada como deve ser na sexta-feira depois das 21h30. Isso não é confuso?
É claro que é confuso. É só confusão na sua cabeça. TimeToString("21:30") dará a data atual das 21:30:00 às 21:29:59 do dia seguinte. Vou corrigir os comentários em seu código.
E este código vai funcionar corretamente
Há dois terminais MT4 no mesmo laptop: um com 4 casas decimais e outro com 5 casas decimais. Ao mesmo tempo, o tráfego no primeiro é de 105/0 kb, no segundo de 3450/0 kb. A primeira é intensiva em CPU em 6%, a segunda em 39%. Qual é o problema? Isto é sequer uma norma?
AlexeyVik
Alterei a data em meu computador para 2000.
rodou este roteiro:
e consegui isto:
portanto StringToTime() tira a data do computador local
AlexeyVik
Alterei a data em meu computador para 2000.
rodou este roteiro:
e consegui isto:
Então StringToTime() tira a data do computador local
E daí? Deixe que ele o tire da lua, desde que o tempo "de e para" tenha passado de XXX segundos e este número inteiro nós comparamos com o número de segundos passados de 01.01.1970 do tempo necessário.
É melhor você verificar esta linha
onde você tinha o problema. Hoje é sexta-feira.
É melhor você verificar essa linha
onde você tinha o problema. Hoje é sexta-feira.
Eu verifiquei, se o computador local tem uma data inferior à data do corretor, então as impressoras estão lá,
e se o computador local tiver uma data maior do que a do corretor, não há impressoras.
ou seja, o tempo já passou, ou seja, "11h30".
no primeiro caso o TimeCurrent() é comparado com 2014.11.06 11:30, e no segundo casocom 2014.11.0811:30
PS corrigiu o destacado
A primeira linha é clara, o comentário sobre a segunda linha não é.
Por que a sexta-feira está longe, quando já chegou? Afinal de contas, a segunda linha só é executada se for sexta-feira.
Eu verifiquei, se o computador local tem uma data inferior à data do corretor, então as impressoras estão lá,
e se a data no computador local for maior que a data do corretor, então não há impressoras.
ou seja, o tempo já passou, ou seja, "11h30".
no primeiro caso o TimeCurrent() é comparado com 2014.11.06 11:30, e no segundo casocom 2014.11.0811:30
PS corrigiu o destacado
Bem aqui eu tenho tempo local maior que o do servidor em 1 hora.
Este roteiro
Produz os seguintes valores.
Primeiro o número de segundos decorridos de 01.01.1970 até o tempo especificado e depois o tempo na forma usual.
Com base nisso, explique o que o confunde com esses valores.
Sim. Em meu segundo comentário, eu estava pensando em outra coisa.
да.
Olá.
Há uma tarefa como esta. (não pode ser anexado a um carrapato)
Se uma ordem pendente desencadear {então...}.
No meu EA, uso Terminal.mqh para calcular pedidos.
Terminal // Mas_Tip[0] aberto Comprar
// se o número de pedidos de comprativer aumentado em 1
se (Mas_Tip[0]+1)
{
função
}
Tudo funciona. Mas isso aciona em cada próximo tique.
Como anexar este caso a um carrapato? E depois compare o valor no tick anterior e no tick atual.