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

 
Alexey Viktorov:

Et puis vous continuez à utiliser la même formulation.


))) Deux objets, un plus vieux et un plus jeune, j'ai besoin du prix de l'objet le plus jeune (le plus proche) et j'obtiens le prix de l'objet le plus vieux (le plus éloigné) dans le commentaire. Pourquoi ? Si la boucle précédente, commentée, a renvoyé l'objet le plus éloigné, la boucle actuelle doit renvoyer l'objet le plus proche - la dernière mais renvoie l'avant-dernier. Il y a quelque chose qui m'échappe.
 
PolarSeaman:
))) Deux objets, un plus vieux et un plus jeune, j'ai besoin du prix de l'objet le plus jeune (le plus proche) et j'obtiens le prix de l'objet le plus vieux (le plus éloigné) dans le commentaire. Pourquoi ? Si la boucle précédente, commentée, a renvoyé l'objet le plus éloigné, la boucle actuelle doit renvoyer l'objet le plus proche - la dernière mais renvoie l'avant-dernier. Il y a quelque chose qui m'échappe.

Un, et deux - pour sélectionner des objets dans la boucle par le temps, vous devez comparer deux temps - l'objet précédent et l'objet actuel. Si l'heure actuelle est plus longue, il faut la stocker dans une variable qui sera vérifiée à la prochaine itération de la boucle. À la fin de la boucle, la variable contiendra le dernier objet créé.

 
YanSay:

J'ai essayé, ça ne marche pas, je dois faire quelque chose de mal(

L'erreur la plus grossière ici est de spécifier la valeur 100 au lieu de ticket dans l'argument de la fonction OrderDelete().

L'erreur suivante n'est pas aussi grossière, mais elle est liée au fait que la valeur calculée du Stop Loss est vérifiée au lieu de sa valeur réelle.

Le type de commande n'est pas non plus vérifié. Que faire si nous avons choisi un ordre au marché ? Comment le supprimer ? Le symbole de l'ordre n'a pas été vérifié.

En tenant compte de ces erreurs, nous obtenons le code de suppression de l'ordre en attente lorsque le prix atteint son Stop Loss :

for (int i = OrdersTotal() - 1; i >= 0; --i)
{
   if (!OrderSelect(i, SELECT_BY_POS))
      continue;

   if (OrderSymbol() != Symbol())
      continue;

   if (OrderMagicNumber() != 100)
      continue;

   if (((OrderType == OP_BUYSTOP || OrderType() == OP_BUYLIMIT) && Bid <= OrderStopLoss()) ||
       ((OrderType == OP_SELLSTOP || OrderType() == OP_SELLLIMIT) && Ask >= OrderStopLoss() && OrderStopLoss() > 0.0))
   {
      if (OrderDelete(OrderTicket()))
         RefreshRates();
   }
                                        
}   
Vérifiez également dans votre code que le Stop Loss est atteint immédiatement après l'ouverture d'un ordre. Il semble qu'après l'ouverture d'un ordre en attente, ce code ne soit plus exécuté. C'est-à-dire que vous devez séparer les branches d'exécution. L'un est chargé de fixer l'ordre et le second est responsable de son accompagnement.
Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 

Bonjour Mesdames et Messieurs !

Veuillez me dire comment saisir la combinaison de touches, par exemple Ctrl+1. Je sais comment attraper une touche sur le clavier.

Mais j'ai besoin d'une combinaison dans mt4 - comment faire ?

 
Игорь:

Bonjour Mesdames et Messieurs !

Pouvez-vous me dire comment attraper la combinaison de touches telle que Ctrl+1. Je sais comment attraper une touche sur le clavier.

J'ai besoin d'une combinaison de Mt4 - comment faire ?

L'événement OnChartEvent, analyse les paramètres lparam et sparam, car appuyer sur Ctrl+1 est deux événements.

 
Ihor Herasko:

Événement OnChartEvent, analyser les paramètres lparam et sparam, car appuyer sur Ctrl+1 est deux événements.

Non, ça ne marche pas, je l'ai essayé ! !!

Il affiche seulement le clic ctrl et tous les autres plus 1 et lettres ne fonctionnent pas ! !!

 
Игорь:

Non, ça ne marche pas, j'ai essayé ! !!

Il affiche seulement kntrl press et tous les autres plus 1 et lettres ne fonctionnent pas ! !!

J'ai écrit :

appuyer sur Ctrl+1 correspond à deux événements

Attrapez deux événements et analysez-les :

2018.04.05 12:26:32.170 Test EURUSD,M15: OnChartEvent, id: CHARTEVENT_KEYDOWN, lparam: 17, dparam: 1.0, sparam: 285
2018.04.05 12:26:32.396 Test EURUSD,M15: OnChartEvent, id: CHARTEVENT_KEYDOWN, lparam: 49, dparam: 1.0, sparam: 2

Il s'agit d'une pression Ctrl+1.

 
Ihor Herasko:

J'ai écrit :

Attrapez deux événements et analysez-les :

Il s'agit d'une pression Ctrl+1.

Ici je n'ai que le compteur ou 1 et aucun événement sur l'autre ou montrez votre code !

Après avoir appuyé sur ctrl, aucun autre événement ne se produit jusqu'à ce que vous relâchiez ctrl !

J'ai trouvé l'erreur, merci !

 
J'ai supprimé les doublons.
 
Vitaly Muzichenko:

Avec un profil ? =)

:)

Raison: