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

 
Alexey Viktorov:

Bem, obrigado... Pelo menos eu me vi há seis anos... Eu era exatamente como você é agora. Eu não pensei duas vezes em dar conselhos de maneira errada.

Quanto ao modelo: Se o modelo tiver um indicador, mas não tiver EA, então o modelo será carregado sem a EA... E se o modelo tiver uma EA? Você tem certeza de que a EA, carregada no modelo, não aplicará o modelo e assim consertará e pendurará o terminal?

não funciona - tudo funciona bem!

 
SanAlex:

Eu não tenho pendências - tudo funciona bem!

Não seja preguiçoso como eu. Faça um vídeo de tais manipulações :-)))

 
Vitaly Muzichenko:

Agora eu vim para depurar o "SmoothedMAOnBuffer()" construído em mt4.

O que está errado, eu não entendo nada.

Escrevi-o cem vezes - remova a função do laço.

Em vez desta porcaria:

ArrayResize(buff, counter);
   for(i = 0; i < counter; i++)
      Array_1[i] = 2.0 * ma_1(i, val_1) - ma_1(i, a);
   for(i = 0; i < counter - a; i++) {
     // buf_3[i] = iMAOnArray(Array_1, 0, period, 0, MODE_SMMA, i); // Так индикатор работает
      SmoothedMAOnBuffer(counter, prev_calculated, i, period, Array_1, buff); Совсем не работает, но и ошибок в журнале нет
      buf_3[i] = buff[0]; ???
   }
   for(i = counter - a; i > 0; i--) {
      Array_2[i] = Array_2[i + 1];

Escreva assim:

ArrayResize(buff, counter);
   for(i = 0; i < counter; i++)
      Array_1[i] = 2.0 * ma_1(i, val_1) - ma_1(i, a);

if(SmoothedMAOnBuffer(counter, prev_calculated, i, period, Array_1, buff)==0)
   return 0;

for(i = counter - a; i > 0; i--) {
   Array_2[i] = Array_2[i + 1];

Estou lhe dizendo - a chamada desta função é um ciclo completo de suavização de dados no Array. Os dados alisados desta matriz estarão em buff array - apenas mais adiante leve os dados alisados que você precisa deles.

 
Alexey Viktorov:

Não seja preguiçoso como eu. Faça um vídeo de tais manipulações :-)))

É uma pena - que eu nunca tenha visitado seu perfil antes. Você tem aí códigos tão bons. Eu gosto muito deste.https://www.mql5.com/ru/code/16396

EURGBPH1

TralingLine
TralingLine
  • www.mql5.com
Виртуальный Stop Loss или Trailing Stop.
 
Artyom Trishkin:

Já lhe disse cem vezes - remova a função do laço.

Em vez desta porcaria:

escreva-o assim:

Estou lhe dizendo - a chamada desta função é um ciclo completo de suavização de dados no Array. Os dados alisados desta matriz estarão em buff array - apenas mais adiante leve os dados alisados que você precisa deles.

Obrigado!, funciona.

SmoothedMAOnBuffer(rates_total, prev_calculated, count, period, Array_1, buf_3);

Eu não entendo como funciona, vou tentar descobrir agora.

 
Artyom Trishkin:

Já lhe disse cem vezes - remova a função do laço.

Em vez desta porcaria:

escreva-o assim:

Estou lhe dizendo - a chamada desta função é um ciclo completo de suavização de dados no Array. Os dados suavizados desta matriz estarão em buff array - basta ir mais longe e tirar os dados suavizados que você precisa deles.

Não consegui aplicar tudo isso de forma alguma, passei mais de 4 horas.

No início, ele é exibido corretamente, depois não há atualização - ele congela, com o padrão que funciona bem.

   double Array_1[];
   double Array_2[];
   int i=0;
   int period = (int)MathFloor(MathSqrt(a));
   int val = (int)MathFloor(a / 1.9);
   int bars=rates_total;
   int counter = bars - prev_calculated + a + 1;
   if(counter > bars)
      counter = bars;
   ArrayResize(Array_1, counter);
    ArraySetAsSeries(Array_1, true);
   ArrayResize(Array_2, counter);
    ArraySetAsSeries(Array_2, true);

   for(i = 0; i < counter; i++)
      Array_1[i] = 2.0 * ma_1(i, val) - ma_1(i, a);
  //  for(i = 0; i < counter - a; i++)
  //  buf_3[i] = iMAOnArray(Array_1, 0, period, 0, MODE_SMMA, i);
   SmoothedMAOnBuffer(rates_total, prev_calculated, prev_calculated, period, Array_1, buf_3); // Где-то здесь не правильно вписаны параметры

---

O que eu tenho que entrar?

