Leonid123456: É exatamente isso que eu não posso fazer.
criar uma variável inteira, atribuir-lhe o número de compras e depois contar novamente as compras e comparar com o valor dessa variável não é possível?
evillive: criar uma variável inteira, atribuir-lhe o número de compras e depois, mais uma vez, contar as compras e comparar com o valor dessa variável não funciona?
Não há nada de errado com estes valores, todos eles estão corretos, mas não é disso que estamos falando.
O problema com a sexta-feira em particular não é relevante se sua hora local for X horas a mais do que a do seu corretor.
Mas imagine se em seu computador local não houvesse +1, mas -1 hora de diferença com o corretor.
E há esta simples condição:
Neste caso:
1. o corretor terá o primeiro tique da sexta-feira, por exemplo, o tique de hoje, que tem um horário de 2014.11.07 00:00
2. o número de segundos decorridos de01.01.1970 00:00 até o tick em questão, ou seja,2014.11.07 00: 00
3. levamos o número de segundos decorridos de 01.01.1970 00:00 até06.11.2014 21:30 (é a data de ontem, porque tomamos o horário do PC local, que no momento do tick não é sexta-feira, mas quinta-feira, que é o 6º dia, ou, para ser mais preciso, 2014.11.06 23:00, a diferença de 1 hora)
Voila, o número de segundos no ponto 2 é maior do que no ponto 3.
Isto significa que o primeiro tick de sexta-feira executará a impressão especificada no código, embora se a funçãoStringToTime() tirar a data do servidor do corretor, então tudo funcionaria como planejado, a impressão só apareceria na sexta-feira após o horário passar das21h30min.
Sim... Eu não entendi imediatamente o problema. Eu sempre tenho o local maior que o servidor e não me deparei com este problema. A única saída é levar o dia em conta e não utilizar a representação de tempo reduzido.
AlexeyVik: Sim... Não entendi o problema de imediato. Meu local é sempre maior que o servidor e eu não encontrei tal problema. A única saída é levar o dia em conta e não utilizar representação de tempo reduzido.
Bem, sim, como opção para alimentar a função com a hora certa, juntamente com a data extraída da TimeCurrent(), neste caso o problema não deve parecer ser
A propósito, meu horário local é sempre maior do que o do corretor, mas mesmo assim este problema da forma descrita acima apareceu na sexta-feira passada ao mesmo tempo em dois corretores diferentes (um demo, o segundo real). O motivo pelo qual isso aconteceu ainda é um mistério. Entretanto, o código já foi substituído por outro, portanto este problema não deve acontecer novamente
Bem, sim, como opção para alimentar a função com a hora certa, juntamente com a data extraída da TimeCurrent(), neste caso o problema não deve parecer ser
A propósito, meu horário local é sempre maior do que o do corretor, mas mesmo assim este problema da maneira descrita acima apareceu na sexta-feira passada ao mesmo tempo em dois corretores diferentes (um demo, o segundo real). O motivo pelo qual isso aconteceu ainda é um mistério. Entretanto, o código já foi substituído por outro, portanto este problema não deve acontecer novamente
Sim, há várias variantes. Por exemplo, você pode verificar a hora local na sexta-feira à noite em vez da hora do servidor. Mas nesse caso, se você estragar o tempo do computador, você pode se meter em muitos problemas.
evillive: criar uma variável inteira, atribuir a ela o número de compras e depois, mais uma vez, contar as compras e comparar com o valor dessa variável não é possível?
Você pode me dar um exemplo do código?
Após a comparação, a variável deve ser reescrita, caso contrário, o mesmo código será executado infinitamente. (digamos que era 6 e se tornou 7, preciso escrever na variável que se tornou 7 após a comparação)
Após a comparação, a variável deve ser reescrita, caso contrário, o mesmo código será executado infinitamente. (digamos que eram 6 e agora são 7, devemos escrever na variável que são 7 após a comparação).
Não se preocupe, aqui está a função de Kim que estou usando e ela funciona em todas as construções:
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает количество позиций. |//+----------------------------------------------------------------------------+int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
int i, k=OrdersTotal(), kp=0;
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) kp++;
} } } } }
return(kp);
}
//+----------------------------------------------------------------------------+
E isto é mais:
int BuyPos = NumberOfPositions(Symbol(),OP_BUY, Magic);
int SellPos = NumberOfPositions(Symbol(),OP_SELL,Magic);
Tudo o que você precisa fazer é verificar de acordo com seus objetivos:
lembrar o antigo número de byes e compará-lo com o número atual, de que outra forma?
É exatamente isso que eu não posso fazer.
criar uma variável inteira, atribuir-lhe o número de compras e depois, mais uma vez, contar as compras e comparar com o valor dessa variável não funciona?
Não há nada de errado com estes valores, todos eles estão corretos, mas não é disso que estamos falando.
O problema com a sexta-feira em particular não é relevante se sua hora local for X horas a mais do que a do seu corretor.
Mas imagine se em seu computador local não houvesse +1, mas -1 hora de diferença com o corretor.
E há esta simples condição:
Neste caso:
1. o corretor terá o primeiro tique da sexta-feira, por exemplo, o tique de hoje, que tem um horário de 2014.11.07 00:00
2. o número de segundos decorridos de01.01.1970 00:00 até o tick em questão, ou seja,2014.11.07 00: 00
3. levamos o número de segundos decorridos de 01.01.1970 00:00 até06.11.2014 21:30 (é a data de ontem, porque tomamos o horário do PC local, que no momento do tick não é sexta-feira, mas quinta-feira, que é o 6º dia, ou, para ser mais preciso, 2014.11.06 23:00, a diferença de 1 hora)
Voila, o número de segundos no ponto 2 é maior do que no ponto 3.
Isto significa que o primeiro tick de sexta-feira executará a impressão especificada no código, embora se a funçãoStringToTime() tirar a data do servidor do corretor, então tudo funcionaria como planejado, a impressão só apareceria na sexta-feira após o horário passar das21h30min.
Sim... Não entendi o problema de imediato. Meu local é sempre maior que o servidor e eu não encontrei tal problema. A única saída é levar o dia em conta e não utilizar representação de tempo reduzido.
Bem, sim, como opção para alimentar a função com a hora certa, juntamente com a data extraída da TimeCurrent(), neste caso o problema não deve parecer ser
A propósito, meu horário local é sempre maior do que o do corretor, mas mesmo assim este problema da forma descrita acima apareceu na sexta-feira passada ao mesmo tempo em dois corretores diferentes (um demo, o segundo real). O motivo pelo qual isso aconteceu ainda é um mistério. Entretanto, o código já foi substituído por outro, portanto este problema não deve acontecer novamente
Bem, sim, como opção para alimentar a função com a hora certa, juntamente com a data extraída da TimeCurrent(), neste caso o problema não deve parecer ser
A propósito, meu horário local é sempre maior do que o do corretor, mas mesmo assim este problema da maneira descrita acima apareceu na sexta-feira passada ao mesmo tempo em dois corretores diferentes (um demo, o segundo real). O motivo pelo qual isso aconteceu ainda é um mistério. Entretanto, o código já foi substituído por outro, portanto este problema não deve acontecer novamente
criar uma variável inteira, atribuir a ela o número de compras e depois, mais uma vez, contar as compras e comparar com o valor dessa variável não é possível?
Você pode me dar um exemplo do código?
Após a comparação, a variável deve ser reescrita, caso contrário, o mesmo código será executado infinitamente. (digamos que era 6 e se tornou 7, preciso escrever na variável que se tornou 7 após a comparação)
Você poderia nos dar um exemplo do código?
Após a comparação, a variável deve ser reescrita, caso contrário, o mesmo código será executado infinitamente. (digamos que eram 6 e agora são 7, devemos escrever na variável que são 7 após a comparação).
Não se preocupe, aqui está a função de Kim que estou usando e ela funciona em todas as construções:
E isto é mais:
Tudo o que você precisa fazer é verificar de acordo com seus objetivos:
if(BuyPos >= n)Não se preocupe, aqui está uma função Kim que eu uso e que funciona em todas as construções:
E isso além disso:
Tudo o que você precisa fazer é verificar de acordo com seus objetivos:
Não se preocupe, aqui está um recurso Kim que eu uso e que funciona em todas as construções:
E isso além disso:
Tudo o que você precisa fazer é verificar de acordo com seus objetivos:
Conectado. Funciona indefinidamente...
Foi capaz de resolver o problema utilizando o último método deste artigo https://www.mql5.com/ru/articles/1399