[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 60

 
TheXpert >> :

Lembrado! Uma peculiaridade da implementação de cordas. Depois que a matriz for redimensionada, ela tem que ser percorrida e zerada:

Eu poderia estar errado, mas isso deveria ajudar.

Obrigado pela resposta. Tentei, mas infelizmente não ajudou. O zeramento age antes de começarmos a fazer algo com a matriz. E a zeragem é feita através da atribuição explícita do VALOR da string, enquanto que no caso que apontei, os elementos da array são atribuídos ao resultado da função (que deve retornar VALOR do tipo string) mas na verdade retorna uma REFERÊNCIA ao endereço da string na memória, o que acredito ser incorreto. E o resultado com valores idênticos é porque a função é chamada várias vezes seguidas e depois de cada chamada a próxima utiliza de fato a mesma memória, colocando novos dados. Se fizermos qualquer manipulação entre chamadas (chamadas de qualquer f-ion, declaração de variáveis, etc.), o resultado provavelmente será ainda pior, ou seja, valores em elementos de string array apontarão para o lixo na memória.


Gostaria que os desenvolvedores do mql4 comentassem esta situação e explicassem a forma correta de trabalhar com matrizes de cordas, se possível.

 
xruss писал(а) >>
existe algum tipo de erro?

A última ordem fechada do histórico é selecionada e seu tipo é atribuído à variável ORDtype antes que o sinal para abrir seja gerado. Isto é, se a história não estiver vazia, então o tipo ORD obviamente não será igual a -1. Portanto, a condição para que o sinal apareça não é cumprida, uma vez que

if ((ORDtype==-1)&&(...))

 
Everlost >> :

A última ordem fechada do histórico é selecionada e seu tipo é atribuído à variável ORDtype antes que o sinal de abertura seja gerado. Isto é, se a história não estiver vazia, então o tipo ORD obviamente não será igual a -1. Portanto, a condição de ocorrência do sinal não é cumprida, uma vez que

if ((ORDtype==-1)&&(...))

E mais um problema - as posições não são abertas mesmo que a história esteja vazia ((

 
Yug >> :

Obrigado pela resposta. Tentei, mas infelizmente não ajudou. O zeramento funciona antes de começarmos a fazer qualquer coisa com a matriz. E a zeragem é feita através da atribuição explícita de VALOR da string, enquanto que no caso que apontei, os elementos da array são atribuídos ao resultado da função (que deve retornar VALOR do tipo string), mas na verdade retorna uma REFERÊNCIA ao endereço da string na memória, o que eu acredito ser incorreto. E o resultado com valores idênticos é porque a função é chamada várias vezes seguidas e depois de cada chamada a próxima utiliza de fato a mesma memória, colocando novos dados. Se você fizer qualquer manipulação entre chamadas (chamadas de qualquer tipo, declaração de variáveis, etc.), o resultado provavelmente será ainda pior, ou seja, valores em elementos de string array apontarão para o lixo na memória.


Estou pedindo aos desenvolvedores do mql4 que comentem sobre esta situação se possível e expliquem como trabalhar corretamente com matrizes de cordas.

Tente desta forma:

string tmp = func();
array[0] = tmp;

Uma horta, é claro, mas deve funcionar...

 

O que significa MT4 no testador -Optimização, onde eu faço o tick? Qual é esta função? Ela ajusta a EA a algumas configurações específicas (padrão) ou mostra em que período (TF) ela funciona melhor?

 
rafex >> :

O que significa MT4 no testador -Optimização, onde eu faço o tick? Qual é esta função? Ela ajusta a EA a algumas configurações específicas (padrão) ou mostra em que prazo (TF) ela funciona melhor?

Esta caixa de seleção só pode ser tocada após pressionar F1 e estudar cuidadosamente a seção "Autotrading".

 
komposter >> :

Tente desta forma:

Uma horta, é claro, mas deve funcionar...

Eu tentei anteontem. O resultado é o mesmo. Na verdade, a referência é copiada primeiro para a str str, e depois a mesma referência é copiada para um elemento de matriz :(

 
Yug >> :

Eu tentei anteontem. O resultado é o mesmo. Na verdade, a referência é primeiro copiada para a string temporária e depois a mesma é copiada para o elemento de matriz :(

Declarar a seqüência de retorno como estática na função, somente então a inicialização deve ser feita após a declaração.

 
Caros especialistas, por favor, não ignorem minha pergunta.

Existe um indicador que conta a volatilidade, por exemplo, diariamente. Mas não aquele que dá um número indefinido, como 0,34. Mas ele deve calcular o número de castiçais por dia e dividi-lo por um determinado período (número de dias) para que o indicador conheça o valor médio. Exemplo: abertura 100, fechamento 200; o segundo dia - abertura 200, fechamento 250. Volatilidade média para estes 2 dias = ((200-100)+(250-200))/2 dias=(100+50)/2=75
Onde fazer o download, se disponível.
 
TheXpert >> :

Declarar a cadeia de retorno como estática na função, mas então a inicialização deve ser feita após a declaração.

Eu também experimentei esta variante. O resultado é o mesmo, ou seja, a referência de memória é devolvida em vez do valor.

Razão: