Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 913

 
psyman:


Como posso ter certeza de que os dados são carregados?

Eu li a ajuda "Organizando o Acesso aos Dados", mas eu me pergunto se existe uma maneira simples de ter certeza.

https://www.mql5.com/ru/code/1251

há este código na ajuda do mt5

O que você quer dizer com "uma maneira fácil"? - ... É apenas uma maneira de verificar se os dados foram carregados pela mente? ))) - Você mesmo escreve tudo do zero ou usa as soluções prontas de outra pessoa, ou o primeiro ou o segundo caso requer tempo - ou para escrever e desenvolver seu próprio código ou para lidar com a solução de outra pessoa, o que é mais fácil - sua escolha

 
Igor Makanu:

https://www.mql5.com/ru/code/1251

este código está na ajuda mt5

o que você quer dizer com o caminho mais fácil? - pela força da mente? ))) - Você mesmo escreve tudo do zero ou usa a solução de outra pessoa, em ambos os casos leva tempo - ou para escrever e desenvolver seu próprio código ou para lidar com a solução de outra pessoa, o que é mais fácil - sua escolha

Obrigado pelo link, a biblioteca é uma maneira fácil :-)

É verdade, eu li comentários dizendo que em alguns casos congela.

Tanto quanto eu entendo, a tubulação assíncrona para uma cópia de um indicador é impossível. Devo esperar que ela trate sucessivamente de toda a fila para cada símbolo?

 
psyman:

Obrigado pelo link, a biblioteca é o caminho mais fácil :-)

É verdade que os comentários dizem que ele pende em alguns casos.

Tanto quanto sei, o download assíncrono de uma cópia de um indicador é impossível, devo esperar que ele recupere sucessivamente toda a fila para cada símbolo?

A biblioteca não congela

você só pode baixar o histórico em Expert Advisors, a Ajuda diz para não usar em indicadores

indicadores, mais uma vez, exemplos em KB ou nos artigos, busca por multisímbolos ou multimoedas

 

Há coisas interessantes no Mql4. Aqui está um exemplo. Suponha que haja uma função.

ArrayResize()

Tem tipo int mas pode ser chamado como uma função processual (nula) sem devolver um valor? É interessante.

 

Olá. Você pode, por favor, aconselhar como consertá-lo?

Na demonstração, o Expert Advisor não abre todas as ordens, dá erro 129 (preço errado), embora eu tenha especificado Ask/Bid no OrderSend, o slippage está com reserva. Notei que quando removo o Expert Advisor, o terminal fica suspenso por 10 segundos e exibe no log

No testador, não há erros ou soluços

Arquivos anexados:
 
Igor Makanu:

a biblioteca não congela

O histórico de download só é possível em Expert Advisors, o arquivo de ajuda diz para não usar em indicadores

indicadores, mais uma vez, exemplos em KB ou em artigos, busca por multisímbolos ou multimoedas


Aqui o autor colocou a inicialização da matriz em uma biblioteca separada, qual é o objetivo?

Функции для инициализации массивов расположим в подключаемом файле InitArrays.mqh
 
psyman:


O autor colocou a inicialização da matriz em uma biblioteca separada, qual é o objetivo disso?

Não sei, o artigo é de 2013, talvez antes fosse necessário fazer como autor do artigo, o exemplo da KB (também está na ajuda) funciona em EAs e scripts sem problemas, eu mesmo o uso - não notei nenhum problema

Se eu precisar escrever um indicador que receba dados de outro período de tempo ou símbolo, eu o encontrarei nos exemplos do autor

 
Aqui vai uma pergunta. Recebi 200 barras em meu gráfico. iBars() retornou 200 (201 barras se eu não considerar 0), apaguei 5 barras do lado direito do arquivo eo número de barras era 195 (iBars() retornou 195 barras), o gráfico ficou mais curto e então habilitei a conexão e estas 5 barras apareceram no gráfico e no arquivo de citações. Notei que quando faço isso aumenta o número de barras uma a uma e não carrega 5 de uma vez, é muito estranho, se eu pular uma seção muito grande ela contará uma barra de cada vez, então eu tenho que fazer verificações à esquerda. Como funciona o iBars(), ele retorna todas as barras de uma vez quando há uma conexão ou funciona de alguma outra forma?
 
Seric29:
Aqui vai uma pergunta. Recebi 200 barras em meu gráfico. iBars() retornou 200 (201 barras se eu não considerar 0), apaguei 5 barras do lado direito do arquivo e o número de barras era 195 (iBars() retornou 195 barras), então o gráfico ficou mais curto e então habilitei a conexão e estas 5 barras apareceram no gráfico e no arquivo de citações. Notei que quando faço isso aumenta o número de barras uma a uma e não carrega 5 de uma vez, é muito estranho, se eu pular uma seção muito grande ela contará uma barra de cada vez, então eu tenho que fazer verificações à esquerda. Como funciona o iBars(), ele retorna todas as barras de uma vez quando há uma conexão ou funciona de alguma outra forma?

Ele vai buscar os dados que faltam até que todo o ambiente esteja totalmente sincronizado. Assim que uma barra está totalmente carregada, o valor do número de barras aumentou. Você não receberá imediatamente de volta o número de barras que faltam - somente o número de dados totalmente sincronizados será devolvido.

 
Artyom Trishkin:

Há um carregamento gradual dos dados ausentes até que todo o ambiente esteja totalmente sincronizado. Assim que uma barra é totalmente carregada, o número de barras é aumentado. Você não receberá imediatamente de volta o número de barras que faltam - somente o número de dados totalmente sincronizados será devolvido.

Estou vendo, estou apenas calculando para alimentação de barras afiadas, pensei que funcionava um a um: por exemplo, faltam 5 barras, você liga a rede, ela carrega dados e gasta o tempo necessário, e então a funçãoiBars() retorna o número de barras com uma possível diferença de mais de uma. Assim, os desenvolvedores planejaram alimentar as barras uma a uma, o que simplifica a escrita do código, mas no caso de grandes seções perdidas, isso criará trabalho desnecessário para o robô. Em todos os casos, o que quer que aconteça será carregar barras uma a uma, 195, 196, 197, 198, 199, 200. Este mecanismo é confiável ou pode ser pendurado ou pode acontecer que, em vez de carregar um segmento de cada vez, ele carregue o segmento inteiro?

Razão: