[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 23

 
TarasBY:

1°: sua filosofia de mudar o tamanho da matriz é defeituosa desde o início, você pode fazer com 10 células para processar leituras indicadoras em 99 de cada 100 casos;

2º: recalcular estas leituras em cada carrapato é um capricho de um cérebro desinformado.


Igor, ou você começa a dar conselhos sensatos sobre como sair da situação, ou não poste de forma alguma.
 

Rudimentar, mas direto ao ponto) Depois de experimentar, percebi que os dados sobre o número de pontos podem ser resumidos em uma célula. Isto é suficiente.

 
FAQ: Igor, ou você começa a dar conselhos sensatos sobre como sair da situação, ou não poste de forma alguma.
Vou traduzir o que eu estava dizendo em "conselho sadio" - o homem está indo em direção a um beco sem saída.
 

Portanto, aponte-o na direção certa, não apenas declarando o fato de um impasse.

Este é um fio...

 
Fox_RM: Rudimentar, mas direto ao ponto) Depois de experimentar, percebi que os dados sobre o número de pontos podem ser resumidos em uma célula. Isto é suficiente.
Sem o menor pensamento de ofender ou insultar.
 

Está tudo bem! Ajudar as pessoas neste fórum é inestimável! Há um ou dois meses atrás eu não sabia como trabalhar com arrays)

 
Fox_RM:

Se a matriz for heterogênea, você provavelmente deve converter todos os elementos em tipo string e depois procurar o necessário usando

StringFinde(https://www.mql5.com/ru/forum/138609/page22#613148). Corrija-me se eu estiver errado.


Obrigado. Encontrei a função.

Eu simplesmente não entendo como usá-lo corretamente.

Retorna apenas um lugar em cadeia onde a parte procurada começa, mas não uma parte.

Preciso de uma parte de um fio.

 
Snegovik:


Obrigado. Encontrei a função.

Só ainda não descobri como utilizá-lo corretamente.

Ele só retorna o lugar na corda onde começa a parte procurada. mas não a parte.

Eu preciso de uma parte do cordão.

StringSubstr().
 
TarasBY:
StringSubstr ().


Exatamente o que eu preciso.

Muito obrigado.

 

Boa noite a todos!

O problema: não consigo descobrir como usar a função para encontrar o ponto de interseção de duas linhas (tentei a função de Kim também, mas o resultado é o mesmo).

A questão é que o crossover é ocasionalmente detectado no lugar errado.

Eis o que acontece:


A linha horizontal vermelha é o nível de preço calculado pela função. O amarelo é um nível que deveria ser.

O que é interessante, este bug nem sempre acontece: muitas vezes a intersecção é definida como deveria ser...

Abaixo estou colando o código da função.

//+----------------------------------------------------------------------------+
void Middle(string nm1,string nm2)
  {
  //double M;
  double x1, x2, x3, x4;
  double y1, y2, y3, y4;
  double k1, k3;
  
  if(ObjectFind(nm1)==0 && ObjectFind(nm2)==0)
    {
    y1=ObjectGet(nm1, OBJPROP_PRICE1);
    y2=ObjectGet(nm1, OBJPROP_PRICE2);
    x1=ObjectGet(nm1, OBJPROP_TIME1);
    x2=ObjectGet(nm1, OBJPROP_TIME2);
    
    y3=ObjectGet(nm2, OBJPROP_PRICE1);
    y4=ObjectGet(nm2, OBJPROP_PRICE2);
    x3=ObjectGet(nm2, OBJPROP_TIME1);
    x4=ObjectGet(nm2, OBJPROP_TIME2);
    
    k1=(y2-y1)/(x2-x1); 
    k3=(y4-y3)/(x4-x3);
    
    if(k1 != k3)
      {
      T = (y1 - y3 + k3*x3 - k1*x1)/(k3 - k1);
      M = y1 + k1*(T - x1);
      Tt = T;
      }
    }
  return(0);
  }
//+----------------------------------------------------------------------------+

O trailer contém um Expert Advisor para testá-lo.

Por favor, avise o que estou fazendo de errado!

Muito obrigado de antemão)

Arquivos anexados:
proba_per.mq4  11 kb