conseiller expert - questions diverses - page 20

 
#Stop Loss, Take Profit - Drags - Open

Depuis mon dernier commentaire, j'ai commencé à faire des recherches sur le forum et l'article pour Stop Loss et Take Profit - Object Drags.
Je viens de trouver cet article MQL5 COOKBOOK : HANDLING TYPICAL CHART EVENTS
Mais c'est pour MT5.

Donc, avant de commencer à le lire ou à essayer cet article, s'il vous plaît laissez-moi savoir si cet article serait utile pour MT4 ?
De plus, si c'est possible, veuillez me faire part d'un bon article sur le déplacement des objets.

Merci d'avance.
 
Oui, le OnChartEvent() est le même pour les deux langues.
 
Marco vd Heijden:
Oui, le OnChartEvent() est le même pour les deux langues.
Oh ! c'est bon à savoir, je peux commencer à le lire.
Merci beaucoup.
 

J'ai également constaté qu'une grande partie du code qui a été écrit pour MT5 fonctionne maintenant aussi sur MT4.

Je le sais parce que j'ai essayé de nombreuses choses dans le passé et des choses qui ne fonctionnaient pas il y a un an, fonctionnent maintenant, ce qui montre qu'ils continuent à développer activement les deux langages.

 
Marco vd Heijden:

J'ai également constaté qu'une grande partie du code qui a été écrit pour MT5 fonctionne maintenant aussi sur MT4.
Je le sais parce que j'ai essayé de nombreuses choses dans le passé et des choses qui ne fonctionnaient pas il y a un an, fonctionnent maintenant, ce qui montre qu'ils continuent à développer activement les deux langages.

C'est bon à savoir. Je pense toujours (/ m'inquiète) que le langage MT4 ne sera bientôt plus utilisé. Merci.
 
// I say Once ' Do not turn... ' for ' if ' operator - this is good.
if  ( Morning || Midnight )
{
    // Do not turn on light just for today...
}

// I say Twice ' Do not turn... ' for ' switch ' operator - Q: Can I say ' Once '?
switch ( Today )
{
    case    Morning  :    // Do not turn on light just for today...
    break;
    case    Midnight :    // Do not turn on light just for today...
    break;
}   //---switch Close
Merci d'avance.
 

J'ai déjà lu l'article et vérifié les codes d'autres personnes pour 'CHARTEVENT_OBJECT_DRAG ' que comment l'utiliser.
Mais malheureusement, cela n'a pas de sens pour moi. Juste maintenant, je pense que j'ai perdu mon temps pour des choses inutiles. Parce que leur style de code est vraiment différent du mien.
(Mon style de code est juste simple - comme le style de code de la documentation mql4 - que je comprends un peu plus).

Juste mon but quand je fais glisser l'objet ' Stop Loss, Take Profit, Pending Orders ' qui pourrait se déplacer avec cet objet. (bien sûr, ils peuvent tous être séparés).

J'ai également vu un script EA pour modifier les ordres (sl, tp etc.) - et il fonctionne sans ' CHARTEVENT_OBJECT_DRAG '... J'espère que vous comprenez ce que je veux dire.

Maintenant, j'ai vraiment besoin d'aide avec un exemple simple pour ' CHARTEVENT_OBJECT_DRAG ' avec HLine ou Trendline Object. Ou une explication claire ou juste quelque chose de bon ( / plus clairement ) commentaire.
J'ai déjà passé beaucoup de temps et je suis toujours en train de chercher à ce sujet. J'espère que je recevrai bientôt une réponse.

Bonne chance à vous.
Merci d'avance.

 
// I say Once ' Do not turn... ' for ' if ' operator - this is good.
if  ( Morning || Midnight )
{
    // Do not turn on light just for today...
}

Ce sera vrai Matin OU Minuit

// I say Twice ' Do not turn... ' for ' switch ' operator - Q: Can I say ' Once '?
switch ( Today )
{
    case    Morning  :    // Do not turn on light just for today...
    break;
    case    Midnight :    // Do not turn on light just for today...
    break;
}   //---switch Close

Il y a un cas séparé pour Morning et un cas séparé pour Midnight.

Il s'agit donc de deux choses différentes.

Max Enrik:

J'ai déjà lu l'article et vérifié les codes d'autres personnes pour 'CHARTEVENT_OBJECT_DRAG ' et comment les utiliser.
Mais malheureusement, cela n'a pas de sens pour moi. Juste maintenant, je pense que j'ai perdu mon temps pour des choses inutiles. Parce que leur style de code est vraiment différent du mien.
(Mon style de code est juste simple - comme le style de code de la documentation mql4 - que je comprends un peu plus).

Juste dans mon but, lorsque je fais glisser l'objet ' Stop Loss, Take Profit, Pending Orders ' qui pourrait se déplacer avec cet objet. (bien sûr, ils peuvent tous être séparés).

J'ai également vu un script EA pour modifier les ordres (sl, tp etc.) - et il fonctionne sans ' CHARTEVENT_OBJECT_DRAG '... J'espère que vous comprenez ce que je veux dire.

Maintenant, j'ai vraiment besoin d'aide avec un exemple simple pour ' CHARTEVENT_OBJECT_DRAG ' avec HLine ou Trendline Object. Ou une explication claire ou juste quelque chose de bon ( / plus clairement ) commentaire.
J'ai déjà passé beaucoup de temps et je suis encore en train de chercher à ce sujet. J'espère que je recevrai bientôt une réponse.

Bonne chance à vous.
Merci d'avance.


Vous pouvez faire glisser une ligne lorsque

OBJPROP_SELECTABLE ==1
OBJPROP_SELECTED ==1

Les deux sont vrais et vous pouvez simplement lire les valeurs en utilisant \N.

ObjectGet Double(....

A la place de

ObjectSetDouble(....
Ce n'est pas si difficile et cela peut être très utile.
 
Marco vd Heijden:

Presque je n'avais aucune idée de la façon dont je peux écrire le code pour le Stop Loss et Take Profit Drags quand j'ai commencé à le faire, merci beaucoup mec.
Maintenant je sens que je peux faire ce que je veux après votre grand commentaire.

Marché fermé

Donc, j'ai déjà essayé et maintenant je peux obtenir ' OBJPROP_PRICE ' ce que je veux.
Lorsque je fais glisser l'objet ' HLine ', Print() est mis à jour une fois par seconde. Parce que j'utilise EventSetTimer( 1 ).

Mais j'ai besoin que Print() ne soit pas mis à jour une fois par seconde. Je voudrais que Print() se mette à jour après avoir arrêté les drags.
Si vous me comprenez, aidez-moi ou donnez-moi un conseil.

Je vous souhaite bonne chance.

 

Vous pouvez donc stocker la valeur de OBJPROP_PRICE dans un double, puis les comparer.

S'ils sont différents, vous savez que le déplacement a commencé, et s'ils sont à nouveau égaux, vous savez que le déplacement a été arrêté.

//+------------------------------------------------------------------+
//|                                                   Drag Hline.mq4 |
//|      Copyright 2017, Marco vd Heijden, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Marco vd Heijden, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

double price; // price variable;
bool drag;     // drag flag
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(1);
//--- create Hline
   ObjectCreate(0,"line",OBJ_HLINE,0,0,Ask);
//--- store value
   price=ObjectGetDouble(0,"line",OBJPROP_PRICE,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//--- compare values
   if(price!=ObjectGetDouble(0,"line",OBJPROP_PRICE,0))
     {
      drag=1;                                          // set drag flag
      price=ObjectGetDouble(0,"line",OBJPROP_PRICE,0); //store new value
     }
   if(drag==1)
     {
      if(price==ObjectGetDouble(0,"line",OBJPROP_PRICE,0))
        {
         drag=0; //reset drag flag
         Alert(" New value set: ", DoubleToString(price));
        }
     }
  }
//+------------------------------------------------------------------+

Ou bien vous pouvez lancer un compteur une fois que le traînage a été détecté ; il y a de nombreuses façons de le faire..,