Comment extraire uniquement les points de retournement de bas de page extraits par l'indicateur zigzag ? - page 3

 
jackprobe:
Merci deVries. Je vais l'essayer ...


et si vous mettez quelque chose comme

ceci dans votre code ....

 
ubzen:

Voici ce que j'ai trouvé. Je n'ai pas vérifié les résultats de deVries ci-dessus [je faisais cela quand il a posté].


bonjour, ubzen, je viens de voir votre code comme ci-dessous :

Je ne sais pas ce que signifient les codes de ces deux lignes : if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift] ; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift] ;

Je trouve que ça ne change presque rien quand je supprime les codes de ces deux lignes, donc je ne sais pas pourquoi vous ajoutez ces deux lignes.

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_width1 1
#property indicator_color2 Yellow
#property indicator_width2 1

double Bottoms[];
double Toppers[];

int init()
{

   IndicatorBuffers(2);

   SetIndexStyle(0,DRAW_SECTION);
   SetIndexBuffer(0,Bottoms);
   SetIndexEmptyValue(0,0.0);

   SetIndexStyle(1,DRAW_SECTION);
   SetIndexBuffer(1,Toppers);
   SetIndexEmptyValue(1,0.0);

  IndicatorShortName("zz show top & bottom");
  return(0);
}

int deinit()
{
  return(0);
}

int start()
{
  int counted_bars=IndicatorCounted();
  int limit=0;
  limit = Bars-counted_bars;
  
  for(int shift=limit-1;shift>=0;shift--)
  {
    int ExtDepth=12; int ExtDeviation=5; int ExtBackstep=3;
    int ZigzagBuffer=0; int HighMapBuffer=1; int LowMapBuffer=2;
    
    Bottoms[shift]=iCustom(
        Symbol(),0,"ZigZag",
        ExtDepth, ExtDeviation, ExtBackstep,
        LowMapBuffer, shift
    );
    
    Toppers[shift]=iCustom(
        Symbol(),0,"ZigZag",
        ExtDepth, ExtDeviation, ExtBackstep,
        HighMapBuffer, shift
    );
    
    if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift];
    if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];
  }
  
  return(0);
}
 
vx0532:


bonjour, ubzen, je viens de voir votre code comme ci-dessous :

Je ne sais pas ce que signifient ces deux lignes de codes : if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift] ; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift] ;

Je trouve que ça ne change presque rien quand je supprime les codes de ces deux lignes, donc je ne sais pas pourquoi vous ajoutez ces deux lignes.


Zigzag avec une ligne à la baisse et une ligne à la hausse.
 


J'ai écrit les codes ci-dessous dans l'EA

mais quand je le teste dans les données historiques, "print" montre tous les 0, pourquoi ?

for(int shift=99;shift>=0;shift--)
  {
    int ExtDepth=12; int ExtDeviation=5; int ExtBackstep=3;
    int ZigzagBuffer=0; int HighMapBuffer=1; int LowMapBuffer=2;
    
    Bottoms[shift]=iCustom(
        Symbol(),0,"ZigZag",
        ExtDepth, ExtDeviation, ExtBackstep,
        LowMapBuffer, shift
    );
    
    Toppers[shift]=iCustom(
        Symbol(),0,"ZigZag",
        ExtDepth, ExtDeviation, ExtBackstep,
        HighMapBuffer, shift
    );
    if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift];
    if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift];
 }
 
 shift=0;
 while(shift<100)
 {
 Print("Bottoms,Toppers:",Bottoms[shift]," , ",Toppers[shift]);
 shift++;
 }
 

lisez mon post 1 page en arrière

deVries 2013.10.19 12:13 #

https://www.mql5.com/en/forum/144092/page2#854926


//+------------------------------------------------------------------+
//|                                              ZigZag practise.mq4 |
//|                                Copyright © 2012, Tjipke de Vries |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Tjipke de Vries"
#property link      ""

//---- input parameters  ZigZag
extern int ExtDepth=12;
extern int ExtDeviation=5;
 
deVries:

Merci deVries, j'ai compris ce problème après avoir lu votre post.

J'en conclus que nous pouvons utiliser un double tableau et une variable pour recevoir la valeur de retour de iCustom() dans les codes de l'indicateur ; mais nous ne pouvons utiliser qu'une variable pour recevoir la valeur de retour de iCustom() dans les codes de l'EA.

votre explication est la suivante : " cesont les mauvais tampons et vous devez trouver la valeur de i à quelle barre sera le haut ou le bas ".

ma compréhension est que dans EA, lorsque nous utilisons le tableau x[i] pour recevoir iCustom(), l'affectation est ok, mais la barre de l'affectation est incertaine.

donc iCustom() ne renvoie pas seulement une valeur simplement mais d'autres choses, oui ?

mais je ne comprends toujours pas la signification du code : " if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift] ; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift] ;"

 
vx0532:

Merci deVries, j'ai compris ce problème après avoir lu votre post.

J'en conclus que nous pouvons utiliser un double tableau et une variable pour recevoir la valeur de retour de iCustom() dans les codes de l'Indicateur ; mais nous pouvons seulement utiliser une variable pour recevoir la valeur de retour de iCustom() dans les codes de l'EA.

votre explication est la suivante : " cesont les mauvais tampons et vous devez trouver la valeur de i à quelle barre sera le haut ou le bas ".

ma compréhension est que dans EA, lorsque nous utilisons le tableau x[i] pour recevoir iCustom(), l'affectation est ok, mais la barre de l'affectation est incertaine.

donc iCustom() ne renvoie pas seulement une valeur simplement mais d'autres choses, oui ?

mais je ne comprends toujours pas la signification du code : " if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift] ; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift] ;"


vous avez toujours du mal à obtenir des données de l'indicateur ZigZag

Pourquoi voulez-vous que je vous explique ce qui n'est pas dans mon code ?

pourquoi ne pas faire une recherche sur le code de

//+------------------------------------------------------------------+
//|                                              ZigZag practise.mq4 |
//|                                Copyright © 2012, Tjipke de Vries |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Tjipke de Vries"
#property link      ""

//---- input parameters  ZigZag
extern int ExtDepth=12;
extern int ExtDeviation=5;

le code entier que tu peux trouver une page en arrière.... https://www.mql5.com/en/forum/144092/page2#854926

si tu comprends le fonctionnement de ce code, alors il s'agit simplement d'utiliser la même méthode dans les EA.

 
  1. deVries: le code entier se trouve une page plus loin....
    Ne dites pas une page en arrière, postez le lien vers le message exact. C'est le signe # à droite de votre nom (clic droit, copier le lien) une page en arrière.
  2. vx0532: mais je ne comprends toujours pas la signification du code : " if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift] ; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift] ;"
    Que pensez-vous de la signification de "if(x> 0.1) x=x;"? Rien ! Le code corrigé dit plus tard :
        if(ZigZag[shift]>0.1 && Low[shift]==ZigZag[shift]) Bottoms[shift]=ZigZag[shift];
        if(ZigZag[shift]>0.1 && High[shift]==ZigZag[shift]) Toppers[shift]=ZigZag[shift];
    
 
WHRoeder:
  1. deVries: le code complet se trouve une page plus loin....
    Ne dites pas une page en arrière, postez le lien vers le message exact. C'est le signe # à droite de ton nom (clic droit, copier le lien) une page en arrière.
  2. vx0532: mais je ne comprends toujours pas la signification du code : " if(Bottoms[shift]>0.1) Bottoms[shift]=Bottoms[shift] ; if(Toppers[shift]>0.1) Toppers[shift]=Toppers[shift] ;"
    Que pensez-vous de la signification de "if(x> 0.1) x=x;"? Rien ! Le code corrigé dit plus tard :

fait https://www.mql5.com/en/forum/144092/page2#854926
 

Chers tous,

merci pour cette merveilleuse discussion sur le ZigZag et les codes. Je voudrais ajouter une nouvelle tournure à la discussion
. Pour moi, il serait très utile de pouvoir extraire les valeurs hautes et basses calculées par l'indicateur ZigZag
(avec un ensemble de paramètres donné et spécifique) ainsi que leurs heures d'apparition dans un fichier texte ou csv,
quelque chose comme ceci :

- Day, Time, High-Value, High(Boolean)
- Day, Time, Low-Value, Low(Boolean)

Je voudrais extraire ces valeurs pour une analyse plus poussée dans MS Excel afin d'identifier les probabilités d'occurrence de
des périodes de temps et des amplitudes dans un graphique. En fin de compte, des histogrammes seront créés à partir de
ces données, indiquant la "signature" de la valeur dans le graphique en identifiant les périodes de temps intrinsèques et
et les amplitudes de swing intrinsèques.

Peut-être que j'essaie de réinventer la roue ici et qu'il existe un code qui fait ce que je veux faire
. Si ce n'est pas le cas, il serait intéressant de développer un tel code. Je fais ce type d'analyse manuellement
avec des tonnes de graphiques chaque jour, et je peux clairement affirmer que connaître la signature intrinsèque d'une valeur
améliore considérablement les chances de prédire un changement de direction. À mon avis, ce processus pourrait être
facilement automatisé ... mais j'aurais besoin de l'aide de personnes ayant une expérience en programmation. Le résultat
serait soit un indicateur pratique, soit un EA (Expert Adviser) MT4 automatique
qui négocie aux points de retournement importants.

Ce serait bien de trouver quelqu'un ici qui soit intéressé par un effort de collaboration. Mais quelques conseils
sur la façon d'extraire les données de l'indicateur ZigZag seraient également utiles. Merci beaucoup !

- spjuliman

Raison: