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

 
makssub #:

Donnez un exemple, car je suis déjà un peu perdu. Si ça ne pose pas trop de problèmes. Merci

Dans la boucle pour rechercher les commandes :

if (OrderOpenPrice()<previous_value)
   {
   previous_value=OrderOpenPrice();
   nearest_order=OrderTicket();
   }

Avant la boucle, initialiser previous_value=DBL_MAX a nearest_order=0

 
Taras Slobodyanik #:

dans la boucle de commande :

initialiser previous_value=DBL_MAX a nearest_order=0 avant la boucle

Exactement. Merci. Travaux

 
Taras Slobodyanik #:

dans la boucle de commande :

initialiser previous_value=DBL_MAX a nearest_order=0 avant la boucle

DBL_MAX est catégorique).
 
Valeriy Yastremskiy #:
DBL_MAX est catégorique).

L'essentiel fonctionne)

Comment trouver OP_BUY avec le maximum d'OrderOpenPrice et déterminer son OrderProfit.
Je n'arrive pas à les assembler, tout fonctionne par le cul... Si vous pouvez me donner un exemple tout de suite) Merci)

 
makssub #:

L'essentiel fonctionne)

Comment trouver OP_BUY avec le maximum d'OrderOpenPrice et déterminer son OrderProfit.
Je n'arrive pas à les assembler, tout fonctionne par le cul... Si vous pouvez me donner un exemple tout de suite) Merci)

previous_value=0;

if (OrderOpenPrice()>previous_value)
   {
   previous_value=OrderOpenPrice();
   profit_order=OrderProfit();
   }
 
MakarFX #:

Je voulais juste dire que j'ai fini.

Mais vous l'avez rendu plus compact. Je vais suivre votre suggestion).

Merci

 
Comment travailler avec un fichier dans le programme mql5 sans écrire le fichier sur le disque, mais en travaillant uniquement en RAM, pour accélérer. Je veux transférer des données d'un programme mql5 à un programme sur mon ordinateur. Est-il possible de le faire sans fonctions réseau ? Il ne doit pas nécessairement s'agir d'un fichier, d'un tableau ou d'une variable ; c'est encore mieux. Je ne connais que deux moyens, le module d'intégration python et le web socket, existe-t-il un autre moyen ?
 

Je supprime tous les objets dans OnDeInit() par boucle (les flèches indiquant les barres de signalisation et un bouton) :

const int obj_total=ObjectsTotal();

Print("ObjectsTotal ",obj_total);

for(int i=0 ; i < obj_total ; i++){
 Print("ObjectName ",ObjectName(i),", i = ",i);
 ObjectDelete(ObjectName(i));
}

Je sais qu'il existe ObjectsDeleteAll(), mais si je le fais à travers une boucle, seule la moitié des objets est supprimée en une seule fois. En fait, voici le travail de la boucle et je ne comprends pas pourquoi cela se passe ainsi :

2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 20
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 19
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 18
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 17
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 16
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 15
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 14
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 13
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 12
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 11
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName button1, i = 10
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0008, i = 9
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0006, i = 8
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0004, i = 7
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0002, i = 6
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0000, i = 5
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0008, i = 4
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0006, i = 3
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0004, i = 2
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0002, i = 1
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0000, i = 0
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectsTotal 21
 
Nerd Trader #:

Je supprime tous les objets dans OnDeInit() par boucle (les flèches indiquant les barres de signalisation et un bouton) :

Je sais qu'il existe ObjectsDeleteAll(), mais si je le fais par le biais d'une boucle, seule la moitié des objets est supprimée en une seule fois. En fait, voici comment la boucle fonctionne et je ne comprends pas pourquoi cela se passe ainsi :

La boucle lors de la suppression devrait être inversée :

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

et ceci s'applique non seulement à la suppression des objets graphiques, mais en général à la suppression de tout objet dans les listes du terminal.

 
Nerd Trader #:

Je supprime tous les objets dans OnDeInit() par boucle (les flèches indiquant les barres de signalisation et un bouton) :

Je sais qu'il existe ObjectsDeleteAll(), mais si je le fais à travers une boucle, seule la moitié des objets est supprimée en une seule fois. En fait, voici comment la boucle fonctionne et je ne comprends pas pourquoi cela se produit :

mais si vous essayez de cette façon - seulement vous devez mettre tous les noms

string   m_name[]= {"button1","ArrowUp0008","ArrowDown0008","ArrowUp0006","ArrowDown0006"};
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   for(int i=0; i<ArraySize(m_name); i++)
     {
      ObjectDelete(0,m_name[i]);
     }
//---
  }
//+------------------------------------------------------------------+
Raison: