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

 

Por que eu copiei incorretamente os preços de fechamento de um determinado tempo com uma determinada quantidade. MQL5

copied = CopyClose(_Symbol,PERIOD_H4,Time[59],5,MPI); Alert(copied);
  for(int i = 0; i < 100; i++)
    {
     Alert(MPI[i]);
    };
 
Alexandr Sokolov:

Por que eu copiei incorretamente os preços de fechamento de um determinado tempo com uma determinada quantidade. MQL5

Onde em mql5 você encontrou o Time[] ou é uma matriz personalizada?

 
Alexey Viktorov:

E onde em mql5 você encontrou o Time[] ou é uma matriz personalizada?

Sim, é uma matriz personalizada, na qual eu copiei os horários de abertura das barras do período de tempo em que o indicador está localizado. Ou como especificar a data (especialmente considerando que no futuro ela terá que ser combinada de várias maneiras)?

 
Alexandr Sokolov:

Sim, é uma matriz personalizada, na qual eu copiei os horários de abertura das barras do período de tempo em que o indicador está localizado. Ou como especificar a data (especialmente porque no futuro ela terá que ser combinada de várias maneiras)?

Sim, há algo errado em copiar o TF de "outra pessoa". Iniciei um indicador para várias edições e notei que o CopyRates() não é imediatamente copiado. Aparentemente, isso se deve a dados não preparados por período. A simples recompilação conserta a situação. Acontece que devemos "puxar" o período primeiro, e depois copiar. Mas ainda não cheguei a esse ponto. Vou verificar isso amanhã. Mas espero que eu esteja certo.

E um quebra-cabeça para mim: por que copiar os horários de abertura das barras naquela janela de tempo da qual o indicador está localizado, se o tempo[] pode ser usado em seu lugar. E não devemos esquecer a direção da indexação.

 
Alexey Viktorov:

E uma pergunta rápida: por que copiar o tempo aberto das barras na janela de tempo da qual o indicador está localizado, se o tempo[] pode ser usado em seu lugar. E não se esqueça da direção da indexação.

O tempo é usado fora da OnCalculate. Direção de indexação ArraySetAsSeries(...,verdadeiro) em todos os amortecedores


Para que serve? - Eu fiz um indicador de tendência (postado em CodeBase), é "barulhento". Eu fiz uma desaceleração - não o suficiente. Agora eu quero fazer os valores em cada vela do menor prazo calculado a partir das barras do maior prazo

O que você quer dizer com "yank"?

 
Alexandr Sokolov:

O tempo é usado além da OnCalculate. Direção de indexação ArraySetAsSeries(...,verdadeiro) em todos os amortecedores


Para que serve? - Eu fiz um indicador de tendência (postado em CodeBase), é "barulhento". Eu fiz uma desaceleração - não o suficiente. Agora quero fazer os valores em cada vela do menor período de tempo calculado a partir das barras do maior período de tempo

O que você quer dizer com "ianque"?

"Yank" não é minha expressão. Foi assim que li neste fórum a referência periódica aos dados do período desejado.

Lembro-me até de eu estar zangado por não estar funcionando, me expressando "puxando o período como um gato por sua fonte", mas não funciona. Depois de muitas discussões sobre o problema, eu enrolei a cópia em um loop de fazer enquanto fazia. Se ele foi copiado na primeira tentativa, graças a Deus. Se não o fez, nós lhe damos N tentativas através de um loop vazio para 200-500 iterações, o que parece ser suficiente. Podemos ir mais longe...

E esse indicador, sobre o qual eu falei um pouco antes, ainda está na fase inicial. É por isso que não é feito corretamente. Eu estava apenas verificando quantas barras de tf altas eu preciso para as barras disponíveis do período atual. Acabei com 17 barras diárias por 5000 barras M5. E se você não levar isso em conta, então 5000 período M5 atual, 5000 4h e 5000 diários são copiados. Demasiados extras...

Outro aviso importante: há algum tempo atrás você podia reverter uma vez a indexação de uma matriz, agora você tem que redirecioná-la a cada espirro. Eu já escrevi sobre isso em algum lugar antes. É por isso que eu prefiro trabalhar com a opção padrão. Não é difícil se acostumar a isso.

 

A GlobalVariable por padrão só pode ser dupla

double close = GlobalVariableGet("close");


Se eu quiser um valor próximo sem uma parte fracionária, seria correto escrevê-lo assim:

int close = GlobalVariableGet("close");
 
Alexey Viktorov:

"Yank" não é minha expressão. Foi assim que li a referência periódica aos dados do período certo neste fórum.

Lembro até eu ficar com raiva de não estar funcionando, me expressando "arrancando o período como um gato por seu lugar causal", mas isso não ajuda. Depois de muitas discussões sobre o problema, eu enrolei a cópia em um loop de fazer enquanto fazia. Se ele foi copiado na primeira tentativa, graças a Deus. Se não o fez, nós lhe damos N tentativas através de um loop vazio para 200-500 iterações, o que parece ser suficiente. Podemos aumentar...

E esse indicador que mencionei anteriormente está ainda em sua infância. É por isso que não é feito corretamente. Eu estava apenas verificando quantas barras de tf altas eu preciso para as barras disponíveis do período atual. Acabei com 17 barras diárias por 5000 barras M5. E se você não levar isso em conta, então 5000 período M5 atual, 5000 4h e 5000 diários são copiados. Isso é muito a mais...

Outra nota importante: há algum tempo atrás você podia reverter uma vez a indexação de uma matriz, agora você tem que redirecioná-la a cada espirro. Eu já escrevi sobre isso em algum lugar antes. É por isso que eu prefiro trabalhar com a opção padrão. Não é difícil se acostumar a isso.

Espere, perdemos algo ou nos entendemos mal, porque

Alert(copied);

... ...retorna 5, o que é correto, mas os valores em meu buffer são todos iguais.

 
Alexandr Sokolov:

Espere, perdemos algo ou nos entendemos mal, porque

... Retorno 5, o que é correto, mas os valores no buffer são todos iguais

Então precisamos descobrir a dimensão da matriz MPI e sua direção de indexação, se você copia 5 elementos, por que ciclo para 100?

Prefiro usar o depurador em tais casos. Obtenha uma matriz e verifique todos os campos de matriz sem reiniciar...

 
Alexey Viktorov:

Então precisamos lidar com o tamanho da matriz MPI e a direção de indexação, se você copiar 5 elementos, então por que o ciclo para 100?

Prefiro usar o depurador em tais casos. Obtenha uma matriz e verifique todos os campos de matriz sem reiniciar...

Eu o fixei em 100 porque pensei que começaria em 59, mas é o mesmo em 6.