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

 
SanAlex:

J'ai aussi fait des expériences - j'ai ouvert la caméra et je ne pouvais plus la fermer - jusqu'à ce que j'arrête le processus.

https://www.gunsmoker.ru/2015/01/avoid-using-ShellExecuteEx.html

Почему вам не следует использовать ShellExecute(Ex)
  • 2015.01.05
  • GunSmoker
  • www.gunsmoker.ru
В прошлый раз мы узнали, почему вам никогда не следует использовать функцию . В этот раз я расскажу вам о том, почему вам не следует использовать функцию . Заголовки этого и предыдущего постов выбраны крайне тщательно. Предыдущий пост говорил о том, что если вы пишете код в 1995 году или позднее, то вы не должны использовать функцию . Поскольку...
 

Pourriez-vous me dire quel est le problème ?

     if(buy_lots>0||sell_lots>0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M15);
     if(buy_lots==0||sell_lots==0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M5);

S'il n'y a pas d'ordres ouverts, alors M5 est activé et tout va bien,

Mais dès qu'un ordre est ouvert, il commence à sauter M5,M15,M5,M15...

 
MakarFX:

Pourriez-vous me dire quel est le problème ?

S'il n'y a pas d'ordres ouverts, alors M5 est activé et tout va bien,

Mais dès que j'ouvre un ordre, il commence à rebondir sur M5, M15, M5, M15...

C'est comme ça, c'est comme ça que ça se passe.

Ou bien remplacez la partie inférieure par AND

 
Valeriy Yastremskiy:

C'est comme ça que c'est écrit, c'est comme ça que ça marche.

Ou remplacer dans le bas par E

Merci, je l'ai fait, mais le résultat est le même.

     if(buy_lots>0||sell_lots>0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M15);
     if(buy_lots+sell_lots==0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M5);
 
MakarFX:

Merci, je l'ai remplacé, mais le résultat est le même.

  
      Alert("1 buy_lots ",buy_lots," sell_lots " sell_lots);
    if(buy_lots>0||sell_lots>0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M15);
     Alert("2 buy_lots ",buy_lots," sell_lots " sell_lots);
     if(buy_lots==0 && sell_lots==0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M5);

Il manque donc quelque chose. Donc la somme deslots d'achat et des lots de vente est égale à 0.

Et mieux que l'addition. Alerte ou impression pour aider.

 
Valeriy Yastremskiy:

Il manque donc quelque chose. Donc la somme deslots d'achat et des lots de vente est égale à 0.

Et mieux que l'addition. Alerte ou impression pour aider.

En quoi est-ce mieux ?

(0 == 0 et 1 == 0) - la condition n'est pas remplie

(0 + 1 == 0) - la condition n'est pas non plus remplie

Quelle est la différence entre ET et addition dans cet exemple particulier ?

 
MakarFX:

Merci, je l'ai remplacé, mais le résultat est le même.

Ainsi, les valeurs de check buy_lots et sell_lots perdent probablement leurs valeurs quelque part.
 
Alexey Viktorov:
Vérifiez donc les valeurs de buy_lots et sell_lots, elles sont probablement en train de perdre leurs valeurs quelque part.

Imprimer


La raison pour laquelle il passe à la M5 n'est pas claire.

 
MakarFX:

Imprimer


La raison pour laquelle il passe sur la M5 n'est pas claire.

Lorsque le TF est commuté, l'EA est redémarré. Essayez de mettre les impressions sous condition, de changer et d'imprimer. Ou vice versa.

Et nous devrions certainement ajouter le contrôle de période dans la condition. Si vous passez à la M15, pourquoi repasser à la M15 ?

 
Igor Makanu:

c'est pourquoi il est recommandé d'essayer de faire le travail d'EA exclusivement avec vos magiciens

Si la tâche consiste à ouvrir un ordre une fois par jour à une heure donnée, l'algorithme est le suivant :

- démarrer l'EA, il vérifie le nombre d'ordres ouverts, si l'ordre avec notre magicien est ouvert, alors sortir jusqu'au prochain tick

- s'il n'y a pas d'ordre, l'EA attend que l'heure et les minutes actuelles soient supérieures aux valeurs données.

- ce moment est arrivé, EA va vérifier l'historique des ordres et si aucun ordre n'a été placé avec notre magik, alors il va placer un ordre et sortir - la sortie est utile pour ne pas traiter les erreurs du serveur, si l'ordre n'a pas été placé, alors sur le prochain tick nous allons essayer de le faire à nouveau, c'est-à-dire qu'il n'est pas nécessaire d'organiser un cycle pour l'ouverture répétée des ordres sur ce tick.... mais c'est une question de goût et d'objectifs, c'est la mise en œuvre la plus simple)))

Veuillez me dire ce que signifie EA dans votre contexte. Je veux trouver, et lire plus de détails.....
Je souhaite le trouver et en savoir plus sur le site suivant : Merci.