Question sur l'indicateur - page 2

 
1 pour Vrai, ou 0 pour Faux, n'est-ce pas ?

Je vais y réfléchir un peu plus demain, et voir si je peux trouver une solution.
 
Agent86:
1 pour Vrai, ou 0 pour Faux n'est-ce pas ? <---- c'est vrai, MAIS

J'y réfléchirai un peu plus demain, et je verrai si je peux trouver une solution.


UK fait plutôt référence à vos valeurs MACD .
 
faster et slower sont des doubles et non des bools... la boucle fonctionne depuis sa valeur initiale et peut-être 3 itérations, donc pour les valeurs de Bars, Bars-1, Bars-2... quelles sont les valeurs de faster et slower ?
 
//+------------------------------------------------------------------+
//|                                   
//+------------------------------------------------------------------+


#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 White

//---- buffers
double v1[];
double v2[];
double v3[];
double val1;
double val2;
double val3;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
//----
   IndicatorBuffers(3);

   SetIndexArrow(0, 111);
   SetIndexStyle(0,DRAW_ARROW,STYLE_DOT,1,Blue);
   SetIndexBuffer(0, v1);
   SetIndexLabel(0,"Resistance");
   

   SetIndexArrow(1, 111);
   SetIndexStyle(1,DRAW_ARROW,STYLE_DOT,1,Red);
   SetIndexBuffer(1, v2);
   SetIndexLabel(1,"Support");
  
   
   SetIndexArrow(2, 111);
   SetIndexStyle(2,DRAW_ARROW,STYLE_DOT,1,White);
   SetIndexBuffer(2, v3);
   SetIndexLabel(2,"High A");
   
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   
   int i=Bars;
   
   double   faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN
            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL        
  
    for(i=Bars; i>=0; i--)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0)
         {                             
          v1[i]=High[i]; 
                         
          Print ("v1[", i, "]= ", v1[i], " if");
          Print ("i=",i, " faster=", faster);
          Print ("i=",i, " slower=",slower);
          }    
               
      else          
         {
         //v1[i]=v1[i+1];
         //Print ("v1[", i, "]= ", v1[i], " else");
         }
      
      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0)
         {
          v2[i]=Low[i];
          
          Print ("v2[", i, "]= ", v2[i], " if");
         }
          
      else          
         {
         //v2[i]=v2[i+1]; 
         //Print ("v2[", i, "]= ", v2[i], " else");         
         }
      }

   
     
//----
   return(0);
  }
//+------------------------------------------------------------------+




2011.09.28 16:43:30 sup_res EURUSD,M5 : i=411 faster=-0.0005

28.09.2011 16:43:30 sup_res EURUSD,M5 : v1[411]= 1.3522 if
2011.09.28 16:43:30 sup_res EURUSD,M5 : v2[414]= 1.3495 if
2011.09.28 16:43:30 sup_res EURUSD,M5 : i=414 slower=-0.0007
2011.09.28 16:43:30 sup_res EURUSD,M5 : i=414 plus rapide=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5 : v1[414]= 1.3527 if
2011.09.28 16:43:30 sup_res EURUSD,M5 : i=417 plus lent=-0.0007
2011.09.28 16:43:30 sup_res EURUSD,M5 : i=417 plus rapide=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5 : v1[417]= 1.3528 if
2011.09.28 16:43:30 sup_res EURUSD,M5 : v2[419]= 1.3506 if
2011.09.28 16:43:30 sup_res EURUSD,M5 : i=420 plus lent=-0.0007
2011.09.28 16:43:30 sup_res EURUSD,M5 : i=420 plus rapide=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5 : v1[420]= 1.3523 if
2011.09.28 16:43:30 sup_res EURUSD,M5 : i=426 plus lent=-0.0007
2011.09.28 16:43:30 sup_res EURUSD,M5 : i=426 plus rapide=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5 : v1[426]= 1.3522 if
2011.09.28 16:43:30 sup_res EURUSD,M5 : v2[429]= 1.3481 if


Imprime ceci lors de l'exécution de l'indicateur

Mais le même code pour un EA n'imprime pas le tableau.

2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5 : i=227 faster=-0.0015
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5 : v1[227]= 0 if
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5 : v2[230]= 0 if
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5 : i=232 slower=-0.0013
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5 : i=232 plus rapide=-0.0015
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5 : v1[232]= 0 si
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5 : i=825 faster=-0.0015
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5 : v1[825]= 0 if
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5 : i=829 plus lent=-0.0008
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5 : i=829 plus rapide=-0.0015
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5 : v1[829]= 0 si
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5 : i=832 plus lent=-0.0008
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5 : i=832 plus rapide=-0.0015
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5 : v1[832]= 0 si
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5 : i=240 faster=-0.0011
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5 : v1[240]= 0 if
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5 : v2[241]= 0 if
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5 : v2[245]= 0 si
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5 : i=245 slower=-0.0003
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5 : i=245 faster=-0.0011
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5 : v1[245]= 0 si
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5 : v2[249]= 0 if


