Comment coder ? - page 108

 

Exécution d'un script MetaTrader à partir de la ligne de commande

Je veux pouvoir exécuter un script ou un programme à partir de la ligne de commande pour exécuter un ordre d'achat. Il n'y a pas de règles. Lorsque je le tape à partir de la ligne de commande, il doit acheter une position longue EURUSD.

Comment cela peut-il être fait ?

Merci,

paco

 

Indicateur simple basé sur une flèche et EA

Bonjour à tous.

Récemment, j'ai essayé de créer un EA simple qui fonctionnerait sur un indicateur basé sur une flèche. J'essaie de faire en sorte que l'EA maintienne un ordre à tout moment. Si la flèche pointe vers le bas, l'ordre d'achat précédent est fermé et l'ordre de vente est ouvert. Si la flèche pointe vers le haut, l'ordre de vente précédent est fermé et l'ordre d'achat est ouvert. J'utilise le testeur (mode visualisation) pour vérifier mon code. Il semble que peu importe comment j'essaie, l'EA ne ferme pas et n'ouvre pas les positions lorsque l'indicateur de flèche pointe vers le haut ou vers le bas. Le back test confirme que l'EA ne fonctionne pas correctement. Au lieu d'ouvrir et de fermer les ordres aux points de la flèche indiqués par l'indicateur, l'EA ferme/ouvre l'ordre à un moment différent. Je ne comprends pas pourquoi mon code ne fonctionne pas.

Au début de la déclaration de départ, j'ai le code suivant :

if (Time[0] == savedTime) {

return (0) ;

} else {

savedTime = Time[0] ;

}

Ceci (je l'espère) garantira que le code dans l'instruction de départ est exécuté uniquement lorsqu'une nouvelle barre s'est formée. Plus loin dans le corps de la sous-routine de démarrage, j'interroge l'indicateur avec la fonction iCustom. La requête se présente comme suit :

iCustom (... 1)

Le dernier argument de 1 spécifie la barre formée précédemment, c'est pourquoi il n'est pas égal à 0. Pourtant, plus tard, je ferme l'ordre ouvert avec OrderClose et j'en ouvre un nouveau avec OrderSend. Je suppose que les deux fonctions doivent pouvoir s'exécuter instantanément.

En résumé: J'essaie de créer un EA basé sur un indicateur de flèche. L'indicateur pointe soit vers le haut, soit vers le bas. De la façon dont je le vois (et je suis probablement incorrect), la seule chose que je dois faire est de fermer l'ordre précédent et d'en ouvrir un nouveau lorsque la barre suivante s'est formée. J'apprécierais grandement toute contribution à ce problème.

Merci à tous.

 

Quelqu'un peut me dire comment coder pour mettre la date d'expiration dans l'indicateur ?

Merci.

 

Regardez ce fil de discussion https://www.mql5.com/en/forum/174194

 
newdigital:
Regardez ce fil de discussion https://www.mql5.com/en/forum/174194

Merci pour ce lien. J'ai enfin trouvé la page que je cherchais. ici

 

Comment obtenir 2 indicateurs dans une fenêtre séparée ?

Quelqu'un peut-il me rafraîchir la mémoire sur la façon d'obtenir 2 indicateurs sur une fenêtre séparée afin qu'ils se chevauchent l'un l'autre ?

Merci d'avance pour votre aide !

Dave

 

EA nécessaire pour ouvrir les ordres seulement

Bonjour à tous,

Je me demandais si quelqu'un pouvait m'aider à créer un EA qui ouvre seulement 4 ordres différents à 00:00AM GMT pour n'importe quelle paire.

1 achat de lot

1 lot à l'achat

1 lot de vente

1 lot de vente

à ouvrir tous à 00:00GMT

Merci pour votre aide

Ryan56

 
bdht:
Bonjour à tous.

Récemment, j'ai essayé de créer un EA simple qui fonctionnerait sur un indicateur basé sur une flèche. J'essaie de faire en sorte que l'EA maintienne un ordre à tout moment. Si la flèche pointe vers le bas, l'ordre d'achat précédent est fermé et un ordre de vente est ouvert. Si la flèche pointe vers le haut, l'ordre de vente précédent est fermé et l'ordre d'achat est ouvert. J'utilise le testeur (mode visualisation) pour vérifier mon code. Il semble que peu importe comment j'essaie, l'EA ne ferme pas et n'ouvre pas les positions lorsque l'indicateur de flèche pointe vers le haut ou vers le bas. Le back test confirme que l'EA ne fonctionne pas correctement. Au lieu d'ouvrir et de fermer les ordres aux points de la flèche indiqués par l'indicateur, l'EA ferme/ouvre l'ordre à un autre moment. Je ne comprends pas pourquoi mon code ne fonctionne pas.

Au début de la déclaration de départ, j'ai le code suivant :

if (Time[0] == savedTime) {

return (0) ;

} else {

savedTime = Time[0] ;

}

Ceci (je l'espère) garantira que le code dans l'instruction de départ est exécuté uniquement lorsqu'une nouvelle barre s'est formée. Plus loin dans le corps de la sous-routine de démarrage, j'interroge l'indicateur avec la fonction iCustom. La requête se présente comme suit :

iCustom (... 1)

Le dernier argument de 1 spécifie la barre formée précédemment, c'est pourquoi il n'est pas égal à 0. Pourtant, plus tard, je ferme l'ordre ouvert avec OrderClose et j'en ouvre un nouveau avec OrderSend. Je suppose que les deux fonctions doivent pouvoir s'exécuter instantanément.

En résumé : J'essaie de créer un EA basé sur un indicateur de flèche. L'indicateur pointe soit vers le haut, soit vers le bas. De la façon dont je le vois (et je suis probablement incorrect), la seule chose que je dois faire est de fermer l'ordre précédent et d'en ouvrir un nouveau lorsque la barre suivante s'est formée. J'apprécierais grandement toute contribution à ce problème.

Merci à tous.

Si vous ne regardez votre signal qu'une fois par barre et que votre "système" ferme et inverse lorsque le signal change, il est important de vérifier la sortie AVANT de vérifier l'entrée. Sinon, lorsqu'un nouveau signal d'entrée est présent, l'EA ne peut pas entrer dans le trade car le précédent est toujours ouvert. Et quand l'EA ferme la position, il n'entrera qu'à la prochaine barre parce que cette partie du code ne vient qu'une fois par barre.

J'espère que cela a du sens (avec mon anglais !).

FerruFx

 
Dave137:
Quelqu'un peut-il me rafraîchir la mémoire sur la façon d'obtenir 2 indicateurs sur une fenêtre séparée de sorte qu'ils se chevauchent l'un l'autre ?

Merci d'avance pour votre aide !

Dave

Regardez cette page : https://www.mql5.com/en/forum/172923

 

Eh bien, ceci va résoudre votre problème de nouvelle barre (je l'ai trouvé dans un article sur mql4.com) :

bool funcIsNewBar()

{

bool res=false;

// the array contains open time of the current (zero) bar

// for 7 (seven) timeframes

static datetime _sTime[7];

int i=6;

int timeFrame = Period();

switch (timeFrame)

{

case 1 : i=0; break;

case 5 : i=2; break;

case 15 : i=3; break;

case 30 : i=4; break;

case 60 : i=5; break;

case 240: i=6; break;

case 1440:break;

default: timeFrame = 1440;

}

//----

if (_sTime==0 || _sTime!=iTime(Symbol(),timeFrame,0))

{

_sTime = iTime(Symbol(),timeFrame,0);

res=true;

}

//----

return(res);

}[/CODE]

Call this function like this

int start()

{

if (funcIsNewBar)

{

//run some code

}

return (0);

}

That'll get code to run ONLY when there is a new bar.

What you need to do is find out in the data window of MT4 what the values are when there is NO arrow being put on the chart by your indicator. For example, the indicator may may have 0's or may be blank.

So all you do then is call the value of the indicator at each open [CODE]varMyIndieValue=iCustom();

if (varMyIndieValue>0) //there's an arrow

{

//run some code

}
bdht:
Bonjour à tous.

Récemment, j'ai essayé de créer un EA simple qui fonctionnerait sur un indicateur basé sur une flèche. J'essaie de faire en sorte que l'EA maintienne un ordre à tout moment. Si la flèche pointe vers le bas, l'ordre d'achat précédent est fermé et l'ordre de vente est ouvert. Si la flèche pointe vers le haut, l'ordre de vente précédent est fermé et l'ordre d'achat est ouvert. J'utilise le testeur (mode visualisation) pour vérifier mon code. Il semble que peu importe comment j'essaie, l'EA ne ferme pas et n'ouvre pas les positions lorsque l'indicateur de flèche pointe vers le haut ou vers le bas. Le back test confirme que l'EA ne fonctionne pas correctement. Au lieu d'ouvrir et de fermer les ordres aux points de la flèche indiqués par l'indicateur, l'EA ferme/ouvre l'ordre à un autre moment. Je ne comprends pas pourquoi mon code ne fonctionne pas.

Au début de la déclaration de départ, j'ai le code suivant :

if (Time[0] == savedTime) {

return (0) ;

} else {

savedTime = Time[0] ;

}

Ceci (je l'espère) garantira que le code dans l'instruction de départ est exécuté uniquement lorsqu'une nouvelle barre s'est formée. Plus loin dans le corps de la sous-routine de démarrage, j'interroge l'indicateur avec la fonction iCustom. La requête se présente comme suit :

iCustom (... 1)

Le dernier argument de 1 spécifie la barre formée précédemment, c'est pourquoi il n'est pas égal à 0. Pourtant, plus tard, je ferme l'ordre ouvert avec OrderClose et j'en ouvre un nouveau avec OrderSend. Je suppose que les deux fonctions doivent pouvoir s'exécuter instantanément.

En résumé : J'essaie de créer un EA basé sur un indicateur de flèche. L'indicateur pointe soit vers le haut, soit vers le bas. De la façon dont je le vois (et je suis probablement incorrect), la seule chose que je dois faire est de fermer l'ordre précédent et d'en ouvrir un nouveau lorsque la barre suivante s'est formée. J'apprécierais grandement toute contribution à ce problème.

Merci à tous.