[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 294

 
forexnew:
Je n'ai jamais travaillé avec DLL. Auriez-vous par hasard un code prêt à être utilisé ?


Pourtant, il n'y a rien de particulièrement difficile, juste une simple substitution d'un fichier par un autre.

Pour créer une DLL, vous devez programmer dans un langage autre que MQL4. Certaines personnes écrivent en C/C++. Je l'ai écrit en Delphi. En somme, cela dépend de vos propres besoins.

Lorsque la DLL est prête, elle est connectée à l'Expert Advisor ainsi qu'à une autre bibliothèque de MQL4. Après cela, vous pouvez appeler les fonctions décrites dans la DLL.

 
drknn:


Je n'ai pas fait ce genre de fonction, bien que si vous regardez, il n'y a rien de particulièrement compliqué - juste un simple remplacement d'un fichier par un autre.

Vous pouvez créer des liens dans le système de fichiers pour lire les journaux à partir du script.
 

Cher, Igor Kim a-t-il une fonction qui renvoie le prix d'ouverture de la dernière position ouverte https://forum.mql4.com/ru/38949/page5#434239.

Si ce n'est pas difficile, veuillez écrire une fonction qui renvoie le prix d'ouverture de la première position ouverte. Je pensais que ce serait suffisant dans la ligne

t<OrderOpenTime()
Pour remplacer "<" par ">" mais le résultat ne fonctionnera pas.
 

Bonjour.

Veuillez nous indiquer comment mettre en œuvre cette fonction, si possible.

Les commandes 1 et TP sont passées respectivement. Un ordre en attente 2 est placé en même temps que l'ordre. Comment supprimer le pending lorsque le TP de l'ordre 1 s'est déclenché.

 
strongest:

Bonjour.

Veuillez nous indiquer comment mettre en œuvre cette fonction, si possible.

Les commandes 1 et TP sont passées respectivement. Un ordre en attente 2 est placé en même temps que l'ordre. Comment supprimer le pending lorsque le TP de l'ordre 1 s'est déclenché.


En appelant la fonction commerciale OrderDelete()
 
Que faut-il modifier pour que le stop suiveur fonctionne en cinq chiffres? Augmenter les pips d'un facteur 10 ne sert à rien.
//+------------------------------------------------------------------+
//|                                                   e-Trailing.mq4 |
//|                                           Ким Игорь В. aka KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//| 12.09.2005 Автоматический Trailing Stop всех открытых позиций    |
//|            Вешать только на один график                          |
//| 21.01.2006 Параметр AllPositions                                 |
//+------------------------------------------------------------------+
#property copyright "Ким Игорь В. aka KimIV"
#property link      "http://www.kimiv.ru"

//------- Внешние параметры ------------------------------------------
extern bool   AllPositions   = False; // Управлять всеми позициями
extern bool   ProfitTrailing = True;  // Тралить только профит
extern int    TrailingStop   = 15;    // Фиксированный размер трала
extern int    TrailingStep   = 2;     // Шаг трала
extern bool   UseSound       = True;  // Использовать звуковой сигнал
extern string NameFileSound  = "expert.wav";  // Наименование звукового файла

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start() {
  for (int i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (AllPositions || OrderSymbol()==Symbol()) {
        TrailingPositions();
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Сопровождение позиции простым тралом                             |
//+------------------------------------------------------------------+
void TrailingPositions() {
  double pBid, pAsk, pp;

  pp = MarketInfo(OrderSymbol(), MODE_POINT);
  if (OrderType()==OP_BUY) {
    pBid = MarketInfo(OrderSymbol(), MODE_BID);
    if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) {
      if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) {
        ModifyStopLoss(pBid-TrailingStop*pp);
        return;
      }
    }
  }
  if (OrderType()==OP_SELL) {
    pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
    if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) {
      if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
        ModifyStopLoss(pAsk+TrailingStop*pp);
        return;
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Перенос уровня StopLoss                                          |
//| Параметры:                                                       |
//|   ldStopLoss - уровень StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStopLoss) {
  bool fm;

  fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
  if (fm && UseSound) PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+
 
david2:
Que faut-il modifier pour que le stop suiveur fonctionne en cinq chiffres ? L'augmenter 10 fois ne sert à rien.

Le problème vient probablement des prix non normalisés.
 
PapaYozh:

Le problème est probablement dû à des prix non normalisés.
Désolé, mais en plus du bouton du terminal, vous auriez dû appuyer sur la confirmation supplémentaire dans la fenêtre EA pour permettre à l'EA de négocier.
 
Sancho77:

Cher, Igor Kim a-t-il une fonction qui renvoie le prix d'ouverture de la dernière position ouverte https://forum.mql4.com/ru/38949/page5#434239.

Si ce n'est pas difficile, veuillez écrire une fonction qui renvoie le prix d'ouverture de la première position ouverte. Je pensais que ce serait suffisant dans la ligne

Remplacez "<" par ">" mais ça ne marche pas.

Et pour clarifier ? Choisir le premier parmi ceux qui sont ouverts (ceux qui sont sur le marché) ou ceux qui sont déjà fermés ? Et si le premier poste a été ouvert il y a trois ans ? Doit-il être sélectionné ?

A quoi ça sert, tout ça ?

 

Bonjour Camarades !

Pouvez-vous me dire si je peux déterminer si l'ordre précédent a été clôturé au niveau du Take Profit ou non ? Si oui, comment dois-je l'implémenter de manière programmatique ?

Je serais reconnaissant d'un lien si cette question a déjà été abordée.

Raison: