[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 127

 
Non.
 

Cette question : l'indicateur OA standard utilise 2 tampons d'index supplémentaires, qui ne sont pas impliqués dans le rendu de l'indicateur :

//+------------------------------------------------------------------+
//|                                                  Accelerator.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2005, MetaQuotes Software Corp."
#property  link      "http://www.metaquotes.net/"
//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 3
#property  indicator_color1  Black
#property  indicator_color2  Green
#property  indicator_color3  Red
//---- indicator buffers
double     ExtBuffer0[];
double     ExtBuffer1[];
double     ExtBuffer2[];
double     ExtBuffer3[];
double     ExtBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- 2 additional buffers are used for counting.
   IndicatorBuffers(5);
//---- drawing settings
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   IndicatorDigits(Digits+2);
   SetIndexDrawBegin(0,38);
   SetIndexDrawBegin(1,38);
   SetIndexDrawBegin(2,38);
//---- 4 indicator buffers mapping
   SetIndexBuffer(0, ExtBuffer0);
   SetIndexBuffer(1, ExtBuffer1);
   SetIndexBuffer(2, ExtBuffer2);
   SetIndexBuffer(3, ExtBuffer3);
   SetIndexBuffer(4, ExtBuffer4);
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("AC");
   SetIndexLabel(1,NULL);
   SetIndexLabel(2,NULL);
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Accelerator/Decelerator Oscillator                               |
//+------------------------------------------------------------------+
int start()
  {
   int    limit;
   int    counted_bars=IndicatorCounted();
   double prev, current;
//---- last counted bar will be recounted
   if( counted_bars>0) counted_bars--;
   limit=Bars- counted_bars;
//---- macd counted in the 1-st additional buffer
   for(int i=0; i& lt; limit; i++)
      ExtBuffer3[ i]=iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN, i)-
                    iMA(NULL,0,34,0,MODE_SMA,PRICE_MEDIAN, i);
//---- signal line counted in the 2-nd additional buffer
   for( i=0; i< limit; i++)
      ExtBuffer4[ i]=iMAOnArray( ExtBuffer3,Bars,5,0,MODE_SMA, i);
//---- dispatch values between 2 buffers
   bool up=true;
   for( i= limit-1; i>=0; i--)
     {
      current=ExtBuffer3[ i]- ExtBuffer4[ i];
      prev=ExtBuffer3[ i+1]- ExtBuffer4[ i+1];
      if( current> prev) up=true;
      if( current& lt; prev) up=false;
      if(! up)
        {
         ExtBuffer2[ i]= current;
         ExtBuffer1[ i]=0.0;
        }
      else
        {
         ExtBuffer1[ i]= current;
         ExtBuffer2[ i]=0.0;
        }
       ExtBuffer0[ i]= current;
     }
//---- done
   return(0);
  }
//+------------------------------------------------------------------+

Comme vous pouvez le constater, seuls des calculs sont effectués dans ces tableaux. Je ne comprends pas pourquoi ces tableaux devraient se voir attribuer le statut de tampon d'indexation ?

 
neoclassic писал(а) >>

Cette question : l'indicateur OA standard utilise 2 tampons d'index supplémentaires, qui ne sont pas impliqués dans le rendu de l'indicateur :

Comme vous pouvez le constater, seuls des calculs sont effectués dans ces tableaux. Je ne comprends pas, pourquoi ces tableaux doivent-ils avoir le statut de tampons d'index ?

pour définir la taille du tableau !

 

Bonjour aux utilisateurs du forum !

Je suis un programmeur MQL complet. Mais j'aimerais avoir un simple EA comme celui-ci. Ouvre la pose avec un certain lot. J'ai immédiatement fixé un stop fixe (20-30 pips). Après avoir atteint un certain profit (20-30 pips), nous fermons une partie de la position (50%), et pour les positions restantes, le stop est déplacé vers le seuil de rentabilité. Pour le reste de la position, un ordre de profit est placé ou il est contrôlé manuellement. Voici une idée. Je vous serais très reconnaissant de bien vouloir me répondre.

 
vvavva >> :

pour définir la taille du tableau !

mais que faire si l'on doit utiliser un grand nombre de tableaux ? >> (plus de 8)

 

utiliser des tableaux réguliers plutôt que des tableaux tampons

au lieu de

SetIndexBuffer(3,ExtBuffer3);SetIndexBuffer(4,ExtBuffer4) ;

utiliser

ArrayResize(ExtBuffer3,Bars) ; ArrayResize(ExtBuffer4,Bars) ;

 
keekkenen >> :

utiliser des tableaux réguliers plutôt que des tableaux tampons

au lieu de

SetIndexBuffer(3,ExtBuffer3);SetIndexBuffer(4,ExtBuffer4) ;

utiliser

ArrayResize(ExtBuffer3,Bars) ; ArrayResize(ExtBuffer4,Bars) ;


Merci ! !!

 
neoclassic писал(а) >>

Que faire si l'on doit utiliser un grand nombre de tableaux ? (plus de 8)

Les tableaux à dessiner dans l'indicateur ne peuvent pas dépasser la limite spécifiée (je pense que c'est 8) !

Les tableaux pour les calculs ont aussi des limites, mais le nombre est plus grand !

pour contourner les limites de l'utilisation des tableaux, vous devez utiliser des bibliothèques !

 
J'ai une question. Est-il possible de faire un nouveau serveur. Disons qu'aujourd'hui, il y aura les nouvelles, l'heure exacte n'est pas connue. Texte approximatif en un mot, j'ai besoin d'un bip plus long et plus fort pour le faire.
 
Bonjour, dites-moi le plus de raisons possibles pour lesquelles la variable k=Bars peut changer alors qu'une nouvelle barre n'a pas encore commencé à se former (toutes les situations possibles), disons que vous avez changé de paire de devises, de timeframe, de mise à jour de mt4 ou de dc.