![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
TimeCurrent() é apenas um caso especial que eu peguei.
Agora leio esta nota para a função Bars() com mais atenção:
"Ao solicitar o número de barras num determinado intervalo de datas , só são tidas em conta as barras cujo tempo de abertura se encontre dentro desse intervalo. Por exemplo, se o dia actual da semana for sábado, ao solicitar o número de bares semanais com start_time=lastTuesday e stop_time=lastFriday, a função retorna 0 porque a hora de abertura do horário semanal cai sempre ao domingo e nenhum bar semanal se enquadra no intervalo especificado".
Uma vez que TimeCurrent() é quase sempre posterior à hora de abertura da barra actual, então a função Bars() retorna 0. Assim, se passarmos o tempo correspondente a 02:05 no horário horário como o parâmetro start_time , e quisermos que a barra que começou às 2 horas seja válida, então temos de obter a hora de abertura da barra (02:00:00) através de CopyTime() . Caso contrário, a função Bars() irá ignorar esta barra.
Ou seja, se a hora for 3:30, entendo que a hora 2:05 no horário se refere à barra com índice 1. Nenhuma das funções na 2ª página devolverá este índice. Com esta correcção, a função de Renat Akhtyamov devolveu o que eu esperava.
Estou a anexar um guião, com 4 opções para funções de pesquisa de índice, que utilizei como teste.
Tentada a função apresentada, verifica-se que se encontra por uma barra, se pedir uma barra com um tempo que não está no gráfico. Isto é, se quisermos saber a primeira barra do dia, e perguntar a hora "28.03.2018 00:00". mas não há barra com esse tempo, vamos obter o índice da última barra do dia anterior.
Ou era para ser assim?
Tentei a função apresentada e acontece que ela se encontra por uma barra, se for solicitada uma barra com um tempo que não está no gráfico. Isto é, se quisermos saber a primeira barra do dia, e perguntar pela hora "28.03.2018 00:00". mas não há barra com esse tempo, vamos obter o índice da última barra do dia anterior.
Ou era para ser assim?
Como se passa o tempo, por fio?
Tentei ambas com uma corda e como no código anteriormente publicado.
Experimentei-o tanto com uma corda como como no código anteriormente publicado.
no seu código.
é por isso que não é bem claro se há falso
e se assim for:
?Até ao momento, já me decidi sobre este código, parece funcionar rapidamente:
Alguém identificou alguma desvantagem neste código, ou existe uma opção mais rápida?
Ah, bem, a única desvantagem é se fizer um pedido de barra que ainda não está no gráfico, ou seja, com o tempo de hoje, por exemplo, ...... talvez haja também uma solução para isso? Aqui só faria sentido devolver o último bar conhecido. Isto pode ser relevante para trabalhar com algoritmos que funcionam com a hora actual.
ele tem o mesmo.
por isso a presença de falso não é muito clara
falso - para padronização, não afecta nada :) Para ser honesto, não sei de todo porque é que esta falsidade em algumas funções é necessária?
Até ao momento, já me decidi sobre este código, parece funcionar rapidamente:
Alguém identificou alguma desvantagem neste código, ou existe uma opção mais rápida?
Ah, bem, a única desvantagem é se fizer um pedido de barra que ainda não está no gráfico, ou seja, com o tempo de hoje, por exemplo, ...... talvez haja também uma solução para isso? Aqui só faria sentido devolver o último bar conhecido. Isto pode ser relevante para trabalhar com algoritmos que funcionam com a hora actual.
devolver um número de barras que não existe não é bom
é mais fácil de regressar -1
falso - para a normalização, não afecta nada :) Para ser honesto, não sei de todo porque é que esta falsidade em algumas funções é necessária?
devolver um número de bar que não existe não é bom
é mais fácil de regressar -1
Não, deve apenas devolver a última barra conhecida, ou seja, com índice 0, mas agora leva muito tempo a descobrir o que lá voltar.
Aqui está o código, que está errado por uma barra, devolve a barra correcta - zero.
Ou quer dizer quando a história pede um bar por tempo que não existe? Depois penso que, na maioria das vezes, é necessário obter a barra mais próxima do nosso tempo das que estão disponíveis, e o código retorna neste caso barra com offset -1 na história, mas funciona correctamente, se não houver mais história - retorna rapidamente barra zero.
Não, deve apenas devolver a última barra conhecida, ou seja, com índice 0, mas agora leva muito tempo a descobrir o que lá voltar.
O código, que está errado por uma barra, devolve a barra correcta - zero.
Ou quer dizer quando a história pede um bar por tempo que não existe? Então penso que na maioria das vezes devemos obter a barra que está mais próxima do nosso tempo das que estão disponíveis, e o código retorna neste caso barra com offset -1 na história, mas funciona correctamente se não houver mais história - retorna rapidamente barra zero.
-1 é um menos (esclareço) e o erro devolvido pela função é que não existe tal barra
Ou seja, a minha função.
Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos
Analógico do iBarShift
Renat Akhtyamov, 2017.06.08 01:19
Isto também é possível
também requer melhorias
embora...
Documentação:
"Nota.
Se os dados das séries de tempos com os parâmetros especificados ao chamar a função Bars() ainda não tiverem sido gerados no terminal, ou se os dados das séries de tempos não estiverem sincronizados com o servidor de comércio no momento da chamada da função, então a função retornará o valor zero. "
====
Se res==0, apanharemos -1 da função tal como ela é.
===
Portanto, tudo funciona, use-o a seu gosto!