Fonctions utiles de KimIV - page 23

 

La fonction NumberOfBarCloseLastPos().

Cette fonction renvoie le numéro de clôture de la barre de la dernière position ou -1. La sélection des positions à prendre en compte est définie par des paramètres externes :

  • sy - Nom de l'instrument de marché. Si ce paramètre est défini, la fonction ne prendra en compte que les positions de cet instrument. La valeur par défaut - NULL signifie l'instrument de marché actuel.
  • tf - Période de temps. La valeur par défaut 0 correspond à l'horizon temporel actuel.
  • op - Opération commerciale, type de poste. Valeurs valides : OP_BUY, OP_SELL ou -1. La valeur par défaut -1 signifie une position quelconque.
  • mn - Identificateur de position, MagicNumber. La valeur par défaut -1 signifie n'importe quel identifiant.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара закрытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarCloseLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) t=OrderCloseTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}
HH. Vous trouverez ci-joint un script pour tester la fonction NumberOfBarCloseLastPos().
 
 
 
KimIV:

Fonction DeleteOrders(). Version pour testeurs.

La fonction DeleteOrders() est conçue pour supprimer les ordres en attente BuyLimit, BuyStop, SellLimit et SellStop. op - Type d'opération commerciale, type d'ordre en attente. L'une des cinq valeurs suivantes est possible : -1, OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT ou OP_SELLSTOP. La valeur par défaut de -1 signifie un ordre quelconque.
mn
- MagicNumber, numéro d'identification de l'ordre en cours. La valeur par défaut -1 signifie n'importe quel magik.

Bonjour. A la page 10, cette fonction a été paramétrée pour être appliquée.

Je l'ai appliqué dans mon conseiller expert pour supprimer les ordres en attente. Ou plutôt, je voulais l'utiliser. J'ai placé la fonction en dehors de la section int start

Je l'ai collé.

if (isCloseLastPosByTake(NULL,OP_BUY, My order Buy ))   {
              DeleteOrders(NULL, -1,  My order Sell);   }

Mais lors de la compilation, j'obtiens une erreur

clDelete' - variable non définie C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (1155, 40)

Comment puis-je éliminer cette erreur ?

Et lorsque j'utilise la fonction ClosePositions() - Fermer lespositions au prix du marché, tout va bien - aucune erreur !

/ Même si je n'insère que la fonction DeleteOrders et que je ne l'applique pas encore, cette erreur se compile toujours !

 
Rita писал (а):
Mais lorsque vous le compilez, vous obtenez une erreur
clDelete' - variable non définie C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (1155, 40)
Comment puis-je éliminer cette erreur ? Qu'est-ce que ce 'clDelete' ?

Là, à la page 10 de la pièce jointe, se trouve le fichier test_DeleteOrders.mq4.

Téléchargez-le et recherchez les références clDelete qu'il contient.

 

Je l'ai téléchargé, je l'ai regardé ! Et alors ? Il s'avère que tout ce que j'avais à faire était de régler la couleur de l'icône de fermeture !

Mais maintenant, ça ne va plus du tout. Maintenant, cette erreur a disparu. Mais une autre erreur est apparue - au niveau de la fonction ClosePositions() - qui n'existait pas auparavant.

if (L_2Sell==true)                 {  
        ClosePositions(NULL, -1,Magic);
                                      }

ClosePosBySelect' - la fonction n'est pas définie C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (905, 47)
Et il n'existe pas de script à proximité (p. 14) pour vérifier

Pouvez-vous me dire comment corriger cette erreur ?

 
Rita писал (а):
ClosePosBySelect' - la fonction n'est pas définie C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (905, 47)

Cette erreur signifie que ClosePosBySelect() n'est pas défini.

Rita a écrit (a) :
Pouvez-vous me dire comment réparer cette erreur ?
Trouvez le code de la fonction ClosePosBySelect() et collez-le dans le fichier de votre EA. Veuillez vous reporter à la page 13.
 

Désolé de vous déranger à nouveau ! J'ai mis la fonction ClosePositions() que vous avez indiquée à côté de ClosePosBySelect(), et six erreurs sont apparues après la compilation ! Je suis en colère !

J'ai eu affaire à quatre d'entre eux moi-même. Glissement, couleur, nombre de tentatives rapprochées....Deux erreurs subsistent, -

fichiers audio -

UseSound' - variable non définie C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (1002, 13)

NameFileSound' - variable non définie C:³ Files\MetaTrader - Alpari\experts\0005.mq4 (1002, 33)

Où dois-je le prendre ? Où dois-je les mettre ?

Well extern bool UseSound = false;//Switch off

Je vais le mettre dans les PROPRIÉTÉS DE L'EXPERT, mais qu'est-ce que "NomFichierSon" et où dois-je le prendre ?

**************************************************************************

Je l'ai trouvé et l'ai mis dans le global.

extern bool UseSound = false;//выключатель звука
extern string NameFileSound="alert.wav";

Et puis au lieu d'une erreur, le compilateur en a lancé 4 autres :

GetNameOP' - La fonction n'est pas définie.

ErrorDescription - La fonction n'est pas définie.

'else' - jeton inattendu

GetNameOP' - La fonction n'est pas définie.

Ces erreurs semblent apparaître sans cesse. Pour utiliser une fonction ClosePositions(), j'ai dû d'abord en créer une autre - ClosePosBySelect(). Et l'autre nécessite à son tour des sons - des cloches et des sifflets. Et lorsque je m'efforce de trouver ces cloches et clochettes totalement inutiles, j'obtiens toutes sortes d'erreurs étranges - "else" - token inattendu et autres erreurs. Je n'ai même pas encore commencé à utiliser cette fonction. Je l'ai seulement mis parmi d'autres !

Pouvez-vous me dire comment je peux corriger ces erreurs ? J'ai commenté tous ces GetNameOP. Les erreurs semblent avoir disparu. Mais la fonction fonctionnera-t-elle bien sans eux ?

 
Rita писал (а):
Et ici, au lieu d'une erreur, le compilateur en a lancé 4 autres :
GetNameOP' - La fonction n'est pas définie.

Sur la première page de la pièce jointe testrSetOrder.mq4

Rita a écrit :
ErrorDescription' - la fonction n'est pas définie

Dans le code de votre EA, insérez la ligne suivante

#include <stdlib.mqh>.

Rita a écrit :
'else' - jeton inattendu
Si vous procédez comme indiqué ci-dessus, l'erreur disparaîtra d'elle-même.
 

La fonction NumberOfBarOpenLastPos().

Cette fonction renvoie le numéro de barre de la dernière position ouverte ou -1. La sélection des positions à prendre en compte est spécifiée par des paramètres externes :

  • sy - Nom de l'instrument de marché. Si ce paramètre est défini, la fonction ne prendra en compte que les positions de l'instrument spécifié. La valeur par défaut - NULL signifie l'instrument de marché actuel.
  • tf - Période de temps. La valeur par défaut 0 correspond à l'horizon temporel actuel.
  • op - Opération commerciale, type de poste. Valeurs valides : OP_BUY, OP_SELL ou -1. La valeur par défaut -1 signifie une position quelconque.
  • mn - Identificateur de position, MagicNumber. La valeur par défaut -1 signifie n'importe quel identifiant.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара открытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarOpenLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderOpenTime()) t=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}
HH. Vous trouverez ci-joint un script pour tester la fonction NumberOfBarOpenLastPos().