Erros, bugs, perguntas - página 3029

 
Igor Makanu:

isto não deve funcionar correctamente nos indicadores:

se não me engano, na ajuda há uma quebra do script para paginação de dados para todas as TFs e deve haver um aviso de que os dados históricos não podem ser solicitados ao indicador desta forma, porque o indicador funciona de forma assíncrona

e recomenda-se usar BarsCalculated() uma vez depois de atar a pega


UPD: guião para paginação da história e explicação porque não funciona em indicadores:https://www.mql5.com/ru/docs/series/timeseries_access

Neste artigo está escrito apenas que é indesejável solicitar dados de timeseries (ou solicitar SeriesInfoInteger num laço) num indicativo


"Recordar que enviar um pedido de actualização de uma série cronológica com o mesmo período que oindicador que chama a actualização é altamente indesejável. A indesejabilidade de solicitar dados do mesmo período-símbolo, como o indicador, porque a actualização dos dados históricos é realizada no mesmo fio, em que o indicador funciona. Portanto, há uma elevada probabilidade de uma cunha".


Se nos limitarmos a solicitar SeriesInfoInteger e, em caso de falso, sair da OnCalculate, como pode a cunha ocorrer?

 

Pergunta para todos:

diz a ajuda em https://www.mql5.com/ru/docs/series/timeseries_access:

"Ao chamar funções, que copiam quaisquer dados de séries cronológicas, deve ter em mente que o parâmetro de início (número de barras, a partir do qual começar a copiar dados de preços) deve estar sempre dentro do histórico do terminal disponível. Se tivermos apenas 100 barras, não faz sentido tentar copiar 300 barras, a começar pela barra com índice 500. Este pedido será considerado como inválido e não será processado, ou seja, nenhum histórico será carregado do servidor comercial.

Que CopyTime dará -1, é claro, mas - irá iniciar o próprio processo para construir uma série temporal / paginação a partir das barras do servidor até ao 800º (500 + 300) ou não?

Por favor, aconselhar.

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Организация доступа к данным - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
mktr8591:


1. Este artigo apenas diz que é indesejável solicitar dados de timeseries (ou solicitar SeriesInfoInteger em loop) em indica


"Recordar que o envio de um pedido de actualização de uma série cronológica com o mesmo período que oindicador que causa a actualização é altamente indesejável. A indesejabilidade do pedido utilizando o mesmo período-símbolo do indicador deve-se ao facto de a actualização dos dados históricos ser realizada no mesmo fio, em que o indicador funciona. Portanto, existe uma elevada probabilidade de uma cunha".


2. Se simplesmente solicitar a SeriesInfoInteger e deixar a OnCalculate em caso de falso, como irá ocorrer a cunha?

1. Sim, porque não se pode abrandar o fio do indicador, porque pedir o estado de sincronização fará com que o histórico seja trocado, e não se pode esperar.

2. Certo. Se os dados não estiverem prontos, simplesmente sairá do oncalc e o terminal de sincronização será iniciado, mas o fluxo do indicador não será inibido. O próximo oncalc será executado completamente e sem travões apenas quando os dados estiverem prontos e o indicador solicitado estiver completamente contado. A impressão adicionada acima mostra que o indicador solicitado nem sempre está pronto, mas podemos permitir fazer uma nova barra apenas uma vez, não em cada tick para o cálculo mais rápido de todos os indicadores.

 
Andrey Dik:

Obrigado.

Ver também a minha pergunta:https://www.mql5.com/ru/forum/1111/page3028#comment_22557528

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2021.05.28
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

Andrey Dik:

ver o código acima,

conserte o seu código, adicione uma impressão

  if(SeriesInfoInteger(Symbol(), OldTF, SERIES_SYNCHRONIZED))
   {
    if(iBars(Symbol(), OldTF) != BarsCalculated(Handle))
     {
      Print("Баров ", iBars(Symbol(), OldTF));
      Print("посчитано", BarsCalculated(Handle));
      return 0;
     }
   }
  else
   {
    Print("Период ", OldTF, " не синхронизирован.");
    return 0;
   }

e quando vires as tuas baratas, enrola o teu monitor num tubo e enfia-o... sabes onde.

 
mktr8591:

Obrigado.

também, ver a minha pergunta:https://www.mql5.com/ru/forum/1111/page3028#comment_22557528

Não tenho 100% de certeza sobre isto (necessidade de verificar), uma vez que se certifique que a data solicitada é mais recente do que a primeira do histórico no servidor, pode solicitar os dados, o histórico será trocado.

 
Andrey Dik:

Não tenho 100% de certeza sobre isto (necessidade de verificar), ao certificar-se que a data solicitada é mais recente do que a primeira do histórico no servidor, os dados podem ser solicitados, o histórico será trocado.

Obrigado,

Estava a perguntar sobre o meu outro post, link novamente : https://www.mql5.com/ru/forum/1111/page3028#comment_22557528

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2021.05.28
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Alexey Viktorov:

Conserte o seu código, adicione uma impressão

e quando vires as tuas baratas, enrola o teu monitor e enfia-o... sabes onde.

Está a provar o meu ponto de vista, camarada.

 
mktr8591:

Obrigado,

Estava a perguntar sobre o meu outro post, link novamente : https://www.mql5.com/ru/forum/1111/page3028#comment_22557528

Não compreendo bem o seu código. O que deve acontecer depois de "devolver 0;" na próxima chamada para a OnCalculate?

Devolvemos 0, declarando assim que ainda não calculámos nada e a giz prévia não será incrementada em 1 na barra seguinte.

ou seja, estaremos no bar onde começámos a pedir dados ao mais velhof até ao nosso regresso(rates_total)

 
Andrey Dik:

estás a provar o meu ponto de vista, camarada.

1. Obrigado a todos - Tornei-me um pouco mais conhecedor dos indicadores ))))

2) Andrew, se alguém não compreende as suas ideias (incluindo eu), isso significa apenas uma coisa - você não desenha o quadro correctamente! Mais precisamente - desenha-se de tal forma, que muitas pessoas não o entendem ...