No MT5 não me mostra absolutamente nada.

Arquivos anexados:
test.mq4  13 kb
 
Vitaly Muzichenko:

Não foi possível aplicar tudo isso por qualquer meio, passou mais de 4 horas.

No início, ele é exibido corretamente, depois não há atualização - congela, funciona bem com o padrão

---

O que eu tenho que entrar?

Eu não sei o que está acontecendo no MT5.

Você pode explicar o que você quer obter como resultado?

Seu indicador é construído da maneira que você precisa para mostrar às pessoas como não fazê-lo :)

Os amortecedores desenhados e calculados são todos misturados. Os calculados devem ser os últimos na linha - não se pode misturá-los aleatoriamente, infelizmente.

Não funcionará por um cinco porque a função ma_1() em um cinco retornará um cabo, não um valor de MA.

Na função SmoothedMAOnBuffer(), você passa dados pré_calculados em vez de começar com dados significativos na matriz - para quê? Você precisa passar lá mínimo 0, e máximo - um valor calculado dependendo do período de cálculo dos dados de MA armazenados no Array_1 - bem, pelo menos período

No bloco de escolha da cor a ser desenhada, você tem um erro lógico - você escreve por cima dos amortecedores - basta colocar um valor em branco fora dos parênteses. Você verifica a condição, mas o que deve ser feito em caso de verdade é colocado fora dos parênteses. Ou seja, é sempre executado. Isto é uma conseqüência do hábito de arranjo entre parênteses - quando sua localização não é claramente visível.

Array_1 e Array_2 - por que eles não são amortecedores calculados?

Em resumo - há muitas perguntas.

O valor de uma variável é estritamente definido. Por que calcular o valor da variável val em cada carrapato ?

Faça dois buffers calculados para duas variáveis, calculados com período a e val no OnInit(). A partir desses amortecedores e tomar valores - funcionará então para ambas as plataformas.

 
Artyom Trishkin:

Você pode colocar em palavras o que você quer terminar com?

Seu indicador é construído da maneira que você precisa para mostrar às pessoas como não fazê-lo :)

Os buffers de desenho e cálculo estão todos misturados. Os calculados devem ser os últimos na linha - não se pode misturá-los aleatoriamente, infelizmente.

Não funcionará por um cinco porque a função ma_1() em um cinco retornará um cabo, não um valor de MA.

Na função SmoothedMAOnBuffer(), você passa dados pré_calculados em vez de começar com dados significativos na matriz - para quê? Você precisa passar lá mínimo 0, e máximo - um valor calculado dependendo do período de cálculo dos dados de MA armazenados no Array_1 - bem, pelo menos período

No bloco de escolha da cor a ser desenhada, você tem um erro lógico - você escreve por cima dos amortecedores - basta colocar um valor em branco fora dos parênteses. Você tem uma condição, e o que deve ser feito em caso de verdade é colocado fora de parênteses. Ou seja, é sempre executado. Isto é uma conseqüência do hábito de arranjo entre parênteses - quando sua localização não é claramente visível.

Array_1 e Array_2 - por que eles não são amortecedores calculados?

Em resumo - há muitas perguntas.

O valor de uma variável é estritamente definido. Por que calcular o valor da variável val em cada carrapato ?

Faça dois buffers calculados para duas variáveis, calculados com período a e val no OnInit(). A partir desses amortecedores e tomar valores - funcionará então para ambas as plataformas.

Se eu soubesse a solução, não a teria escrito.

O indicador não é meu, eu nem sequer olhei abaixo do iMAOnArray(), a tarefa inteira é apenas substituir o iMAOnArray() por algo.

Posso ter um exemplo de como deveria ser?

Obrigado!

P.S. Para maçanetas mt5 estão bem
Arquivos anexados:
max.mq5  14 kb
 
Vitaly Muzichenko:

Posso ter um exemplo de como deveria ser?

Um exemplo de trabalho de quê? Um indicador de quatro que funciona em cinco? Em seguida, dê-me um indicador de trabalho completo a partir de quatro.

Ou um exemplo de como trabalhar com a função SmoothedMAOnBuffer() ?

 
Artyom Trishkin:

Um exemplo de trabalho de quê? Um indicador de quatro que funciona em cinco? Em seguida, dê-me um indicador de trabalho completo a partir de quatro.

Ou um exemplo de como trabalhar com a função SmoothedMAOnBuffer() ?

Um exemplo de trabalho do mt4, com o iMAOnArray padrão está sendo atualizado, mas o SmoothedMAOnBuffer na primeira execução está ok, e depois nenhuma atualização

Preciso de um exemplo de trabalho com oSmoothedMAOnBuffer( )

Arquivos anexados:
test.mq4  17 kb