[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 89

 
keep87:
não é possível

é possível)))

Por exemplo, você poderia fazer a EA carregar a matriz em variáveis globais do terminal e depois lê-la a partir daí.

 
alsu:
Decida o que você quer que a saída seja. Se o valor da máquina for 5 barras para trás, então

ou idênticos

Em caso afirmativo,

será sempre VAZIO_VALOR, pois não há nenhum pulso deslocado nestas barras

Entendi, obrigado!
 
alsu:
O melhor de tudo é não se preocupar com os turnos na EA, basta pegar o turno 0 e o número da barra que você quer.
Verifiquei com o testador agora, acontece que o comércio abre 5 velas depois de cruzar as médias móveis, e não é esse o caso... Eu descobri o que você pode fazer, mova as outras velas MA 5 para frente, então o sinal está correto...)
 
ierehon:
Verifiquei agora com o testador, acontece que o comércio abre 5 velas depois que as médias móveis se cruzaram, e isso não é a mesma coisa... Descobri o que fazer, mover outras velas MA 5 para frente, então o sinal está correto...)

é a mesma coisa))

barra zero da MA deslocada por 5 barras à direita = 5ª barra da MA não deslocada

 
keep87:
não pode. É possível pontuar manualmente dados de array para array dentro da EA se não mudar de otimização para otimização, para a época de testes.
Mas neste caso, MT terá que ler a matriz do arquivo cada vez(?), mas não de uma matriz separada, mas do código.
- Haverá algum ganho neste caso?
 
alsu:

é possível)))

Por exemplo, você poderia fazer o Expert Advisor carregar a matriz nas variáveis globais do terminal e depois ler a partir daí.

Os elementos da matriz podem ser de várias dezenas a várias centenas e para cada variável devem ser declarados de antemão.
Será bastante difícil de implementar (é claro, a tarefa também não é trivial).
 
chief2000:
Os elementos de matriz podem ser de várias dezenas a várias centenas, e uma variável deve ser declarada para cada um deles com antecedência.
É um pouco complicado de implementar (é claro, a tarefa também não é trivial).

E daí? Manuseie as variáveis no laço da mesma forma que você manipularia os elementos da matriz. Exemplo de uso:

double a[];
int n;

...
ArrayResize(a,n);
...

//запись массива в глобальные переменные

string name;
for(i=0;i<n;i++)
{
   name = StringConcatenate("__ARRAY_",i);
   GlobalVariableSet(name,a[i]);
}

//чтение в массив из глобальных

int gv = GlobalVariablesTotal();
int index;

for(i=0;i<gv;i++)
{
   name = GlobalVariableName(i);
   if(StringFind(name,"__ARRAY_")==0)
   {
      index = StrToInteger(StringSubstr(name,8));
      if(index>=0&&index<n) a[index]=GlobalVariableGet(name);
      
      //опционально - если хотим очистить список
      //GlobalVariableDel(name);
   }
}


não poderia ser mais simples))

 
alsu:

E daí? Manuseie as variáveis no laço da mesma forma que você manipularia os elementos da matriz. Exemplo de uso:

não poderia ser mais simples))

Em minha memória, trabalhei com algumas milhares de variáveis desta forma, e não notei nenhuma desaceleração. Para quantidades maiores (centenas de milhares de itens ou mais), eu geralmente tento usar o MySQL.
 
alsu:
Em minha memória, trabalhei desta forma com algumas milhares de variáveis, e não encontrei nenhum atraso. Para quantidades maiores (centenas de milhares de itens ou mais), eu geralmente tento usar o MySQL.
MUITO OBRIGADO!
 

Você pode me aconselhar, há um arquivo csv com dados no formato 1.33027; 1.33023 e assim por diante.

Então leia este arquivo, mas por alguma razão os dados são lidos com uma precisão de 4 dígitos e eu preciso ler com 5.

Ler de diferentes maneiras e

FileReadString и FileReadDouble и FileReadInteger

não ajuda

Razão: