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
Olá oneillj,
Pensei que já tinha respondido, mas parece ter desaparecido no éter da internet.
O fragmento de código que você forneceu é praticamente aquele de que eu estava reclamando em primeiro lugar. Por que é tão complexo? Achei que tinha que haver uma maneira mais fácil. Eu inventei esta, que parece funcionar. Por favor, me corrija se eu estiver errado. (Eu também tentei usar BarsCalculated, mas sempre foi igual a Bars, então o teste sempre foi avaliado como falso).
estático no LastBarCount = 0;
;-) ;-) Ianse (Bars(_Símbolo, _Periodo) > LastBarCount)
LastBarCount = Bars(_Symbol, _Period);
mais
retornar;
Concordo plenamente que precisamos de algo tão simples quanto possível.
Infelizmente, este código não parece funcionar para mim na MQL5.
Infelizmente, isto não parece funcionar na MQL5.
Os bares seriam uma má maneira de detectar um novo bar de qualquer maneira.
A única maneira confiável de verificar a existência de um novo bar é usando o tempo. Não volume, não preços, não barras.
datetime ThisBar = (datetime)SeriesInfoInteger(_Symbol,PERIOD_CURRENT,SERIES_LASTBAR_DATE);
if(LastBar != ThisBar)
{
printf("New bar: %s",TimeToString(ThisBar));
LastBar = ThisBar;
}
Os bares seriam uma má maneira de detectar um novo bar de qualquer maneira.
A única maneira confiável de verificar a existência de um novo bar é usando o tempo. Não volume, não preços, não barras.
datetime ThisBar = (datetime)SeriesInfoInteger(_Symbol,PERIOD_CURRENT,SERIES_LASTBAR_DATE);
if(LastBar != ThisBar)
{
printf("New bar: %s",TimeToString(ThisBar));
LastBar = ThisBar;
}
Os bares seriam uma má maneira de detectar um novo bar de qualquer maneira.
A única maneira confiável de verificar a existência de um novo bar é usando o tempo. Não volume, não preços, não barras.
datetime ThisBar = (datetime)SeriesInfoInteger(_Symbol,PERIOD_CURRENT,SERIES_LASTBAR_DATE);
if(LastBar != ThisBar)
{
printf("New bar: %s",TimeToString(ThisBar));
LastBar = ThisBar;
}
Apenas para informação, tenho a seguinte nota em minhas referências :
//-- Às vezes a série InfoInteger com SERIES_LASTBAR_DATE retorna um erro,
Isso foi há muito tempo e eu não estou usando/testando essa função há anos, então talvez não seja mais o caso. Mas se você quiser usá-la para detectar uma nova barra, provavelmente é melhor verificá-la ;-)
Apenas para informação, tenho a seguinte nota em minhas referências :
//-- Às vezes a série InfoInteger com SERIES_LASTBAR_DATE retorna um erro,
Isso foi há muito tempo e eu não estou usando/testando essa função há anos, então talvez não seja mais o caso. Mas se você quiser usá-la para detectar uma nova barra, provavelmente é melhor verificá-la ;-)
Isso é muito críptico, Alain! Que tipo de erros?
Nesse caso, para as correias, verifique SeriesInfoInteger >0 e/ou ResetLastError antes da chamada e depois verifique _LastError após a chamada.
Ou obtenha a fonte de tempo para algum outro lugar, por exemplo, tempo[] se em OnCalculate, ou CopyTime etc etc.
Por que não simplesmente usar algo como isto :
datetime lastTime[1];
if (CopyTime(_Symbol,_Period,0,1,lastTime)==1 && prevTime!=lastTime[0])
{
prevTime=lastTime[0];
// ...
}
Isso é muito críptico, Alain! Que tipo de erros?
Nesse caso, para as correias, verifique SeriesInfoInteger >0 e/ou ResetLastError antes da chamada e, em seguida, verifique _LastError após a chamada.
Ou obtenha a fonte de tempo para algum outro lugar, por exemplo, tempo[] se em OnCalculate, ou CopyTime etc etc.
Estou apenas dizendo que quando o usei há anos atrás, o SeriesInfoInteger() não era realmente confiável. Até você para ver o que você faz com estas informações :-D
Não muito TBH - não preciso detectar um novo bar no MT5 Mas obrigado por compartilhar - vou ter isso em mente para o futuro.
Eu estava apenas tentando simplificar algo que as pessoas pareciam estar tornando excessivamente complicado.
No entanto, o princípio permanece: usar o tempo. Caveat: escolha seu método de obter tempo em seu próprio risco, tendo em conta as notas históricas incompletas de Alain (a propósito, como está o XP Service Pack 1?)
Não muito TBH - não preciso detectar um novo bar no MT5, mas obrigado por compartilhar - vou ter isso em mente para o futuro.
Eu estava apenas tentando simplificar algo que as pessoas pareciam estar tornando excessivamente complicado.
No entanto, o princípio permanece: usar o tempo. Caveat: escolha seu método para obter tempo em seu próprio risco, tendo em conta as notas históricas incompletas de Alain (a propósito, como está o XP Service Pack 1?)