Je ne sais pas pourquoi il a recours à ne pas imprimer le tableau à nouveau, parce que c'est le même code que l'indicateur.
Quoi qu'il en soit, je vais travailler sur l'indicateur pour le moment.

Les valeurs semblent être diverses, allant de nombres fractionnaires à 4 chiffres à des nombres fractionnaires négatifs à 4 chiffres.

Si je change le décalage iMACD en i, alors plus rapide et plus lent = 0 tout le temps.

 
Agent86:

J'ai essayé d'insérer if(faster > slower) à différents endroits du code juste pour jouer avec l'idée. Normalement, ces idées fonctionnent dans un EA mais pas dans un indicateur.

IE if(v1 > 0 && faster > slower)

mais cela fait disparaître l'indicateur.

Essayez ce changement
//   double   faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN
//            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL        
  
    for(i=Bars-1; i>=0; i--)
     {
   double   faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i), //MODE_MAIN
            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i); //MODE_SIGNAL        
 
Agent86:


Je ne sais pas pourquoi il a recours à ne pas imprimer le tableau à nouveau, parce que c'est exactement le même code que l'indicateur.


Vous ne pouvez pas utiliser les Indicator Buffers dans un EA. . ceci explique cela : https://www.mql5.com/en/articles/1456

plus vite et plus lent sont les mêmes valeurs tout au long de la boucle et les valeurs changeantes de i, est-ce ce que vous voulez et ce dont vous avez besoin ?

 
RaptorUK:

Vous ne pouvez pas utiliser les Indicator Buffers dans un EA. . ceci explique cela : https://www.mql5.com/en/articles/1456

plus vite et plus lent sont les mêmes valeurs tout au long de la boucle et les valeurs changeantes de i, est-ce ce que vous voulez et ce dont vous avez besoin ?


Ok, merci pour le lien. Je l'avais oublié. C'est beaucoup d'informations à retenir pour moi. C'est un handicap pour les novices LOL.

Donc de toute façon, j'essayais de faire en sorte que les fractales hautes ne se forment que lorsqu'une autre condition se produit, comme le croisement d'iMACD, ou le croisement d'EMA ou d'autres indicateurs.
De sorte que les fractales n'apparaissent sur l'indicateur que lorsque toutes les conditions sont remplies.
Ensuite, je travaillerais sur les fractales basses avec des conditions similaires.

Je vais probablement essayer d'ajouter des conditions encore plus complexes, juste pour apprendre à le faire. Je veux dire que ce ne sera peut-être pas iFractals, mais un autre indicateur avec diverses conditions couplées à d'autres indicateurs également.

La conception est un problème majeur pour moi parce que je ne suis pas expérimenté, donc je n'ai pas vu beaucoup de tactiques ou de théories utilisées dans le code général. Je ne peux donc apprendre qu'en lisant les codes des autres pour le moment, pour voir comment ils fonctionnent et essayer de comprendre ce qu'ils ont fait et en tirer des leçons.

Quoi qu'il en soit, je vais continuer à travailler sur ce sujet, merci.
 
WHRoeder:
Essayez ce changement
Hmmm intéressant

La variable doit donc être déclarée dans la boucle également.


Ok, cela devrait être amusant de jouer avec maintenant, merci à tous.

 

Je préfère instancier une seule fois, toutes les vrbs en boucle, hors de la boucle, en premier. Si vous les déclarez à l'intérieur de la boucle, à chaque itération, le compilateur crée une nouvelle variable. Même si elles semblent identiques, en réalité elles ne le sont pas.

 double     faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN
           slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL        
  
    for(i=Bars-1; i>=0; i--)
     {
            faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i), //MODE_MAIN
            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i); //MODE_SIGNAL 
 
diostar:
Je préfère instancier une seule fois, toutes les vrbs en boucle, hors de la boucle, en premier. Si vous les déclarez à l'intérieur de la boucle, à chaque itération, le compilateur crée une nouvelle variable. Même si elles semblent identiques, en réalité elles ne le sont pas.
Comment êtes-vous arrivé à cette conclusion exactement et quelle est la différence fonctionnelle?