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

 
Olá a todos, a pergunta é esta:
Estou fazendo uma rede com martin, mas não uma de cada vez, mas uma geral (todas as ordens e grelhas abrem como sinais, não uma de cada vez)! Encontrei um problema .... quando uma ordem ou sua grade aciona, tudo funciona bem, mas quando uma ordem ou sua grade se abre e ao mesmo tempo (ou mais tarde) outra ordem e sua grade se abre, o martin começa a continuar a primeira grade! Qual poderia ser o problema?
 
Artyom Trishkin:

Certo. Mas só posso olhar para isso no meu tempo livre - trabalho, casa, família, gato e filhos/ netos... Sogra, sim...

Sim, os gatos...

Hoje eu saí para fazer uma ninhada em algum lugar.

Uma linda menina escocesa que gosta de dormir de costas :)

 
Artyom Trishkin:

Bem, veja o código - Vitaly o postou diretamente

Minha pergunta não teve nada a ver com o código da Vitaly. Agora eu mesmo descobri... acontece que o código na biblioteca controla a própria profundidade do recálculo. Ou seja, a primeira execução recalcula todo o buffer, e nas posteriores apenas a quantidade certa... Era isso que eu queria ouvir de vocês. Eu sou preguiçoso assim. É mais fácil perguntar do que descobrir eu mesmo... Mas às vezes tenho que............

 
Alexey Viktorov:

Minha pergunta não teve nada a ver com o código da Vitaly. Agora eu mesmo descobri... acontece que o código na biblioteca controla a própria profundidade do recálculo. Ou seja, a primeira execução recalcula todo o buffer, e nas posteriores apenas a quantidade certa... Era isso que eu queria ouvir de vocês. Eu sou preguiçoso assim. É mais fácil perguntar do que descobrir eu mesmo... Mas às vezes tenho que............

Portanto, o código de Vitali duplicou esta função da SB, que você perguntou - e tudo está bem à vista - basta um olhar para entender a resposta à sua pergunta.

 
Artyom Trishkin:

Então o código de Vitaly duplicou esta função da SB sobre a qual você perguntou - e tudo está bem à vista - basta um olhar para entender a resposta à sua pergunta.

Você viu a lata no original?

 
Vitaly Muzichenko:

Você viu como o original é duro?

Eu realmente não o comparei. Na minha opinião, há lata em ambos os arquivos. E a lógica não é nada clara - quando a condição está vazia e o enchimento do buffer com um valor vazio é tirado de parênteses da condição. Bem, meu trabalho é chegar a um A. Não me importa como funciona - que seja como é.

 
Artyom Trishkin:

Não tenho feito muita comparação. Acho que é uma bagunça em ambos os arquivos. E a lógica não é nada clara - quando a condição está vazia e o enchimento do buffer com um valor vazio é tirado de parênteses da condição. Bem, meu trabalho é chegar a um A. Vou deixar as coisas como estão.

Minha tarefa é entender a partir deste código como substituiro iMAOnArray

Ou seja, fazer o menor número possível de mudanças no código existente e fazer
 
Artyom Trishkin:

Assim, no código da Vitaly esta função foi duplicada da SB que você estava perguntando - e tudo está à vista de todos - basta um olhar para entender a resposta à sua pergunta.

Bem, você agarrou-o... Não sei como fazer isso. Tenho que passar por todo o código com compreensão.

 
Vitaly Muzichenko:

Minha tarefa é entender como substituir oiMAOnArray neste código.

Ou seja, fazer o menor número possível de mudanças no código existente e usá-lo para

Ao tentar entender esta pergunta, vejo a seguinte situação.

Em seu código diz o seguinte

buf_3[i] = iMAOnArray(Array_1, 0, per, 0, MODE_SMMA, i);

e na documentação

double  iMAOnArray( 
   double       array[],          // массив 
   int          total,            // количество элементов 
   int          ma_period,        // период 
   int          ma_shift,         // сдвиг средней 
   int          ma_method,        // метод усреднения 
   int          shift             // сдвиг 
   );
iMAOnArray

total

[em] Número de elementos a calcular. 0 significa todos os elementos da matriz.

Acontece que toda vez que a função é chamada, toda a matriz é recalculada. Foi exatamente sobre isso que perguntei a Artem... Mas acontece que o mql5 fornece tudo para a aceleração, enquanto que no mql4 você mesmo tem que cuidar disso. Mas não vejo nenhuma informação sobre como fazê-lo corretamente.


Quanto a refazê-lo com o mínimo de mudanças, você está errado. É mais fácil pegar o algoritmo e refazê-lo.

 

Boa tarde, por favor, ajude-me a entender...

   HighForFutureSession=MathMax(high[rates_total-1],high[rates_total-2]);

MathMax retorna o máximo de dois valores numéricos, ou seja, ele retorna o valor numérico máximo de duas matrizes idênticas de alto[taxas_total] com uma diferença de -1 e -2 barras?

Em palavras simples: na primeira matriz 12345 e na segunda 1234 a função retornará 5?