Questions des débutants MQL4 MT4 MetaTrader 4 - page 236

 
s4sha45:

Bonjour à tous, je viens de commencer à apprendre comment écrire un robot de trading simple à partir des exemples des vidéos YouTube. Je veux écrire un script pour ouvrir le premierordre d'achat, et il doit s'ouvrir si je n'ai pas d'autres ordres ouverts, le script a écrit cela, mais l'ordre ne s'ouvre pas, s'il vous plaît dites-moi où est l'erreur!

<

void OnTick()

{

si(OP_SELL==0 && OP_BUY==0)

int ticket=OrderSend(Symbol(),OP_BUY,Lot1,Ask,Slippage,StopLoss,TakeProfit, "Mon ordre",MagicNumber,0,clrGreen) ;

>

Vous avez écrit (mot à mot en russe) :

Si 1 est égal à 0 et 0 est égal à 0, alors ouvrez une position.

 
Artyom Trishkin:

Vous avez écrit (mot à mot en russe) :

Si 1 est égal à 0 et 0 est égal à 0, alors ouvrez une position.

Dans la vidéo, l'auteur a écrit cette ligne comme if (b==0&& s==0) et cela a fonctionné. et avant cela il n'a pas entré de variables b et s. peut-être que la version est ancienne. si c'est faux, alors à quoi devrait ressembler la ligne qui détermine que je n'ai pas d'ordres maintenant ?
 
bool FindOrder(int eType, int eMagic, string eSymbol)
   {
   for(int i=OrdersTotal()-1; i>=0; i--)
      {
      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if(OrderCloseTime()>0) continue;
      if(OrderSymbol()!=eSymbol) continue;
      if(OrderMagicNumber()!=eMagic) continue;
      if(OrderType()!=eType) continue;
      return(true);
      }
   return(false);
   }
bool b=FindOrder(OP_BUY,Magic,Symbol());
if(b)
   {
   
   }
 
s4sha45:

Bonjour à tous, je viens de commencer à apprendre comment écrire un robot de trading simple à partir des exemples des vidéos YouTube. Je veux écrire un script pour ouvrir le premierordre d'achat, et il doit s'ouvrir si je n'ai pas d'autres ordres ouverts, le script a écrit cela, mais l'ordre ne s'ouvre pas, s'il vous plaît dites-moi où est l'erreur!

<

void OnTick()

  {

  if (OrdersTotal()==0)   int ticket=OrderSend(Symbol(),OP_BUY,Lot1,Ask,Slippage,StopLoss,TakeProfit,"My order",MagicNumber,0,clrGreen);

  }

Si vous devez ouvrir un ordre lorsqu'il n'y a pas d'ordre d'achat, de vente, de stop ou de limite.

OrdersTotal()
Les commandes clôturées ne sont pas prises en compte.
 
Александр:

Si vous devez ouvrir un ordre lorsqu'il n'y a pas d'ordre d'achat, de vente, de stop ou de limite.

Les commandes clôturées ne sont pas prises en compte.
Merci !
 

Bonsoir, j'ai une question : j'ai besoin de comparer les prix du marché à chaque tick avec les prix d'un certain fichier csv (7 colonnes), et les ordres sont regroupés en séries et le nombre d'ordres dans chaque série peut être arbitraire. Je veux comprendre ce qui serait le plus rapide : passer du temps à l'initialisation pour créer un tableau avec toutes les données de chaque ordre, puis itérer sur le tableau à chaque tick, ou ouvrir le fichier et tout copier dans le curseur à chaque fois. Je me demande quel est le temps approximatif pour accéder au fichier et au tableau, combien de temps je vais gagner. Merci !

 
Karomos:

Bonsoir, j'ai une question : j'ai besoin de comparer les prix du marché à chaque tick avec les prix d'un certain fichier csv (7 colonnes), et les ordres sont regroupés en séries et le nombre d'ordres dans chaque série peut être arbitraire. Je veux comprendre ce qui serait le plus rapide : passer du temps à l'initialisation pour créer un tableau avec toutes les données de chaque ordre, puis itérer sur le tableau à chaque tick, ou ouvrir le fichier et tout copier dans le curseur à chaque fois. Je me demande quel est le temps approximatif pour accéder au fichier et au tableau, combien de temps je vais gagner. Merci !

Ce que vous avez écrit n'est pas très clair, mais l'accès à la mémoire est définitivement plus rapide que la lecture d'un fichier.

 

Bonjour. Pouvez-vous me dire s'il est possible d'appeler la fenêtre de paramètres de l'EA de manière programmatique ?

Leproblème est que les paramètres ne peuvent être initialisés que par des constantes et que je veux d'abord les calculer à l'aide d'un certain algorithme.

J'ai des niveaux BUY_STOP et SELL_STOP dans les paramètres de mon EA. En fait, le conseiller expert peut calculer ces niveaux par lui-même dans la plupart des cas, je dois juste vérifier leur exactitude.

Je veux donc que mon EA calcule ces niveaux au démarrage, les mette dans les paramètres et affiche la fenêtre des paramètres. Si elles sont correctes, j'appuie sur OK et l'EA poursuit son fonctionnement normal. Si mon conseiller expert a identifié des niveaux incorrects, je les corrige pour obtenir les valeurs correctes. S'il est impossible d'afficher la fenêtre de paramètres de manière programmatique, dites-nous alors si nous pouvons d'une manière ou d'une autre initialiser les paramètres (j'ai écrit une fonction pour leur calcul) AVANT d'afficher la fenêtre de paramètres de l'EA.

 

Chers experts !

Pouvez-vous me dire comment trouver un mandat ?

La situation est la suivante :

- mon EA ouvre 2 ordres en même temps. SL est le même, TP n'est pas fixé.

- Et puis, dans certaines circonstances, mon EA fermera le premier ordre et je devrai corriger le SL dans le second.

La question est de savoir comment trouver le deuxième ordre.

Le problème est qu'il peut y avoir plusieurs paires ouvertes. Mais le moment de l'ouverture est différent pour chaque paire.


A mon avis, il peut y avoir de nombreuses variantes. Comment le rendre plus facile et plus correct ?

Je ne veux pas écrire le billet dans les commentaires car le courtier pourrait le supprimer.

En fait, on peut donner un autre magik au deuxième ordre. Mais cela ne résout pas le problème.

On peut chercher par heure ou par prix d'ouverture. Mais où est la garantie que la deuxième commande sera ouverte au même prix ?

Que conseillez-vous ?

 

L'indicateur de MT5 dessine une ligne en deux couleurs.

Les valeurs de la ligne sont dans le même tampon.

Existe-t-il un moyen d'identifier la couleur de la ligne lors de la demande de valeurs à l'indicateur ?