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

 

Mon EA ne fonctionne pas avec la fonction Sleep() pendant les tests.

Je veux que mon conseiller expert se fige pendant un long moment après la fermeture de l'ordre, mais il continue à faire de fausses ouvertures à la place.


bool cl() {if (OrderSelect(0,SELECT_BY_POS)==true){ int t=OrderType() ;
double l=OrderLots() ;
int tik=OrderTicket();Alert("tik=", tik) ;
}
if (t==OP_BUY) OrderClose(tik,l,Bid,3,Red) ;
if (t==OP_SELL) OrderClose(tik,l,Ask,3,Green) ;
Sleep(300000000) ;
}

 

Laveille ne fonctionne pas sur le testeur.

 

J'aimerais savoir s'il est possible pour un EA de réagir au changement de couleur d'un indicateur, par exemple vert-achat-rouge-vente.

et sur l'apparition de différentes icônes à l'écran ... peut-être existe-t-il une fonction dans MT4 ?

 
unumi >> :

Je voudrais savoir s'il est possible que le conseiller expert réagisse à un changement de couleur de l'indicateur, par exemple vert-achat-rouge-vente.

Et pour l'apparition de différentes icônes à l'écran... peut-être existe-t-il une fonction dans MT4 ?

Si l'indicateur change de couleur, alors soit a) sa ligne est tracée sur différents tampons, il suffit donc de les interroger pour comprendre l'état (dans MT4, la couleur des tampons ne peut pas être modifiée dynamiquement, contrairement à MT5), soit b) la ligne de l'indicateur est tracée par des objets de la grille - il suffit alors de lire le ObjectGet(....).

Il en va de même pour les icônes : elles peuvent être produites sous forme de code via un tampon ou sous forme d'objets.

 
Svinozavr >> :

Si l'indicateur change de couleur, alors soit a) sa ligne est affichée par différents tampons et il suffit de les interroger pour comprendre l'état (dans MT4, la couleur du tampon ne peut pas être modifiée dynamiquement, contrairement à MT5), soit b) la ligne de l'indicateur est affichée par des objets gr.- alors il suffit de lire les propriétés ObjectGet(....).

Il en va de même pour les icônes - elles peuvent être dessinées comme un code en utilisant le tampon, ou comme des objets.

>> Merci, j'ai compris.

 

Bonne nuit.

Pouvez-vous me conseiller, j'ai deux questions connexes.

1. Comment mettre à zéro les éléments du tableau à chaque tick (si nécessaire selon l'exemple).

2. Comment additionner correctement les valeurs des éléments d'un tableau.

Par exemple :

A chaque tic, les éléments du tableau sont remplis, on peut remplir 1 ou 2 ou 3 ou 4..... ou 15 éléments,

mais à chaque fois, j'ai besoin de la somme arithmétique des valeurs des éléments du tableau.

 
gvi2504 писал(а) >>

Bonne nuit.

Pouvez-vous me conseiller, j'ai deux questions connexes.

1. Comment mettre à zéro les éléments du tableau à chaque tick (si nécessaire selon l'exemple).

2. Comment additionner correctement les valeurs des éléments d'un tableau.

Par exemple :

A chaque tic, les éléments du tableau sont remplis, on peut remplir 1 ou 2 ou 3 ou 4..... ou 15 éléments,

mais à chaque fois, j'ai besoin de la somme arithmétique des valeurs des éléments du tableau.

1. Fonction ArrayInitialize(ArrayName,0).

2. Déclarer une variable, par exemple somme, lui attribuer la valeur 0, puis au cours du remplissage du tableau ajouter une valeur à cette variable.

 
Integer >> :

1. Fonction ArrayInitialize(ArrayName,0).

2. Déclarez une variable, par exemple sum, attribuez-lui la valeur 0, puis ajoutez une valeur à cette variable au fur et à mesure que le tableau se remplit.

Super.

Juste ce dont vous avez besoin. >>Merci beaucoup.

 
Bion писал(а) >>

Sleep(300000000) ;

Un sommeil aussi long n'est pas une option, même si Sleep() fonctionnerait dans le testeur. Après son ouverture, l'heure peut être mémorisée :

LastTime=TimeCurrent() ;

Au début de la fonction start(), vérifiez :

si(TimeCurrent()<LastTime+Pause)return(0) ;

Pause - temps de "sommeil" après l'ouverture (en secondes).

 
Integer писал(а) >>

Un temps de sommeil aussi long n'est pas une option, même si Sleep() fonctionnerait dans le testeur. Après l'ouverture, vous pouvez vous souvenir de l'heure d'ouverture :

LastTime=TimeCurrent() ;

Au début de la fonction start(), vérifiez :

si(TimeCurrent()<LastTime+Pause)return(0) ;

Pause - temps de "sommeil" après l'ouverture (en secondes).

J'ai fait comme vous l'avez conseillé.

datetime LastTime ;
datetime Pause=3600 ;

int start()
{
si(TimeCurrent()<LastTime+Pause)return(0) ;

...

bool cl() {if(OrderSelect(0,SELECT_BY_POS)==true){ int t=OrderType() ;
double l=OrderLots() ;
int tik=OrderTicket();Alert("tik=", tik) ;
}
si (t==OP_BUY) OrderClose(tik,l,Bid,3,Red) ;
si (t==OP_SELL) OrderClose(tik,l,Ask,3,Green) ;
LastTime=TimeCurrent() ;
}

Cependant, dans le testeur, l'ordre s'ouvre en fonction de la condition mais ne réagit pas à l'heure.

De plus, le testeur ne montre aucune réaction au paramètre "time the pending order exists", c'est-à-dire que l'ordre n'est pas supprimé quand il est temps de le supprimer.

C'est censé être comme ça ?

Comment faire pour que le testeur prenne en compte le temps écoulé depuis la clôture de la commande ?

Raison: