Discussão do artigo "20 sinais de negociação no MQL5" - página 4

 

Obrigado ao autor pelo artigo!

Não faça o que o 1CMaster aconselha, isso é um absurdo.

Faça outra coisa, coloque uma linha vertical no gráfico, movendo quais indicadores mostram o estado desse momento (onde está a linha vertical), e não o atual?

 

O código pode ser útil, mas alguns dos indicadores são redundantes:

BB e canal de desvio padrão - a mesma coisa;

Canais de preço, Donchian e Gallagher - a mesma coisa;

De qualquer forma, obrigado pelo artigo...

Documentation on MQL5: Standard Constants, Enumerations and Structures / Objects Constants / Object Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Objects Constants / Object Properties - Documentation on MQL5
 

Erro de formação do sinal de jacaré

.....
      if(CopyBuffer(h_al,0,0,2,al1_buffer)<2)
         return(0);
      if(CopyBuffer(h_al,1,0,2,al2_buffer)<2)
         return(0);
      if(CopyBuffer(h_al,2,0,2,al3_buffer)<2)
         return(0);
      if(!ArraySetAsSeries(al1_buffer,true))
         return(0);
      if(!ArraySetAsSeries(al2_buffer,true))
         return(0);
      if(!ArraySetAsSeries(al3_buffer,true))
         return(0);
     }
//--- verifique a condição e defina o valor para sig
   if(al3_buffer[1]>al2_buffer[1] && al2_buffer[1]>al1_buffer[1])
      sig=1;
   else if(al3_buffer[1]<al2_buffer[1] && al2_buffer[1]<al1_buffer[1])
      sig=-1;
   else sig=0;

//--- retornar o sinal de negociação
   return(sig);
  }


A cópia desses buffers é necessária levando-se em conta o deslocamento das linhas do indicador, mas aqui não é.

Segundo, por que copiar dois valores de indicadores se apenas uma barra é comparada, ou seja, um valor para cada buffer (linha) é suficiente.

Sinal da AO: muitos dados também são copiados (eles não participam da análise).

     if(CopyBuffer(h_ao,1,0,20,ao_buffer)<20)
         return(0);
      if(!ArraySetAsSeries(ao_buffer,true))
         return(0); 

E, no início do artigo, foi dito que, para remover o ruído, analisaremos não a barra zero, mas a primeira barra do histórico.

Não estamos economizando recursos ....

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов - Документация по MQL5
 
olyakish:

Erro de formação do sinal de jacaré


A cópia desses buffers é necessária levando-se em conta o deslocamento das linhas do indicador, mas aqui não é.

Segundo, por que copiar dois valores de indicadores se apenas uma barra é comparada, ou seja, um valor para cada buffer (linha) é suficiente.

Sinal da AO: muitos dados também são copiados (eles não participam da análise).

E, no início do artigo, foi dito que, para remover o ruído, analisaremos não a barra zero, mas a primeira barra do histórico.

Não estamos economizando recursos ....



Em primeiro lugar, isso está claramente escrito na ajuda.

Необходимо помнить, что смещение линии является чисто визуальным для отображения и значения в индикаторном буфере хранятся без смещения. 
При получении значений буфера функцией CopyBuffer() значение смещения никакого эффекта иметь не будет.

Em segundo lugar, posso ter cometido alguns erros na cópia de dados, mas isso não afeta o ponto principal da tarefa. O objetivo do artigo é mostrar como abordar corretamente os indicadores e os dados.

 

A propósito, eu pessoalmente uso essa construção; nesse caso, os dados da função podem ser passados diretamente para a consulta de negociação.

ENUM_ORDER_TYPE ind_01()
  {
   ENUM_ORDER_TYPE sig=WRONG_VALUE;

   if(IND01_handle==INVALID_HANDLE || IND01_handle==0)
     {
      IND01_handle=iAC(_Symbol,TF_01);
      return(WRONG_VALUE);
     }
   else
     {
      if(CopyBuffer(IND01_handle,1,0,AC_shift+3,IND01_buffer1)<AC_shift+3) return(WRONG_VALUE);
      if(!ArraySetAsSeries(IND01_buffer1,true)) return(WRONG_VALUE);

      if(CopyBuffer(IND01_handle,0,0,AC_shift+1,IND01_buffer2)<AC_shift+1) return(WRONG_VALUE);
      if(!ArraySetAsSeries(IND01_buffer2,true)) return(WRONG_VALUE);
     }

   if(IND01_buffer2[AC_shift]>0.0 && IND01_buffer1[AC_shift]==0 && IND01_buffer1[AC_shift+1]==0)sig=ORDER_TYPE_BUY;
   else if(IND01_buffer2[AC_shift]<0.0 && IND01_buffer1[AC_shift]==0 && IND01_buffer1[AC_shift+1]==0 && IND01_buffer1[AC_shift+2]==0)sig=ORDER_TYPE_BUY;
   else if(IND01_buffer2[AC_shift]<0.0 && IND01_buffer1[AC_shift]==1 && IND01_buffer1[AC_shift+1]==1)sig=ORDER_TYPE_SELL;
   else if(IND01_buffer2[AC_shift]>0.0 && IND01_buffer1[AC_shift]==1 && IND01_buffer1[AC_shift+1]==1 && IND01_buffer1[AC_shift+2]==1)sig=ORDER_TYPE_SELL;
   else sig=WRONG_VALUE;

   return(sig);
  }
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
sergey1294:

