Discussion de l'article "20 signaux de trade en MQL5" - page 4

 

Merci à l'auteur pour cet article !

Ne faites pas ce que 1CMaster conseille, c'est n'importe quoi.

Faites autre chose, mettez une ligne verticale sur le graphique, en déplaçant les indicateurs qui montrent l'état de ce moment (où se trouve la ligne verticale), et non l'état actuel ?

 

Le code peut être utile, mais certains indicateurs sont redondants :

BB et canal de déviation standard - même chose ;

Canal de prix, canal de Donchian et canal de Gallagher - même chose ;

Quoi qu'il en soit, merci pour cet article...

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
 

Erreur de formation du signal Alligator

.....
      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);
     }
//--- vérifier la condition et fixer la valeur de 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;

//--- renvoie le signal de transaction
   return(sig);
  }


La copie de ces tampons est nécessaire si l'on tient compte du décalage des lignes d'indicateur, mais ici ce n'est pas le cas.

Deuxièmement, pourquoi copier deux valeurs d'indicateur si une seule barre est comparée, c'est-à-dire qu'une valeur pour chaque tampon (ligne) est suffisante.

Signal d'AO : de nombreuses données sont également copiées (elles ne participent pas à l'analyse).

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

Et au début de l'article, il a été dit que pour supprimer le cliquetis, nous analyserons non pas la barre zéro mais la première barre de l'historique, pourquoi copier la barre zéro ?

Nous n'économisons pas les ressources ....

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

Erreur de formation du signal Alligator


La copie de ces tampons est nécessaire si l'on tient compte du décalage des lignes d'indicateur, mais ici ce n'est pas le cas.

Deuxièmement, pourquoi copier deux valeurs d'indicateur si une seule barre est comparée, c'est-à-dire qu'une valeur pour chaque tampon (ligne) est suffisante.

Signal d'AO : de nombreuses données sont également copiées (elles ne participent pas à l'analyse).

Et au début de l'article, il a été dit que pour supprimer le cliquetis, nous analyserons non pas la barre zéro mais la première barre de l'historique, pourquoi copier la barre zéro ?

Nous n'économisons pas les ressources ....



Tout d'abord, c'est clairement écrit dans l'aide.

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

Deuxièmement, il se peut que j'aie fait quelques erreurs en copiant des données, mais cela n'affecte pas le point principal de la tâche. L'objectif de l'article est de montrer comment traiter correctement les indicateurs et les données.

 

D'ailleurs, j'utilise personnellement une telle construction, dans ce cas les données de la fonction peuvent être transmises directement à la requête commerciale.

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:

Tout d'abord, c'est clairement écrit dans l'aide

Deuxièmement, il se peut que j'aie fait quelques erreurs de copie de données, mais cela n'affecte pas le point principal de la tâche. Le but de l'article est de montrer comment traiter correctement les indicateurs et les données.

Oui, c'est vrai que c'est visuel, mais nous sommes orientés sur la valeur visuelle lorsque nous entrons dans une transaction et non sur la façon dont ils se trouvent dans la mémoire du terminal, nous devons donc en tenir compte.

Pour l'alligator, la méthode correcte est 13 par 8, 8 par 5, 5 par 3 (valeurs standard).

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);
     }
//--- vérifier la condition et fixer la valeur de 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;

//--- renvoie le signal de transaction
   return(sig);
  }
 
olyakish:

Oui, c'est vrai sur le plan visuel, mais nous nous concentrons sur la valeur visuelle lorsque nous entrons dans une donne et non sur la façon dont ils sont dans la mémoire du terminal, et nous devons donc en tenir compte.

La méthode correcte pour l'alligator est 13 sur 8, 8 sur 5, 5 sur 3 (valeurs standard).

Je ne le dirai pas, mais je ne pense pas que tout le monde utilise l'alligator avec un décalage. Il n'y a donc pas d'erreur dans ce cas. Vous aviez besoin d'un offset, vous l'avez ajouté, les sidérurgistes qui en ont besoin peuvent en faire autant. Je le répète une fois de plus, le but de l'article est de montrer comment aborder correctement les indicateurs et leurs données, et combien et en quelle quantité se les procurer est une affaire de chacun.
 
sergey1294:
Je ne vais pas l'affirmer, mais je ne pense pas que tout le monde utilise l'aligator offset. Il n'y a donc pas d'erreur dans ce cas. Vous aviez besoin d'un offset, vous l'avez ajouté, et les sidérurgistes qui en ont besoin peuvent en faire autant. Je le répète encore une fois, le but de l'article est de montrer comment aborder correctement les indicateurs et leurs données, et combien et en quelle quantité les obtenir est une question de chaque individu.

Référence...

L'indicateur technique Alligator est une combinaison de lignes d'équilibre (moyennes mobiles) utilisant la géométrie fractale et la dynamique non linéaire.

  • La ligne bleue (mâchoire de l'Alligator) est la ligne d'équilibre pour la période utilisée pour construire le graphique (moyenne mobile lissée sur 13 périodes, décalée de 8 mesures dans le futur);
  • Laligne rouge (Dents d'alligator) est la ligne d'équilibre pour une période significative d'un ordre de grandeur inférieur (moyenne mobile lissée sur 8 périodes , décalée de 5 barres dans le futur);
  • La ligne verte (Lèvres d'alligator) est la ligne d'équilibre pour une période significative qui est inférieure d'un autre ordre de grandeur (moyenne mobile lissée à 5 périodes décalée de 3 barres dans le futur).


Les mots clés sont en gras.

Le résultat de votre code est l'analyse des moyennes

Le résultat du code que je propose est l'analyse des lignes alligator.

 
Ces documents sont vraiment utiles pour l'apprentissage, merci.
 
Très utile pour les débutants comme moi, merci.