Fonctions utiles de KimIV - page 117

 
tim-time:

...ajouter des notifications PUSH à VOTRE EAe-SignalOfTrade ?

C'est fait... à télécharger depuis mon site web...
 
KimIV:

J'ai mis au point la fonction ErrorRU(), qui renvoie une description russe courte ou détaillée d'une erreur par son code. Tant les erreurs renvoyées par le serveur commercial que les erreurs d'exécution des programmes MQL sont détectées. Toutes les erreurs, cependant, n'ont pas une description détaillée avec des recommandations "Que faire", mais c'est ainsi.

Je publie la fonction dans le script pour la tester.

Si quelqu'un a besoin d'une variation sous la forme d'un fichier MQH, vous pouvez l'obtenir sur mon site web.


Salutations Igor. Merci pour cette fonctionnalité, c'est très utile.
 

Bonjour KimIV.

Vous avez une merveilleuse fonction i-Profit.mq4 sur votre site web.

Pourriez-vous me dire comment en extraire les données de solde ?

// 0 - solde actuel

// 1 - solde en début de journée.

// 2 - solde en début de semaine.

// 3 - bilan au début du mois

// 4 - solde au début du trimestre

// 5 - solde au début de l'année

// 6 - bilan à la date de l'utilisateur

 

La fonction ProfitByPrice().

Cette fonction fait partie de mon petit ensemble de fonctions prédictives. Prédictifs dans le sens où ils indiquent l'avenir, c'est-à-dire qu'ils répondent à la question : "Que se passera-t-il si un certain événement se produit ? Cette fonction, par exemple, renvoie un profit dans la devise du dépôt si les positions actuelles sont fermées au prix passé en paramètre.

  • op- Opération commerciale, type de poste. Valeurs valides : OP_BUY,OP_SELL ou-1. La valeur par défaut-1 signifie toute opération commerciale.
  • mn- Identificateur de position, MagicNumber. La valeur par défaut-1 signifie tout identifiant.
  • cp- Prix de clôture attendu. La valeur par défaut0 signifie le prix d'achat actuel.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 29.04.2013                                                     |
//|  Описание : Возвращает профит в валюте депозита, если текущие позиции      |
//|             будут закрыты по цене, переданной в качестве параметра.        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    op - операция                             (-1 - любая позиция)          |
//|    mn - MagicNumber                          (-1 - любой магик)            |
//|    cp - цена предполагаемого закрытия (Bid)  ( 0 - текущая цена)           |
//+----------------------------------------------------------------------------+
double ProfitByPrice(int op=-1, int mn=-1, double cp=0) {
  double pr=0;
  double po=MarketInfo(Symbol(), MODE_POINT);
  double sp=MarketInfo(Symbol(), MODE_SPREAD);
  double tv=MarketInfo(Symbol(), MODE_TICKVALUE);
  int    i, k=OrdersTotal();

  RefreshRates();
  if (cp<=0) cp=Bid;
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Symbol() && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_BUY) {
            pr+=(cp-OrderOpenPrice())/po*OrderLots()*tv;
            pr+=OrderCommission()+OrderSwap();
          }
          if (OrderType()==OP_SELL) {
            pr+=(OrderOpenPrice()-cp-Ask+Bid)/po*OrderLots()*tv;
            pr+=OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
  return(pr);
}

ZZY. Vous trouverez en annexe un script traditionnel pour tester la fonction.

ZZZY. Il n'y a pas de sy traditionnel entre les paramètres car le prix passé dans l'autre paramètre doit être lié à un instrument de commerce. J'ai décidé de ne pas trop m'en occuper et de le lier au symbole actuel.

Dossiers :
 
Cher Igor, merci pour tes fonctions qui facilitent nos premiers pas dans la programmation ! Pourriez-vous m'aider, j'ai besoin d'une fonction pour fermer une position, mais sans faire référence à d'autres fonctions, mais pour avoir Select, 3 tentatives et la gestion des erreurs ! Et au départ, je prescrirais des conditions avec des fonctions de contrôle sans Select afin de ne pas ralentir le processus. Jusqu'à présent, j'ai utiliséune boucle Selekt au débutavec diverses vérifications, en appelant la fonction de fermeture sans Selekt, ce qui ralentit presque deux fois ! Que pouvez-vous me conseiller ? Merci !
 

KimIV:

Nous devons fixer un ordre en suspens à un prix de règlement, à condition qu'il n'y ait pas d'autres ordres ou positions à une distance Distanc de ce prix. Vous ne semblez pas disposer d'une telle fonction : l'existence d'un ordre ou d'une position à distance d'un prix donné ?

 
Je suppose que KimIV ne regarde pas ici ! :(
 
khorosh:

KimIV:

Nous devons fixer un ordre en suspens à un prix de règlement, à condition qu'il n'y ait pas d'autres ordres ou positions à une distance Distanc de ce prix. Vous ne semblez pas disposer d'une telle fonctionnalité : l'existence d'un ordre ou d'une position à distance d'un prix donné ?


Vous pouvez dessiner quelque chose de similaire à celui-ci...

mise à jour...

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 24.06.2013                                                     |
//|  Описание : Возвращает флаг существования ордера или позиции               |
//|             около заданной цены.                                           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    zp - заданная цена                                                      |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//|    op - торговая операция               (    -1      - любая операция)     |
//|    mn - MagicNumber                     (    -1      - любой магик)        |
//|    ds - расстояние в пунктах от цены    (  1000000   - по умолчанию)       |
//+----------------------------------------------------------------------------+
bool ExistOPNearPrice(double zp, string sy="", int op=-1, int mn=-1, int ds=1000000) {
  int i, k=OrdersTotal(), ot;

  if (sy=="" || sy=="0") sy=Symbol();
  double p=MarketInfo(sy, MODE_POINT);
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if ((OrderSymbol()==sy) && (op<0 || ot==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (MathAbs(OrderOpenPrice()-zp)<ds*p) return(True);
        }
      }
    }
  }
  return(False);
}

Vous trouverez ci-joint un script permettant de tester la fonction ExistOPNearPrice().

Dossiers :
 
borilunad:
Cher Igor, merci pour tes fonctions qui facilitent nos premiers pas dans la programmation ! Pourriez-vous m'aider, j'ai besoin d'une fonction pour fermer une position, mais sans faire référence à d'autres fonctions, mais pour avoir Select, 3 tentatives et la gestion des erreurs ! Et au départ, je prescrirais des conditions avec des fonctions de contrôle sans Select afin de ne pas ralentir le processus. Jusqu'à présent, j'ai utiliséune boucle Selekt au débutavec diverses vérifications, en appelant la fonction de fermeture sans Selekt, ce qui ralentit presque deux fois ! Que pouvez-vous me conseiller ? Merci !
ClosePosBySelect() n'est pas ?
 
artmedia70:
ClosePosBySelect() n'est pas quelque chose ?
C'est cela, mais pas que, beaucoup d'appels inutiles à d'autres fonctions avec les erreurs qui en résultent !
Raison: