Questions des débutants MQL5 MT5 MetaTrader 5 - page 1404

 
Il y a un robot de trading MT4 existant, j'ajoute le code avec le lien vers le compte de trading, mais il échoue toujours. Lance une erreur. J'ai besoin de quelqu'un pour m'aider à le faire. mon télégramme@Starinkov je serais très reconnaissant)))))
 

J'espère que la traduction sera fidèle, mais évidemment elle ne le sera pas...

C'est pour cette raison, entre autres, que nous n'avons pas besoin de Global THREADS...

Sinon, nous n'aurions pas de Forums régionaux...

Un geste étrange...

:(

 
Bonjour, j'ai construit un ordinateur avec 24 cœurs pour accélérer l'optimisation et pouvoir optimiser les performances des stratégies sur les petites TF, comme M1, M2, etc. Lorsque je le démarre, je constate que le processus se fige parfois et se bloque pendant un long moment. Je joins trois photos à ce sujet. Sur mon ancien ordinateur (8 cœurs), rien de tel ne se produit. De plus, il n'y a aucun avantage à utiliser un ordinateur puissant en raison de ce blocage. Actuellement, je peux voir que 8 cœurs donnent un résultat plus rapide que 24x. Et je voulais obtenir une vitesse de 10x. Peut-être y a-t-il quelque chose que je dois ajuster quelque part ? Veuillez me conseiller si quelqu'un sait ce que cela peut être.
 

Bonjour.

Je veux faire un fichier d'inclusion universel qui peut être inclus avec n'importe quelle EA. Et il devrait être limité à une inclusion sans aucun code supplémentaire.

Le problème est que le fichier utilise OnTimer() comme point d'entrée.

Et si EA (auquel mon fichier include se connecte) utilise également OnTimer() ? Y a-t-il une solution ?

 

Bon après-midi. Je négocie sur le marché boursier du Moex. Broker Otkritie. S'il existe des positions ouvertes pour plusieurs instruments, le robot les confond lorsqu'il envoie une demande de fermeture partielle (il peut envoyer une demande avec le prix des actions Sberbank pour les actions Magnit, par exemple. C'est-à-dire que l'instrument dans la demande est spécifié pour Magnit, mais les prix sont spécifiés pour Sberbank) ou n'envoie tout simplement pas la demande. Code de l'algorithme de fermeture d'une position longue (exécuté lorsque le prix de l'instrument Price_Close_1_Buy est atteint) :

void Price_Close_1_Buy()
  {

   MqlTradeRequest arequest;
   MqlTradeResult aresult;
   ZeroMemory(arequest);
   ZeroMemory(aresult);

   for(int i=PositionsTotal()-1; i>=0; i--)
      {
       if(Symbol()==PositionGetSymbol(i))
      {
       arequest.action   = TRADE_ACTION_DEAL;
       arequest.position = PositionGetTicket(i);
       arequest.symbol   = Symbol();
       arequest.volume   = NormalizeDouble((Lots_Close_1/100*Lots_current()),0);
       arequest.price    = aposition.PriceCurrent();
       arequest.type_filling = ORDER_FILLING_FOK;
       arequest.type     = ORDER_TYPE_SELL;
       Price_Close_1_Buy_Request_Send = true;
      }
       OrderSend(arequest,aresult);
       Print("=================================================================================================== ");
       Print(asymbol.Name());
       Print("Price_Close_1_Buy_request() ",arequest.price);
       Print("Lots_Close_1_Buy_request() ",arequest.volume);
       Print("Result ", aresult.comment);
       Print("Retcode ",aresult.retcode);
      }
  }
 
leonerd #:

Bonjour.

Je veux faire un fichier d'inclusion universel qui peut être inclus avec n'importe quelle EA. Et il devrait être limité à une inclusion sans aucun code supplémentaire.

Le problème est que le fichier utilise OnTimer() comme point d'entrée.

Et si EA (auquel mon fichier include se connecte) utilise également OnTimer() ? Existe-t-il une solution ?

Ne fais jamais ça.

Juste un conseil. Je ne vais pas changer d'avis.

 
Manter84 il existe des positions ouvertes pour plusieurs instruments, le robot les confond lorsqu'il envoie une demande de fermeture partielle (il peut envoyer une demande avec le prix des actions Sberbank pour les actions Magnit, par exemple. C'est-à-dire que l'instrument dans la demande est spécifié pour Magnit, mais les prix sont spécifiés pour Sberbank) ou n'envoie tout simplement pas la demande. Code de l'algorithme de fermeture d'une position longue (fonctionne lorsque le prix de l'instrument atteint Price_Close_1_Buy) :
En ce qui concerne la question du prix - creuser
aposition.PriceCurrent()
 
Koldun Zloy #:

Ne fais jamais ça.

Juste un conseil. Je ne vais pas vous faire changer d'avis.

Ce sont les exigences du projet.

 

Comment puis-je remplacer la fonction par défaut OrderSend() ?

#define OrderSend(MqlTradeRequest,MqlTradeResult)  MyOrderSend(MqlTradeRequest,MqlTradeResult)

J'ai ajouté une ligne en haut.

Dans mon MyOrderSend(), je fais quelques calculs et j'appelle à nouveau OrderSend(). Je veux appeler nativement OrderSend(), mais au lieu de cela j'obtiens une récursion et MyOrderSend() est appelé à nouveau.

Et cet appel n'aide pas non plus ::OrderSend()
 
leonerd J'aiajouté uneligne ci-dessus.

Dans mon MyOrderSend(), j'effectue quelques calculs et j'appelle à nouveau OrderSend(). Je veux appeler la fonction native OrderSend(), mais au lieu de cela, j'obtiens une récurrence et MyOrderSend() est à nouveau appelé.

Cela ne fonctionne pas du tout. #define remplace le premier (l'appel) par le second dans le code du programme, comme OrderSend(..) est remplacé par MyOrderSend(..) à chaque occurrence.

Raison: