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

 

Aidez-moi !

Seules deux lignes MAH sont affichées, alors que le code est équivalent pour les quatre lignes.Quel est le problème ?

#property indicator_separate_window // L'indicateur est dessiné dans une fenêtre séparée.
#property indicator_buffers 4 // Nombre de tampons
#property indicator_color1 Blue // Couleur de la première ligne
#property indicator_color2 Red // Couleur de la deuxième ligne
#propriété indicateur_color3 Olive
#propriété indicateur_color4 Teal


double Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[] ; // déclaration de tableau (pour les tampons indicateurs)
//--------------------------------------------------------------------
int init() // Fonction spéciale init()
{
SetIndexBuffer(0,Buf_MA40) ; // Affectation d'un tableau au tampon
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);// Style de ligne
SetIndexBuffer(1,Buf_MA20) ; // Affectation d'un tableau au tampon
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//Style de ligne
SetIndexBuffer(3,Buf_ROC_MA40) ; // Affectation d'un tableau au tampon
SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2);//Style de ligne
SetIndexBuffer(4,Buf_ROC_MA40) ; // Affectation d'un tableau au tampon
SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,2);// Style de ligne
return ; // Quitter la fonction spéciale init()
}
//--------------------------------------------------------------------
int start() // Fonction spéciale start()
{
int i, // Index de la barre
Histoire=3000,
counted_bars ; // nombre de barres calculées
double ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//--------------------------------------------------------------------
// Counted_bars=IndicatorCounted() ; // Nombre de barres comptées
i=Bars;//Counted_bars-1 ; // Index du premier non compté
while(i>=0) //Cycle à travers les barres non comptées
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i) ;
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20) ;
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i) ;
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40) ;
Alert("ma20=",ma20, " ma20_s=",ma20_s, " ma40_s=",ma40_s, " ma40=",ma40) ;
MA40_s[i]=ma40_s ;
MA40[i]=ma40 ;
MA20[i]=ma20 ;
MA20_s[i]=ma20_s ;
Buf_MA40[i]=ma40 ;
Buf_MA20[i]=ma20 ;
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
i-- ;
// Calcul de l'indice de la barre suivante
}
//--------------------------------------------------------------------
return ; // Sortie de la fonction spéciale start()
}

 

1.recommandez, s'il vous plaît, un débogueur (de préférence avec un débogage étape par étape afin de pouvoir voir les valeurs intermédiaires des variables).

Comment puis-je afficher les données de débogage et où (dans quelle fenêtre), car il est peu pratique d'utiliser les alertes.

3) Comment puis-je mettre à jour la version MQL ?

 

Veuillez me conseiller !

Comment puis-je faire en sorte que mon conseiller expert ne traite que sur la session européenne ?

 
VNG писал(а) >>

Aidez-moi !

Seules deux lignes de MAshek sont produites, bien que le code soit équivalent pour les quatre lignes.Quel est le problème ?

int init() // Специальная функция init()
{
SetIndexBuffer(0, Buf_MA40); // Назначение массива буферу
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
SetIndexBuffer(1, Buf_MA20); // Назначение массива буферу
SetIndexStyle (1,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
SetIndexBuffer(2, Buf_ROC_MA40); // Назначение массива буферу
SetIndexStyle (2,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
SetIndexBuffer(3, Buf_ROC_MA40); // Назначение массива буферу
SetIndexStyle (3,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
return; // Выход из спец. ф-ии init()
}

J'ai trouvé une erreur. Après le tampon 1 est venu immédiatement le tampon 3. Le tampon 2 a été sauté.

Tu n'aurais pas dû sortir les mélanges et la différence dans une seule fenêtre. Ils ont plus d'un ordre de grandeur de différence.

 
KoDi писал(а) >>

Veuillez me conseiller !

Comment faire pour que mon EA ne traite que sur la session européenne ?

Il suffit de mettre start au début du module

if(Hour()<7 || Hour()>15)return(0) ;

 

Regardez à nouveau le code. J'ai supprimé les MA car les nouvelles valeurs reçues ont une échelle complètement différente.

Toujours rien ne s'affiche.

#property indicator_separate_window // L'indicateur est dessiné dans une fenêtre séparée.
#property indicator_buffers 2 // Nombre de tampons
#property indicator_color1 Blue // Couleur de la première ligne
#property indicator_color2 Red //couleur de la deuxième ligne
//#property indicator_color3 Olive
//#propriété indicator_color4 Teal


double Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[] ; // Déclaration des tableaux (pour les tampons indicateurs)
//--------------------------------------------------------------------
int init() // Fonction spéciale init()
{
//SetIndexBuffer(0,Buf_MA40) ; // Affectation d'un tableau au tampon
//SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);// Style de ligne
//SetIndexBuffer(1,Buf_MA20) ; // Affectation du tableau au tampon
//SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//Style de ligne
SetIndexBuffer(0,Buf_ROC_MA40) ; // Affectation d'un tableau au tampon
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);//Style de ligne
SetIndexBuffer(1,Buf_ROC_MA20) ; // Affectation d'un tableau au tampon
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//Style de ligne
return ; // Quitter la fonction spéciale init()
}
//--------------------------------------------------------------------
int start() // Fonction spéciale start()
{
int i, // indice de la barre
Histoire=3000,
counted_bars ; // nombre de barres calculées
double ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//--------------------------------------------------------------------
// Counted_bars=IndicatorCounted() ; // Nombre de barres comptées
i=Bars;//Counted_bars-1 ; // Index du premier non compté
while(i>=0) //Cycle à travers les barres non comptées
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i) ;
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20) ;
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i) ;
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40) ;
MA40_s[i]=ma40_s ;
MA40[i]=ma40 ;
MA20[i]=ma20 ;
MA20_s[i]=ma20_s ;
Buf_MA40[i]=ma40 ;
Buf_MA20[i]=ma20 ;
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
i-- ;
//Calculer l'indice de la barre suivante
}
//--------------------------------------------------------------------
return ; // Sortie de la fonction spéciale start()
}

 
VNG писал(а) >>

Regardez à nouveau le code. J'ai supprimé les MA car les nouvelles valeurs reçues ont une échelle complètement différente.

Toujours rien ne s'affiche.

#property indicator_separate_window // L'indicateur est dessiné dans une fenêtre séparée.
#property indicator_buffers 2 // Nombre de tampons
#property indicator_color1 Blue // Couleur de la première ligne
#property indicator_color2 Red //couleur de la deuxième ligne
//#property indicator_color3 Olive
//#propriété indicator_color4 Teal


double Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[] ; // Déclaration des tableaux (pour les tampons indicateurs)
//--------------------------------------------------------------------
int init() // Fonction spéciale init()
{
//SetIndexBuffer(0,Buf_MA40) ; // Affectation d'un tableau au tampon
//SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);// Style de ligne
//SetIndexBuffer(1,Buf_MA20) ; // Affectation du tableau au tampon
//SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//Style de ligne
SetIndexBuffer(0,Buf_ROC_MA40) ; // Affectation d'un tableau au tampon
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);//Style de ligne
SetIndexBuffer(1,Buf_ROC_MA20) ; // Affectation d'un tableau au tampon
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//Style de ligne
return ; // Quitter la fonction spéciale init()
}
//--------------------------------------------------------------------
int start() // Fonction spéciale start()
{
int i, // indice de la barre
Histoire=3000,
counted_bars ; // nombre de barres calculées
double ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//--------------------------------------------------------------------
// Counted_bars=IndicatorCounted() ; // Nombre de barres comptées
i=Bars;//Counted_bars-1 ; // Index du premier non compté
while(i>=0) //Cycle à travers les barres non comptées
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i) ;
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20) ;
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i) ;
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40) ;
MA40_s[i]=ma40_s ;
MA40[i]=ma40 ;
MA20[i]=ma20 ;
MA20_s[i]=ma20_s ;
Buf_MA40[i]=ma40 ;
Buf_MA20[i]=ma20 ;
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
i-- ;
// Calcul de l'indice de la barre suivante
}
//--------------------------------------------------------------------
return ; // Sortie de la fonction spéciale start()
}

Il y a trop d'erreurs.

Principale erreur dans le travail avec les tableaux.

Dossiers :
proba.mq4  2 kb
 

Aidez-moi à résoudre ce problème - il y a un signal d'achat/vente, EA ouvre une transaction, fixe un profit et un stop. Et si la transaction est fermée au stop sur la même bougie, alors le conseiller ouvre à nouveau la transaction, et j'ai besoin qu'elle ne soit pas ouverte, c'est-à-dire que sur un signal, une transaction a été ouverte.

Comment faire ?

 
KoDi >> :

Comment faire ?

L'heure de clôture du dernier ordre doit être inférieure à l'heure d'ouverture de la barre actuelle.

Si ce n'est pas le cas, n'ouvrez pas la transaction.

 
TheXpert >> :

L'heure de clôture du dernier ordre doit être inférieure à l'heure d'ouverture de la barre actuelle.

Si ce n'est pas le cas, nous n'ouvrons pas de marché.

>> Je suis confus.

Eh bien, comment va-t-il ouvrir la PREMIÈRE transaction si la condition est d'écrire qu'il n'entre pas avant qu'il y ait au moins une transaction ?

Raison: