[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 212

 
É possível contar o número de barras depois de TODAS as travessias de MA, depois da última que funciona, mas depois de TODAS as travessias não funciona, alguém sabe como fazer?
 
MK07:
Se quisermos verificar o número de barras depois de TODAS as travessas MAIS, podemos calcular o número de barras depois da última, mas não depois de TODAS as travessas.

Depende do que você precisa para isso. Para um algoritmo EA um, para um indicador - outro.

Geralmente, aproximadamente da seguinte forma: vamos criar uma variável na qual armazenaremos o número de travessias. Você pode criar duas variáveis - para cima e para baixo, por exemplo Intersection_UP eIntersection_DN.

Antes do loop, nós os inicializamos com zeros.

Criar laço desde a primeira barra até Barras: for (int i=1; i<Bars; i++) { // corpo do laço onde contamos as interseções ... }.

Em cada cruzamento na barra i ma1 de baixo para cima ma2 aumenta Intersecção_UP, em cada cruzamento na barra i ma1 de cima para baixo ma2 aumenta Intersecção_DN.

No final do ciclo temos em duas variáveis o número de cruzamentos para cima e para baixo. Some-os para obter o número total de interseções

 
MK07:
É possível contar o número de barras depois de TODAS as travessias de MA, depois da última que funciona, mas depois de TODAS as travessias não funciona, alguém sabe como fazer?

É simples. Você conserta o crossover, e cria um contador. Quando há um crossover, o contador adiciona 1 barra por crossover. Quando há um crossover, outro contador começa a contar.
 
alsu:

Não nos entendemos, aparentemente

Em geral, a localização do problema é definida - a variável estática.

Mas por que uma função com esta variável compilada no mesmo arquivo com o indicador funciona sem problemas (a reinicialização é bem sucedida e tudo funciona bem), mas quando dirijo a mesma função colocada na biblioteca, tenho problemas?

Talvez haja algumas restrições quanto ao uso de certos tipos nas funções da biblioteca?

 
Olá?
 
polycomp:

Em geral, a localização do problema é definida - a variável estática.

Mas por que a função com esta variável, compilada no mesmo arquivo com o indicador, funciona sem problemas (a reinicialização é bem sucedida e tudo funciona bem), mas quando eu trato da mesma função, colocada na biblioteca, há problemas?

Talvez haja algumas restrições quanto ao uso de certos tipos nas funções da biblioteca?



Não sou um desenvolvedor e só posso fazer suposições. Portanto, presumo que ao reinicializar após a alteração dos parâmetros ex4 não é descarregado da memória e, portanto, em um novo começo, obtemos a mesma cópia da biblioteca como antes, com todas as estáticas e seus valores antigos.

Em idéia, todas as estáticas do programa devem ser inicializadas antes de chamar o init(). Mas a biblioteca do ex4 só é carregada imediatamente no momento da primeira chamada da função da biblioteca, de modo que nenhuma estática da biblioteca chegue à pilha comum.

Olhando para tudo desta maneira, a explicação é bastante lógica.

 

Aqui está a funçãoStringGetChar https://docs.mql4.com/ru/objects/ObjectFind

Por que ela é necessária?

De acordo com o livro didático, ele retorna o valor de um personagem como um número. Aí,"c" corresponde ao valor 99. Como posso entender isso? Que uso tem esta função?

Assim, devolve um número... ...e o que ele faz?

Eu quero aprender a trabalhar com cordas, por isso me deparei com esta função. É por isso que estou perguntando.

 
alsu:

Não sou um desenvolvedor e só posso especular. Portanto, presumo que durante a reinicialização após as mudanças de parâmetros, o ex4 não é descarregado da memória, portanto, em um novo começo, obtemos a mesma cópia da biblioteca que antes, com todas as estáticas e seus valores antigos.

Em idéia, todas as estáticas do programa devem ser inicializadas antes de chamar o init(). Mas a biblioteca do ex4 só é carregada imediatamente no momento da primeira chamada da função da biblioteca, de modo que nenhuma estática da biblioteca chegue à pilha comum.

Olhando para tudo desta maneira, a explicação é bastante lógica.


Obrigado pelo esclarecimento! Parece que é melhor não usar estática em bibliotecas.
 

Tenho em minha cabeça um conjunto de 3000 valores do mesmo tipo.

Mas eu não entendo bem como inicializar uma matriz unidimensional com estes valores.

Eu não entendo - devo especificar todos os 3000 valores separados por vírgula no operador de atribuição ao inicializar uma matriz

int Mas_i[3000]= {(Licitação>1.2153)&&(Licitação<1.2160) , (Licitação>1.2156)&&(Licitação<1.2163) ...preciso realmente listar todas as 3000 expressões?}

Por favor, me dê uma dica ou me diga onde ler. Não consigo encontrar uma resposta para esta pergunta no livro do S.Kovalev..... ou não a entendo.

Obrigado.

 
hoz:

Aqui está a funçãoStringGetChar https://docs.mql4.com/ru/objects/ObjectFind

Por que ela é necessária?

De acordo com o livro didático, ele retorna o valor de um personagem como um número. Aí,"c" corresponde ao valor 99. Como posso entender isso? Que uso tem esta função?

Assim, devolve um número... ...e o que ele faz?

Eu quero aprender a trabalhar com cordas, por isso me deparei com esta função. É por isso que estou perguntando.


Para escrever no gráfico (não confundir com o comentário) deve codificar um código numérico. Você escreve 99, a letra "s" aparecerá no gráfico. Eu ainda não o fiz, mas você pode encontrar como fazer tudo isso no Dock, e com que fonte, tamanho, orientação dos eixos X e Y em pixels, etc. Se isso já é tudo o que lhe falta, vá em frente, mas vai levar muito tempo! Boa sorte!
Razão: