Rejoindre la communauté
banner_forum
Devenez membre de la plus grande
communauté francophone sur le Forex
Partagez, échangez et apprenez en gagnant des crédits sur votre compte de trading

Les fonctions peu connues de MT4

  • forexensemble

    Cette discussion s'adresse avant tout aux programmeurs qui développent sous MT4.
    Je vais présenter ici un certain nombre de fonctionnalités et astuces très utiles que vous pourrez incorporer dans vos codes sources.

    Puis-je demander aux non-programmeurs d'ouvrir une nouvelle discussion pour poser les questions qui leur viendront en lisant ce topic ? Cela permettra de garder le public cible, sinon, les programmeurs vont vite se lasser...

    Merci d'avance !

    J'envisage d'ajouter 1 à 3 articles par semaine dans cette discussion, ce qui laissera la place au débat entre deux articles.
  • AliX

  • forexensemble

    MQ4 ne comporte pas d'opérateur ternaire.

    Voici quelques fonctions qui font très bien l'affaire :

    Code
    double DoubleIf(bool Condition, double IfTrue, double IfFalse) { if (Condition) return (IfTrue); else return (IfFalse);} // exemple : // Print(DoubleIf(OrderType()==OP_BUY,Ask,Bid); int IntIf(bool Condition, int IfTrue, int IfFalse) { if (Condition) return (IfTrue); else return (IfFalse);} string StringIf(bool Condition, string IfTrue, string IfFalse) { if (Condition) return (IfTrue); else return (IfFalse);}

    Mes codes sont truffés de ces fonctions qui évitent le recours à une structure de type if... else,,,
    Modifié le 2013-12-03 19:46:50 par forexensemble
  • forexensemble

    Voici une fonction qui calcule la valeur d'un pip à partir des variables système Digits et Point. Cette fonction très pratique permet d'adapter facilement un EA à un flux de cotation à 4 ou 5 décimales (2 ou 3 pour le Yen) en fonction du broker. Cela évite d'avoir à demander la saisie de ce paramètre à l'utilisateur.

    Code
    double dPip; dPip=DoubleIf(Digits%2==1,Point*10,Point)
  • forexensemble

    Metatrder4 offre une solution simple pour conserver des données entre deux sessions de trading ou pour communiquer des variables entre plusieurs EA et/ou Indicators et/ou Scripts :

    - Les variables globales

    Ce sont des variables qui sont gérées à l'aide des fonctions suivantes :
    Code
    GlobalVariableCheck() GlobalVariableDel() GlobalVariableGet() GlobalVariableName() GlobalVariableSet() GlobalVariableSetOnCondition() GlobalVariablesDeleteAll() GlobalVariablesTotal()
    Elles sont stockées sur le terminal et restent actives 1 mois à partir de la dernière opérations qui les a affectées.

    Cette fonctionnalité est vraiment très utile - elle évite d'avoir à gérer des clés de registres ou un fichier pour stocker des informations permanentes telles que des valeurs de configuration et autres paramètres.

    La liste des variables globales peut être affichée à l'aide de la touche F3 dans le terminal.

    Voici une fonction qui illustre l'utilisation d'une variable globale.
    Elle retourne un entier incrémenté.
    Code
    //Author : hanover //+------------------------------------------------------------------+ int GetUniqueInt() { //+------------------------------------------------------------------+ string gvar = "##UniqueInt"; if (!GlobalVariableCheck(gvar)) GlobalVariableSet(gvar,0); int val = GlobalVariableGet(gvar)+1; GlobalVariableSet(gvar,val); return(val); }
    Modifié le 2013-12-06 20:47:58 par forexensemble
  • forexensemble

    Tous les brokers n'autorisent pas l'exécution d'EA ou un broker peut bloquer les EA sur un compte en particulier.
    Une fonction MT4 permet de tester cela depuis votre logiciel :
    Code
    bool IsTradeAllowed( )
    Exemple d'utilisation :
    Code
    if(IsTradeAllowed()) Print("Trade allowed");
  • forexensemble

    Saviez-vous que...
    vous devriez éviter d'utiliser le champ "comment" enregistré à l'ouverture d'un ordre par la fonction OrderSend() parce qu'il est utilisé par certains Brokers pour des opérations internes à leurs services ?

    Autant le savoir et éviter d'avoir des surprises si vous deviez diffuser votre EA à large échelle.
  • forexensemble

    Lorsque vous calculez le profit réel d'un panier ouvert, pensez à inclure les données suivantes à votre total :
    - OrderCommission()
    - OrderSwap()