Em primeiro lugar, isso está claramente escrito na ajuda

Em segundo lugar, posso ter cometido alguns erros na cópia de dados, mas isso não afeta o ponto principal da tarefa. O objetivo do artigo é mostrar como abordar corretamente os indicadores e os dados.

Sim, é realmente visual, mas estamos nos orientando pelo valor visual ao entrar em uma transação e não pela forma como eles se encontram na memória do terminal, portanto, precisamos levar isso em consideração.

A forma correta para o alligator é 13 por 8, 8 por 5, 5 por 3 (valores padrão).

int TradeSignal_17()
  {
   int sig=0;

   if(h_al==INVALID_HANDLE)
     {
      h_al=iAlligator(Symbol(),Period(),13,0,8,0,5,0,MODE_SMMA,PRICE_MEDIAN);
      return(0);
     }
   else
     {
      if(CopyBuffer(h_al,0,8,2,al1_buffer)<2)
         return(0);
      if(CopyBuffer(h_al,1,5,2,al2_buffer)<2)
         return(0);
      if(CopyBuffer(h_al,2,3,2,al3_buffer)<2)
         return(0);
      if(!ArraySetAsSeries(al1_buffer,true))
         return(0);
      if(!ArraySetAsSeries(al2_buffer,true))
         return(0);
      if(!ArraySetAsSeries(al3_buffer,true))
         return(0);
     }
//--- verifique a condição e defina o valor para sig
   if(al3_buffer[1]>al2_buffer[1] && al2_buffer[1]>al1_buffer[1])
      sig=1;
   else if(al3_buffer[1]<al2_buffer[1] && al2_buffer[1]<al1_buffer[1])
      sig=-1;
   else sig=0;

//--- retornar o sinal de negociação
   return(sig);
  }
 
olyakish:

Sim, é realmente visual, mas estamos orientados pelo valor visual ao entrar em uma negociação e não pela forma como eles estão na memória do terminal, portanto, precisamos levar isso em consideração.

A forma correta para o alligator é 13 em 8, 8 em 5, 5 em 3 (valores padrão).

Não vou dizer, mas acho que nem todo mundo usa o alligator com um offset. Portanto, não há erro nesse caso. Você precisou de um offset e o adicionou, e o mesmo pode ser feito com os aços que precisam dele. Repito mais uma vez que o objetivo do artigo é mostrar como lidar adequadamente com os indicadores e seus dados, e quanto e em que quantidade obtê-los é uma questão de cada indivíduo.
 
sergey1294:
Não vou afirmar isso, mas acho que nem todo mundo usa um aligator offset. Portanto, não há erro nesse caso. Você precisou de um offset, você o adicionou, e o mesmo pode ser feito com os siderúrgicos que precisam dele. Vou repetir mais uma vez, o objetivo do artigo é mostrar como lidar adequadamente com os indicadores e seus dados, e quanto e em que quantidade obtê-los é uma questão de cada indivíduo.

Referência...

O indicador técnico Alligator é uma combinação de linhas de equilíbrio (médias móveis) usando geometria fractal e dinâmica não linear.

  • A linha azul (Alligator's Jaw) é a linha de equilíbrio para o período de tempo usado para construir o gráfico (média móvel suavizada de 13 períodos, deslocada 8 barras para o futuro);
  • A linha vermelha (Alligator's Teeth) é a Linha de Equilíbrio para um período de tempo significativo uma ordem de magnitude menor (média móvel suavizada de 8 períodos, deslocada 5 barras para o futuro);
  • A linha verde (Alligator Lips) é a linha de equilíbrio para um período de tempo significativo que é outra ordem de magnitude inferior (média móvel suavizada de 5 períodos deslocada 3 barras para o futuro).


As palavras-chave estão em negrito.

O resultado de seu código é a análise de médias

O resultado de meu código proposto é a análise de linhas de jacaré.

 
Isso é realmente útil para o aprendizado, obrigado.
 
Obrigado! O artigo é super
Só que não há nenhum botão do Stochastic Osticllator nas configurações. Acho que há apenas dois botões no mesmo lugar.
ObjectSetInteger(0, "PIPIndNameButtonSO",OBJPROP_YDISTANCE,100);
ObjectSetInteger(0, "PIPIndNameButtonRSI",OBJPROP_YDISTANCE,110);