Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 935

 
Boa hora a todos! Esta pergunta: é possível mudar a indexação dos elementos da matriz por 1 unidade sem criar mais uma matriz e elemento por elemento similar copiando informações da primeira matriz (e depois de volta) para ela? De fato, no MT4 isso é de alguma forma feito em matrizes de série temporal (quando uma nova barra é formada, o índice 0 é atribuído a ela, e os índices de todos os elementos anteriores da matriz são deslocados por 1 unidade).
 
FxRoller:
Bom dia a todos! Esta pergunta: é possível mudar a indexação dos elementos da matriz por 1 unidade sem criar mais uma matriz como esta e elemento por elemento, copiando informações da primeira matriz (e depois de volta) para ela? De fato, no MT4 isso é de alguma forma feito em matrizes de série temporal (quando uma nova barra é formada, o índice 0 é atribuído a ela, e os índices de todos os elementos anteriores da matriz são deslocados por 1 unidade).

Eu junto a pergunta: seria conveniente usar a função embutida para deslocar a dimensão N da matriz por elementos M para a direita ou para a esquerda.

Tanto quanto eu sei, por enquanto é preciso mudar por um loop, definindo o tamanho da matriz. É mais difícil usar o dinâmico (+dados não se perdem).

 
kosmos0975:

Eu junto a pergunta: seria conveniente usar a função embutida para deslocar a dimensão N da matriz por elementos M para a direita ou para a esquerda.

Tanto quanto eu sei, por enquanto é preciso mudar por um loop, definindo o tamanho da matriz. Mais difícil de usar dinâmico(+dados não são perdidos).

O SetIndexShift() não ajuda?

Define o deslocamento da linha indicadora em relação ao início do gráfico.

voidSetIndexShift(
intindex,// número
int shift// shift
);

Parâmetros

índice

[O número de índice da linha. Deve ser de 0 a 7.

turno

[em] Valor do deslocamento em barras.

Valor retornado

Não.

Nota

Um valor positivo desloca a imagem da linha para a direita, um valor negativo a desloca para a esquerda. O valor calculado na barra de corrente é traçado com o deslocamento especificado em relação à barra de corrente.

Exemplo:

 

Você também pode copiar um array para si mesmo com um offset.

int  ArrayCopy(
   void&        dst_array[],         // куда копируем                           // сюда, понятно имя массива
   const void&  src_array[],         // откуда копируем                         // сюда тоже его
   int          dst_start=0,         // с какого индекса пишем в приемник       // сюда 0
   int          src_start=0,         // с какого индекса копируем из источника  // сюда, например с первого, значит 1
   int          count=WHOLE_ARRAY    // сколько элементов                       // сюда размерность массива минус 1
   );

Assim, a matriz será copiada para si mesma com um offset de 1 elemento. Zero será descartado, e o último estará vazio. Pelo contrário, jogando fora o último elemento, eu não tentei, mas acho que você pode definir corretamente os três últimos parâmetros da função.

 
AlexeyVik:

Você também pode copiar um array para si mesmo com um offset.

Assim, a matriz será copiada para si mesma com um offset de 1 elemento. Zero será descartado, e o último estará vazio. Ao contrário, jogando fora o último elemento, eu não tentei, mas acho que os três últimos parâmetros da função podem ser definidos corretamente.


Ainda não tentei, mas pode ser útil mudar a direção da indexação.

P.S. Eu tenho algumas perguntas sobre o testador de estratégia. Você pode ajudar?

 
kosmos0975:

Ainda não tentei, mas uma mudança na direção da indexação pode vir a ser útil.

P.S. Há perguntas sobre o testador de estratégia. Você pode ajudar?

Você pretende mudar a direção de indexação após copiar um array em si mesmo? É necessário? Penso que não haverá problema em copiar do índice zero sem o último e colar do primeiro, enquanto o zero permanecerá vazio ou o valor antigo, não importa, porque este procedimento é necessário não apenas para copiar, mas especificamente para substituir um dos valores do array (zero ou último) por um novo. De forma correspondente, após tal cópia, o elemento "vago" é preenchido com o novo valor. E não importa o que sobrou nele.

No testador, se eu puder - eu ajudarei. Mas aqui há mais dignos que podem sugerir.

 

Os sinais de controle e o controle das posições abertas são realizados pelo indicador. Comandos para abertura e fechamento de posições são enviados ao Expert Advisor através das variáveis globais do terminal.

O uso de indicadores é conveniente porque há muitos indicadores, e você pode ver o trabalho de vários blocos lógicos ao mesmo tempo.

Pergunta. No testador de estratégia, o indicador pode trabalhar com a função OrderSelect(),OrderTotal(), etc.

 
AlexeyVik:

Você pretende reverter a direção da indexação após copiar o array em si mesmo? Isso é realmente necessário? Penso que não haverá problema em copiar do índice zero sem o último e colar do primeiro, enquanto o zero permanecerá vazio ou o valor antigo, não importa, porque este procedimento é necessário não apenas para copiar, mas especificamente para substituir um dos valores do array (zero ou último) por um novo. De forma correspondente, após tal cópia, o elemento "vago" é preenchido com o novo valor. E não importa o que sobrou nele.

No testador, se eu puder - eu ajudarei. Mas aqui há mais dignos que podem sugerir.

Antes da cópia e depois.
 
Não verificado, mas o que o impede de verificá-lo você mesmo? Você só precisa salvar o modelo com todos os indicadores sob o nome EA e então quando você iniciar a EA no testador, todos os indicadores serão carregados e provavelmente funcionarão corretamente. Mas é possível que eles tirem valores das guias "Comércio" e "Histórico da conta".
 
kosmos0975:
Antes da cópia e depois.
Por que coçar a orelha direita com o dedo da mão esquerda? Ou pé... Eu disse apenas que a segunda opção, por falta de necessidade, não foi testada. Mas logicamente funcionaria sem nenhum problema.