Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 457

 

Je ne comprends rien à tout ça. Ma question a été déplacée par le modérateur de MKL5 à MKL4. J'ai suivi le lien - oui, ma question y est suspendue, mais la dernière réponse date du 5.02.2018. Venu ici - aussi MKL4 et la vie est bouillante ... Alors pourquoi le modérateur jette dans un fil mort ? D'accord, passons à autre chose. Maintenant, venons-en au fait : je lance mon "problème" par ici.


Vladimir Karputov:

Pour la condition 1, mettez le numéro magique ID +1, pour la condition 2 le numéro magique +2 et ainsi de suite. De cette façon, vous pouvez alors comprendre que cette position a été ouverte par la condition 1 ou par la condition 2 ...

Après-midi. Je n'ai réussi que pour un seul poste BAY. L'ensemble de magik pour la vente ne fonctionne pas pour une raison quelconque. Tout est absolument identique, à l'exception de la magie elle-même, bien sûr. Qu'est-ce que j'ai fait de mal ?

int total=OrdersTotal();

      for(int i=OrdersTotal()-1;i>=0;i--)

      {

        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

         {

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_BUY && (MathAbs(WPR1)<5))

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow); 

        

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_BUY && OrderMagicNumber==111 && MathAbs(WPR1)<20)

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow);

      

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_SELL && OrderMagicNumber==222 && MathAbs(WPR1)>97.55)

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow); 

           

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_SELL && MathAbs(WPR1)>96)

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow);               

         }

       continue;  

      } 
 
novichok2018:

Je ne comprends rien à tout ça. Ma question a été déplacée par le modérateur de MKL5 à MKL4. J'ai suivi le lien - oui, ma question y est suspendue, mais la dernière réponse date du 5.02.2018. Venu ici - aussi MKL4 et la vie est bouillante ... alors pourquoi le modérateur jette dans un fil mort ? D'accord, passons à autre chose. Maintenant, venons-en au fait : je lance mon "problème" par ici.


Après-midi. Cela n'a fonctionné que pour une seule position BAY. Le magik mis en place pour SELL ne fonctionne pas pour une raison quelconque. Tout est absolument identique, à l'exception du magicien lui-même, bien sûr. Qu'est-ce que j'ai fait de mal ?

1. il ne connaît pas mql4.

2. Pour fermer un ordre avec magic 222, il faut d'abord l'ouvrir avec magic 222. Regardez quel assistant ouvre les ordres de VENTE

3. Après le OrderMagicNumber, il doit y avoir des parenthèses ().

if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_SELL && OrderMagicNumber==222 && MathAbs(WPR1)>97.55)

4. Pourquoi le surligneur est-il dans l'état ?

if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_BUY && (MathAbs(WPR1)<5))
 

Les gars, voici une question : comment mettre des valeurs variables dans un tableau unidimensionnel ?

Ne l'envoyez pas à l'aide - il n'y a AUCUN exemple pour un tel problème.


Disons qu'il existe une variable a, qui change sous certaines conditions.

Je veux un tableau pour stocker les 3 dernières valeurs de cette variable. Comment cela est-il mis en œuvre dans mql4 ?


Je suis en train d'écrire int mas[3] ;

mas[]=a ; à l'intérieur de la boucle, après une condition qui modifie a,

Le compilateur donne ']', mais rien ne fonctionne, bien que logiquement cela devrait. - L'expression attendue, elle veut que je mette une expression inconnue entre parenthèses dans mas[]=a.

Est-ce que MQL4 a une fonction qui remplit le tableau avec une valeur variable à chaque itération de la boucle ?


 
John Smith:

Les gars, voici une question : comment mettre une valeur variable dans un tableau unidimensionnel ?

Ne l'envoyez pas à l'aide - il n'y a AUCUN exemple pour un tel problème.


Disons qu'il existe une variable a, qui change sous certaines conditions.

Je veux un tableau pour stocker les 3 dernières valeurs de cette variable. Comment cela est-il mis en œuvre dans mql4 ?


Je suis en train d'écrire int mas[3] ;

mas[]=a ; à l'intérieur de la boucle, après une condition qui modifie a,

Le compilateur donne ']', mais rien ne fonctionne, bien que logiquement cela devrait. - L'expression attendue, elle veut que je mette une expression inconnue entre parenthèses dans mas[]=a.

MQL4 dispose-t-il d'une fonction qui remplit le tableau avec une valeur variable à chaque itération de la boucle ?


Dans quelle cellule du tableau pensez-vous que la valeur de la variable 'a' est placée, comme ceci : mas[]=a ; ?

Je vous enverrais à l'aide, lisez depuis le début :)

 
John Smith:

Les gars, voici une question : comment mettre des valeurs variables dans un tableau unidimensionnel ?

Ne l'envoyez pas à l'aide - il n' y a AUCUN exemple pour un tel problème.


Disons qu'il existe une variable a, qui change sous certaines conditions.

Je veux un tableau pour stocker les 3 dernières valeurs de cette variable. Comment cela est-il mis en œuvre dans mql4 ?


Je suis en train d'écrire int mas[3] ;

mas[]=a ; à l'intérieur de la boucle, après une condition qui modifie a,

Le compilateur donne ']', mais rien ne fonctionne, bien que logiquement cela devrait. - Il veut que je mette une expression inconnue entre parenthèses dans mas[]=a.

Est-ce que MQL4 a une fonction qui remplit le tableau avec une valeur variable à chaque itération de la boucle ?


Vous devriez peut-être lire non seulement les échantillons de code, mais aussi d'autres lettres.

Voici une citation de la documentation :

Groupe de fonctions pour travailler avec des tableaux

Les tableaux ne peuvent pas avoir plus de quatre dimensions. Chaque dimension est indexée de 0 à dimension_taille-1. Dans le cas particulier d'un tableau unidimensionnel de 50 éléments, appelant le premier élément est array[0], le dernier est array[49].

 
Alexey Viktorov:

1. il ne connaît pas mql4.

2. Pour fermer un ordre avec magic 222, il faut d'abord l'ouvrir avec magic 222. Regardez quel assistant ouvre les ordres de VENTE

3. Après le OrderMagicNumber, il doit y avoir des parenthèses ().

4. Pourquoi est-il marqué dans l'état ?

Je vous remercie de votre réponse. Il est clair que je dois ouvrir avec un magik en premier. J'ai supprimé le ticket de commande et vérifié la logique avec les commentaires. Il s'est avéré que la fermeture des positions se fait en fonction des conditions de la première position ouverte. C'est-à-dire que si vous ouvrez d'abord une position d'achat ou de vente avec la condition 1, puis une deuxième position ouverte avec la même condition mais avec la condition 2, la condition de fermeture est ignorée et la deuxième position est également fermée avec la condition 1 malgré l'autre magie.

J'ai appliqué la rupture après la clôture de l'ordre mais la solution a été tiède :seulement si une position du même type est ouverte. Si, par exemple, une position de vente a été ouverte en premier et n'a pas encore été fermée, alors qu'une position d'achat est ouverte et fermée, la position de vente ne voit pas de conditions pour être fermée jusqu'à ce qu'une autre position de vente soit ouverte et fermée (conformément à ses conditions). Et si BAY ouvre et ferme à nouveau, il manque à nouveau ses conditions de fermeture. Alors, que faire ?

 
Bonjour à tous. Chers programmeurs, s'il vous plaît aidez-moi à insérer une ligne avec la possibilité de spécifier un fichier son pour chaque Alert3.Lv1;2;3, pour déclencher un son différent que vous spécifiez. Je ne suis moi-même pas doué pour le codage et la programmation.
Dossiers :
 
Bonjour messieurs les programmeurs et les connaisseurs de MQL ! J'ai un très bon conseiller expert qui arrête l'auto-trading en fonction des nouvelles. J'en ai trouvé un sur le net qui soit ne fonctionne pas, soit fonctionne mal. Ou quelqu'un peut-il en écrire un basé sur l'indicateur urdala ?
 
Salut les gars. Pouvez-vous me dire comment supprimer l'erreur [Trade context is busy] ?
 
Rustam Bikbulatov:
Salut les gars. Pouvez-vous me dire comment supprimer l'erreur [Trade context is busy] ?
if(!IsTradeContextBusy())   //торговый поток свободен
  {
 // здесь оформляем запрос
 // на торговую операцию

  }
Raison: