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

 
Marco Nicholas #:
Bonjour. Pouvez-vous me conseiller sur la manière d'implémenter correctement cette condition dans le code ?

J'ai besoin d'ouvrir la première position après le temps spécifié dans les paramètres (heure, minute, exemple "ouvrir la première transaction après 23-55") et ensuite ne pas tenir compte de cette condition.

Ce code fonctionne parfaitement, mais il ouvre absolument toutes les transactions après "one_time_current.hour" et "one_time_open.min". Je dois exécuter cette condition une seule fois (pour ouvrir une position) et ne pas l'appliquer aux positions suivantes.

Bonjour, Marco !

if(one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min && PositionsTotal()==0)

Salutations, Vladimir.

 
MrBrooklin #:

Bonjour Marco !


Sincèrement, Vladimir.

Merci, c'est un peu un terme inapproprié. Ce code n'ouvre pas beaucoup de postes. Sans elle, elle s'ouvre beaucoup plus.
 
Marco Nicholas #:
Bonjour. Pouvez-vous me conseiller sur la manière d'implémenter correctement cette condition dans le code ?

J'ai besoin d'ouvrir la première position après le temps spécifié dans les paramètres (heure, minute, exemple "ouvrir la première transaction après 23-55") et ensuite ne pas tenir compte de cette condition.

Ce code fonctionne parfaitement, mais il ouvre absolument toutes les transactions après "one_time_current.hour" et "one_time_open.min". Je n'ai besoin d'exécuter cette condition qu'une seule fois (pour ouvrir une position) et ne pas l'appliquer aux positions suivantes.

Bonjour Marco ! Vous avez demandé de l'aide pour faire en sorte qu'un poste soit ouvert. Maintenant vous écrivez ça :

Спасибо, немного не то. Такой код не дает открыть много позиции. Без него открывает намного больше.

Vous devez d'abord décider du nombre de postes que vous souhaitez ouvrir - plusieurs ou un seul. La traduction automatique des mots ne vous a peut-être pas permis de formuler correctement votre demande.

Salutations, Vladimir.

 
Marco Nicholas #:
Bonjour. Pouvez-vous me conseiller sur la manière d'implémenter correctement cette condition dans le code ?

J'ai besoin d'ouvrir la première position après le temps spécifié dans les paramètres (heure, minute, exemple "ouvrir la première transaction après 23-55") et ensuite ne pas tenir compte de cette condition.

Ce code fonctionne parfaitement, mais il ouvre absolument toutes les transactions après "one_time_current.hour" et "one_time_open.min". Nous devons exécuter cette condition une seule fois (pour l'ouverture d'une position) et ne pas l'appliquer aux suivantes.

Il devrait donc y avoir une autre condition pour les suivantes, mais sans ignorer la condition "après 23:55", c'est bien ce que je comprends ?

 
MrBrooklin #:

Bonjour Marco ! Vous avez demandé de l'aide pour rendre un poste ouvert. Maintenant vous écrivez ça :

Tout d'abord, vous devez décider du nombre de postes que vous souhaitez ouvrir - plusieurs ou un seul. Peut-être la traduction automatique des mots ne vous permet-elle pas de formuler correctement votre demande.

Salutations, Vladimir.

Oui, c'est vrai, on s'est mal compris. Quand j'ai écrit :

"Ce code fonctionne bien, mais absolument toutes les transactions ouvertes après "one_time_current.hour" et "one_time_open.min". mais nous ne devons exécuter cette condition qu'une seule fois (pour ouvrir une position) et ne pas l'appliquer aux suivantes. "

Je voulais clarifier ceci, pas ouvrir une position " 1 position" (vous avez dû le comprendre de cette façon), je voulais dire appliquer la condition pour ouvrir seulement la première position et ne pas l'appliquer aux suivantes.

Merci d'avoir répondu.

 
Alexey Viktorov #:

Il devrait donc y avoir une autre condition pour les positions suivantes, mais sans ignorer la condition "après 23:55", c'est bien ce que je comprends ?

Il s'avère que oui, elle n'a pas besoin d'être appliquée (annulée) pour les positions suivantes. Nous devons seulementouvrir la première position (comme pour le début de l'EA, après une certaine heure et minute), et pour les positions suivantes cette condition n'a pas besoin d'être appliquée.

Est-il possible de tout faire en une seule fois ?

if(one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min)
 
Marco Nicholas #:

Il s'avère que oui, il n'est pas nécessaire de l'appliquer (annuler) aux positions suivantes. Il suffit de l'appliquer pour ouvrir la première position (comme pour le démarrage de l'EA, après une certaine heure et minute), et pour les positions suivantes cette condition n'a pas besoin d'être appliquée.

Est-il possible de tout faire en une seule fois ?

  bool first_position_was_opened=false;
  ...
  if(first_position_was_opened || ( one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min))

Et n'oubliez pas de définir "first_position_was_opened=true" après avoir ouvert une position.

La variable "first_position_was_opened" doit être globale ou statique.
 
S'il vous plaît, aidez-moi ! !!
J'ai besoin d'une fonction qui calcule les profits de la dernière semaine pour un symbole et un magik spécifiques.
J'ai trouvé des exemples sans magik, mais je n'arrive pas à faire fonctionner le magik(((.
 
JRandomTrader #:

Et n'oubliez pas de définir "first_position_was_opened=true" après avoir ouvert une position.

La variable "first_position_was_opened" doit être globale ou statique.

Merci. Variante de travail intéressante.

Je tiens également à noter que ma première variante fonctionnait aussi à l'origine, à une condition : si vous divisez les ouvertures pour la première position et pour les positions suivantes. C'est également possible par d'autres moyens.

if(one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min)
if(item_positions==0) для первой


if(item_positions>0) для последующих

Grâce à vos réponses, l'apprentissage de mql5 est beaucoup plus rapide.
 

Vous pouvez également utiliser PositionsTotal() au lieu de la variable first_position_was_opened dans le code de @JRandomTrader:

if(PositionsTotal() > 0 || (one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min)) {}

Dans ce cas, cette variable n'est pas nécessaire et vous n'avez pas besoin de mettre cette variable à True après l'ouverture et à False après la fermeture de toutes les positions.

Raison: