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

 
41ckm39fi:
J'ai supprimé tout ce qui est lié à PrevSignal mais le message ne s'affiche pas.

Je n'ai pas vu l'éléphant dans la pièce...

faire une initialisation du tampon puisque c'est un indicateur...

#property indicator_chart_window

int init(){

IndicatorBuffers(2) ;

SetIndexBuffer(0,DeMarker_buffer0) ;

SetIndexBuffer(1,MA_buffer1) ;

SetIndexStyle(0,DRAW_NONE) ;

SetIndexStyle(1,DRAW_NONE) ;

}

supprimer l'appel ArraySetAsSeries... et en

DeMarker_buffer0[i]=iDeMarker(NULL,0,14,1);

mettre le dernier paramètre à la place de 1 i

 
keekkenen:

Je n'ai pas vu l'éléphant dans la pièce...

faire une initialisation du tampon puisque c'est un indicateur...

#property indicator_chart_window

int init(){

IndicatorBuffers(2) ;

SetIndexBuffer(0,DeMarker_buffer0) ;

SetIndexBuffer(1,MA_buffer1) ;

SetIndexStyle(0,DRAW_NONE) ;

SetIndexStyle(1,DRAW_NONE) ;

}

supprimer l'appel ArraySetAsSeries... et en

mettre le dernier paramètre à la place de 1 i


Voici ce que vous obtenez :

#property  indicator_level1 0.3
#property  indicator_level2 0.7
#property indicator_chart_window
//---- 
extern int        period_MA            = 5,
                  period_DeMarker      = 14;
//---- 
double            DeMarker_buffer0[],
                  MA_buffer1[],
                  Signal_Buffer2[];       
#define SIGNAL_BAR 1
 //+------------------------------------------------------------------+
int init()
{

IndicatorBuffers(2);

SetIndexBuffer(0,DeMarker_buffer0);

SetIndexBuffer(1,MA_buffer1);

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_NONE);

return(0);
  }
  //+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|   
//+------------------------------------------------------------------+
int start()
  {
  int    i,limit=ArraySize(DeMarker_buffer0);
        
  int    counted_bars=IndicatorCounted();
//----
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//----
  for(i=limit; i>=0; i--)
  DeMarker_buffer0[i]=iDeMarker(NULL,0,14,i);
//---- 
  for(i=limit; i>=0; i--)
  
  MA_buffer1[i]=iMAOnArray(DeMarker_buffer0,limit,5,0,MODE_LWMA,i);
//----  
                if(MA_buffer1[SIGNAL_BAR] - 0.3 > 0 && 0.3 - MA_buffer1[SIGNAL_BAR+1] >= 0)  
//---- 
                                Alert( "sMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );
//----
                if(0.7 - MA_buffer1[SIGNAL_BAR] > 0 && MA_buffer1[SIGNAL_BAR+1] - 0.7 >= 0)
//----               
                                Alert("sMA(", Symbol(), ", ", Period(), ")  -  SELL!!!");
                        
   return(0);
  }

Mais je suis confus par cette ligne

MA_buffer1[i]=iMAOnArray(DeMarker_buffer0,limit,5,0,MODE_LWMA,i);

D'autres indicateurs composés indiquent "barre" au lieu de "limite".

 
41ckm39fi:


C'est ce qui est sorti :

Mais je suis confus par cette ligne

D'autres indicateurs composés indiquent "barre" au lieu de "limite".




Je suis confus aussi... cette fonction iMAOnArray(), je ne suis pas sûr qu'elle puisse calculer correctement la moyenne si le deuxième paramètre est différent de 0, c'est-à-dire le calcul sur l'ensemble du tableau DeMarker_buffer0, mieux vaut mettre 0....
 
keekkenen:
Je suis confus aussi... cette fonction iMAOnArray(), je ne suis pas sûr qu'elle puisse calculer correctement la moyenne si le deuxième paramètre est différent de 0, c'est-à-dire le calcul sur l'ensemble du tableau DeMarker_buffer0, mieux vaut mettre 0....
J'ai mis Bars au lieu de limite et le programme a commencé à donner des messages ! !! Il semble fonctionner comme je le voulais. Seuls les messages sont répétés plusieurs fois jusqu'à ce que la barre de signal se ferme.
 
Bon après-midi. J'ai téléchargé l'EA, je l'ai sauvegardé, je l'ai compilé, j'ai rechargé le terminal. Pouvez-vous me dire pourquoi l'EA ajouté à MT4 n'est pas attaché au graphique. J'ai fait quelque chose de mal ?
 
41ckm39fi:

J'ai prescrit des barres au lieu de...

Seuls les messages sont répétés plusieurs fois jusqu'à ce que la barre de signal se ferme.

0 est toujours correct...

et ramener le contrôle du temps...

static int  PrevTime = Time[0];
//---- 
if(PrevTime >= Time[0] ) return(0);
//---- 
PrevTime = Time[0];

// а здесь проверяйте условия на алерт
 

J'ai oublié de mentionner que la ligne

int    i,limit=ArraySize(DeMarker_buffer0);

J'ai remplacé par

int    i,limit;

et remplacé limite par Barres dans la ligne
.

MA_buffer1[i]=iMAOnArray(DeMarker_buffer0,Bars,5,0,MODE_LWMA,i);

Je vais maintenant essayer de faire comme vous le dites : retourner PrevTime et remplacer le deuxième paramètre Bars par 0.

 

Par exemple, j'ai un conseiller expert qui fonctionne sur mql4.

Lorsque je l'exécute par le biais de variables externes, je fixe certaines valeurs.

Question : Puis-je changer à tout moment

certaines variables du Conseiller Expert pendant son fonctionnement (par exemple, à partir du clavier) et dans ce cas, cela ne provoquerait pas un redémarrage du Conseiller Expert ?

 
Jazzz:

Par exemple, j'ai un conseiller expert qui fonctionne sur mql4.

Lorsque je l'exécute par le biais de variables externes, je fixe certaines valeurs.

Question : Puis-je changer à tout moment

certaines variables du Conseiller Expert pendant son fonctionnement (par exemple, à partir du clavier) et dans ce cas, cela ne provoquerait pas un redémarrage du Conseiller Expert ?


Vous pouvez le faire si vous utilisez des variables de niveau global. Pour modifier leurs valeurs à partir du clavier sans éteindre l'EA, appuyez sur F3 dans le terminal.
 
Merci !