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

 
Alexandr Nikolaev:
Il s'avère donc que OrderSelect by ticket à partir des ordres fermés et supprimés ne recherche que dans l'historique chargé dans le terminal ? Il n'y a aucune information à ce sujet dans le manuel.

oui

En fait, l'EA n'a accès qu'aux données que vous trouvez dans le terminal

Cela s'applique également à l'historique des graphiques, si vous le limitez, l'EA ne pourra pas non plus accéder aux barres du graphique que vous ne pouvez pas voir dans le terminal.


Aleksey Mavrin:

Dans la description de OrdersHistoryTotal, il est dit que

Lors de la sélection d'une commande par ticket :

Le paramètre "pool" est ignoré

https://docs.mql4.com/ru/trading/orderselect
 
Quelqu'un peut-il me dire comment obtenir la poignée du dernier fichier dans le dossier sans connaître son nom. En d'autres termes, lorsque vous exécutez le script, vous devez vous référer au fichier le plus récemment créé, que je ne parviens pas à mettre dans la boucle. MQL4
 
hoka777:
Quelqu'un peut-il me dire comment obtenir l'identifiant du dernier fichier dans le dossier sans connaître son nom ? En d'autres termes, lorsque j'exécute le script, je dois faire référence au fichier le plus récemment créé, mais je ne sais pas quoi mettre dans la boucle. MQL4

FileFindFirst, FileFindNext, FileGetInteger

 

que signifie cette entrée ?

int tf=0x0001|0x0002|0x0004|0x0008|0x0010|0x0020|0x0040;
 
Seric29:

que signifie cette entrée ?

Egale à cela :

int tf=1|2|4|8|16|32|64;

Quelqu'un utilise des drapeaux quelque part pour quelque chose. Cette entrée indique qu'il y a 7 drapeaux stockés dans la variable tf, et qu'ils sont tous levés.

 

Suivi de la commande.

Bonjour à tous, Messieurs du forum.

Confronté à la nécessité de suivre les commandes de la photocopieuse, il a été surpris par la complexité de la question.

Tâche.

Suivre l'ouverture, la fermeture et la modification des ordres de marché et des ordres en attente avec le moins de retard et de charge possible sur le système.

Solutions possibles.

1. Le suivi de l'ensemble de la liste des commandes à chaque tick n'est pas encore très intéressant.

2. MQL5 possède de bonnes fonctions OnTrade() et OnTradeTransaction(), mais je n'ai pas trouvé d'analogues dans MQL4.

3. Les lignes de dernier ordre et leurs manipulations de TP etSL sur le graphique semblent être assez attrayantes, en utilisant OnChartEvent, mais ces objets ne sont pas visibles et ne sont pas traités par la fonction. Il existe peut-être un moyen de les détecter ?

4. je pense maintenant à la possibilité d'obtenir des informations à partir du journal général. Là aussi, vous devrez surveiller, mais moins.

Je n'ai pas encore trouvé de solution satisfaisante, peut-être quelqu'un a-t-il déjà fait des recherches ?

 
Artyom Trishkin:

Egale à cela :

Quelqu'un quelque part utilise les drapeaux pour quelque chose. Cette entrée indique qu'il y a 7 drapeaux stockés dans la variable tf, et qu'ils sont tous levés.

int tf=1|2|4|8|16|32|64;

Et pourquoi sont-ils écrits à travers un bâton vertical comment l'utiliser ? Peut-on accéder à chaque partie de ce drapeau ? Voici un code comme celui-ci.

    if(_Period==1440){diff=86399; tf=0x0001|0x0002|0x0004|0x0008|0x0010|0x0020|0x0040;}// выбор старшего ТФ, с него скрипт рисует на младших ТФ
    if(_Period==240) {diff=14340; tf=0x0001|0x0002|0x0004|0x0008|0x0010|0x0020;}
    if(_Period==60)  {diff=3540;  tf=0x0001|0x0002|0x0004|0x0008|0x0010;}
    if(_Period==30)  {diff=1740;  tf=0x0001|0x0002|0x0004|0x0008;}
    if(_Period==15)  {diff=840;   tf=0x0001|0x0002|0x0004;}
    if(_Period==5)   {diff=240;   tf=0x0001|0x0002;}  

    cl_timeM1=op_timeM1 + diff ;                    // координата даты и времени бара М1 по цене CLOSE старшего ТФ
    cl_NumBarM1=iBarShift(NULL,PERIOD_M1,cl_timeM1);// индекс бара М1
    cl_priceM1=iClose(NULL,PERIOD_M1,cl_NumBarM1);  // координата цены CLOSE бара М1
      
//--- трендовые линии -----------------------------------------------+ 
   for(i=0;i<1000000;i++){name1="Point_"+i; if(ObjectFind(name1)<0) break;}     // позволяет рисовать множество объектов с одинаковым именем, добавляя к имени порядковый номер
  
   ObjectCreate(0,name1,OBJ_TREND,0,op_timeM1,op_priceM1,cl_timeM1,cl_priceM1); // создать объект трендовая линия с координатами цены и времени  
   ObjectSet(name1,OBJPROP_COLOR,clrWhite);                                     // задать цвет объекта
   ObjectSet(name1,OBJPROP_STYLE,STYLE_DASH);                                   // задать стиль объекта (пунктир, линия...)
   ObjectSet(name1,OBJPROP_RAY,false);
   Строчка ниже будет отрисовываться нужное количество раз или что?
   ObjectSet(name1,OBJPROP_TIMEFRAMES,tf);    
 
Seric29:

Et pourquoi sont-ils écrits à travers un bâton vertical comment l'utiliser ?

tant que vous l'appelez un "bâton vertical", vous ne pouvez pas lire ce code

lire l'aidehttps://www.mql5.com/ru/docs/basis/operations/bit

 
Igor Makanu:

tant que vous l'appelez "bâton vertical" vous ne pourrez pas lire ce code

lire l'aidehttps://www.mql5.com/ru/docs/basis/operations/bit

Je l'ai lu (je ne sais pas combien de fois maintenant) et je le comprends mal car il n'y a pas d'exemples de son utilisation et on ne sait pas à quoi il sert. Il existe un exemple

int a=305;
int b=a;      
int shift=37; 
shift++; 
a=a>>shift;   // 38 в двоичном представлении будет выглядеть как '100110', младшие 5 бит '00110' представляют число 6 
b=b>>6;

Y a-t-il un moyen de rendre cette ligne

if(_Period==1440){diff=86399; tf=0x0001|0x0002|0x0004|0x0008|0x0010|0x0020|0x0040;}

peut-on écrire plus court par le biais du compteur ?

 
Seric29:

Je l'ai lu (je ne sais pas combien de fois) et je le comprends mal car il n'y a pas d'exemples d'utilisation et on ne sait pas à quoi il sert. Il y a un exemple.

Vous avez lu le mauvais exemple

Opération OU par bit

OU par bit des représentations binaires de x et y. La valeur de l'expression contient 1 dans tous les endroits où x ou y ne contient pas 0, et 0 dans tous les autres endroits.

b = x | y ;

Exemple :

 char a='a',b='b';
//--- операция ИЛИ
   char c=a|b;
   Print("a = ",a,"  b = ",b);
   Print("a | b = ",c);
// Результат будет такой:
// a = 97   b = 98
// a | b = 99
Raison: