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

 
Como posso trabalhar com isto? Já faz dois dias que estou aqui sentado para nada. Que outra solução poderia existir?
 
Pergunta por favor. no manipulador OnCalculate(...), as constantes de buffer abertas, altas, baixas, fechadas, transbordamento para toda a história, um personagem de cada vez, o que devo fazer? Por exemplo, quero calcular o valor da matriz mas[i]= abrir[i] / fechar[i] para toda a história de um par e calcular a média deste valor com outro personagem. Pesquisei em muitos tópicos, não há muito similar. Você pode me dizer onde procurar?
 
Juer:
Como posso trabalhar com isto? Já faz dois dias que estou aqui sentado para nada. Que outra solução poderia existir?

E onde você mostrou um exemplo reprodutível? Você está nos dando apenas restos de código. Temos que compilá-los em código de trabalho a nosso critério? E se nós não adivinharmos e você precisar do errado?

 
Artyom Trishkin:

E onde você mostrou um exemplo reprodutível? Você só dá pedaços de código. Temos que ligá-los ao código de trabalho a nosso critério? E se nós não adivinharmos e você precisar da coisa errada?

OK, mas como fazê-lo corretamente não através de um conjunto de estruturas, mas através de uma classe CArrayObj, onde o objeto seria um objeto do tipo estrutura? Eu não entendo realmente como declarar e como acrescentar e isso é possível?

 
Juer:

OK, mas como fazê-lo corretamente não através de um conjunto de estruturas, mas através de uma classe CArrayObj, onde o objeto seria um objeto do tipo estrutura? Eu não entendo realmente como declarar e como acrescentar e isso é possível?

Tente descrever o problema em geral, não em detalhes - o que você quer obter como resultado de ter estes ou aqueles dados.

 
mwwm:
Pergunta por favor. no manipulador OnCalculate(...), as constantes de buffer abertas, altas, baixas, fechadas, transbordamento para toda a história, um personagem de cada vez, o que devo fazer? Por exemplo, quero calcular o valor da matriz mas[i]= abrir[i] / fechar[i] para toda a história de um par e calcular a média deste valor com outro personagem. Pesquisei em muitos tópicos, não há muito similar. Você pode me dizer onde procurar?
O que você quer dizer com transbordo?
 
Дед пенсионер:
o que significa transbordo?

XAUUSD,Diariamente: matriz fora de alcance em '!2019.mq4' (243,6) dá durante os cálculos via constantes emOnCalculate, e CopyOpen' - nenhuma das sobrecargas pode ser aplicada à chamada de função quando eu tento fazer assim int prices1=CopyOpen(Symbol(),0,0,0,Bars(_Symbol,_Period),open); É muito confuso organizar o acesso aos dados através de estruturas, em que ponto a OHLC toma todas as citações e depois só as novas, estou preso na iOpen(,,,,))


 
Juer:

Portanto, o acesso à matriz inválida por erro.

Não há matrizes ou cordas na estrutura. Somente bool, inteiro, duplo e enumera.

Sinto muito. Fiquei um pouco bobo. Naturalmente, terá que ser um pouco mais complicado:

bool CCandleRule::GetRulesArray(input_rule &rules_array[])
{
   int nArraySize = ArraySize(rules);
   if (ArraySize(rules_array) != nArraySize)
      if (ArrayResize(rules_array, nArraySize) != nArraySize)
         return false;

   for (int i = 0; i < nArraySize; ++i)
      rules_array[i] = rules[i];
      
   return true;
}

Não é um vetor, como em C++. É por isso que é necessária a cópia elemento por elemento. Também temos que cuidar da correspondência entre o tamanho da matriz original e a matriz de destino. É por isso que a função não entra em uma linha. E nem sempre será executado com sucesso. É por isso que precisamos devolver a confirmação de que foi executado com sucesso.

 
mwwm:

XAUUSD,Diariamente: matriz fora de alcance em '!2019.mq4' (243,6) dá durante os cálculos via constantes emOnCalculate, e CopyOpen' - nenhuma das sobrecargas pode ser aplicada à chamada de função quando eu tento fazer assim int prices1=CopyOpen(Symbol(),0,0,0,Bars(_Symbol,_Period),open); É muito confuso organizar o acesso aos dados através de estruturas, em que ponto a OHLC toma todas as citações e depois só as novas, presas na iOpen(,,,,))


Não substitui, e você está acessando um índice inexistente.
 
Artyom Trishkin:
Não se sobrepõe, e você está tratando de um índice inexistente.

e como fazer isso corretamente?

Razão: