[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 519

 
Là encore, la question n'est pas claire. Détruire du graphique ou ne pas compter dans l'EA ? Déconnexion par condition ou ? Se déconnecter d'où et avec quoi ?
Une question spécifique aura une réponse spécifique et rapidement.
 
zhuki >>:
Опять вопрос непонятный. Уничтожить с графика или не считать в эксперте? Отключить по условию или ?. Отключить откуда и чем?
На конкретный вопрос будет конкретный ответ и быстро.

Une fois que les ordres en attente ont été placés, l'indicateur doit être désactivé. Ne pas compter dans le conseiller expert.

 
Vous voulez dire qu'ils ne comptent pas dans l'expert Donc ?
Faites une balise . Une fois que les commandes ont été passées, ne vous référez pas à l'indicateur.
 
Comment pourrais-je ne pas le faire ? L'indicateur envoie constamment des données à un fichier externe, le conseiller expert lit ces données, puis passe des ordres et lit à nouveau les données, ce qui ne devrait pas être le cas.
 
vlandex >>:
А как не обращаться? Данные индикатор выкидывает в внешний файл постоянно, эксперт считывает эти данные, потом выставляет ордера и опять считывает данные, а не должен.

utiliser

CommandesTotal( )
 
Lire la suite...
 
Maintenant, vous savez ce qu'il faut faire.
Utiliser une variable globale. S'il y en a un, l'indicateur ne compte pas et n'écrit pas. Et vice versa.
 
vlandex >>:
Подробнее...

Lisez votre indicateur lorsque la condition est remplie

if(OrdersTotal()==0){lisez votre indicateur}

 
mais veuillez noter que
int OrdersTotal( )
Renvoie le nombre total d'ordres ouverts et en attente.
 

Bonsoir à tous...

J'ai essayé de modifier l'indicateur OsMA pour obtenir des lignes avec le nombre de barres moyennes deSift (Somme de toutes les valeurs positives et négatives de l'indicateur pour la barre Sift divisée par Sift).

Mais pour une raison quelconque, les lectures des lignes ne veulent pas dépendrede la valeur de Sift...

//+------------------------------------------------------------------+
//|                                                         OsMA.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2004, MetaQuotes Software Corp."
#property  link      "http://www.metaquotes.net/"
//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 3
#property  indicator_color1  Silver
#property  indicator_color2  Red
#property  indicator_color3  ForestGreen
//---- indicator parameters
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
extern int Sift=20;
extern int Sift1=100;
//---- indicator buffers
double     ind_buffer1[];
double     ind_buffer2[];
double     ind_buffer3[];
double     ind_buffer4[];
double     ind_buffer5[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- 2 additional buffers are used for counting.
   IndicatorBuffers(3);
//---- drawing settings
   SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);
   SetIndexDrawBegin(0,SignalSMA);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//---- 3 indicator buffers mapping
   if(!SetIndexBuffer(0,ind_buffer1) &&
      !SetIndexBuffer(1,ind_buffer2) &&
      !SetIndexBuffer(2,ind_buffer3))
      Print("cannot set indicator buffers!");
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Moving Average of Oscillator                                     |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- check for possible errors
   if(counted_bars<0) return(-1);
//---- 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<limit; i++)
      ind_buffer2[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd additional buffer
   for(i=0; i<limit; i++)
      ind_buffer3[i]=iMAOnArray(ind_buffer2,Bars,SignalSMA,0,MODE_SMA,i);
//---- main loop
   for(i=0; i<limit; i++)
      ind_buffer1[i]=ind_buffer2[i]-ind_buffer3[i];
//---- done
   for(i=0; i<limit; i++)
      ind_buffer4[i]=(ind_buffer2[i]+ind_buffer3[i])/Sift;
//---------      
   for(i=0; i<limit; i++)
      ind_buffer5[i]=(ind_buffer2[i]+ind_buffer3[i])/Sift1;
//---------      
   return(0);
  }
//+------------------------------------------------------------------+