ProRealTime
Forum dédié à ProRealTime cfds à risque limité : les questions sur les cfds à risque limité à risque limité, les trucs et astuces sur l'interface de trading...
Répondre • Page 1 sur 1

MT4 et affichage en %

par falex » 31 juil. 2014 15:09

Hello les spécialistes de MT4.

Bon alors ce vieux machin (désolé :( ) est-il capable d'afficher une prix en valeur relatif (en % par rapport à un 0) et non uniquement le prix en valeur absolue ?

Typiquement je voudrais afficher -1.02% par rapport à une valeur X et non 9655 pour le DAX.

Merci.

Re: MT4 et affichage en %

par kim47 » 20 sept. 2014 20:00

salut, bien sur que tu peux le faire, il te suffit de programmer ça sur mql4... un genre de cadrant comme bfm-business...
Metatrader a son propre forum spécialisé mais en anglais... j ai squatté pas mal la bas...

tu te fais ta petite formule et pour l affichage...bon bouge pas !

Code : #

//+------------------------------------------------------------------+
//|                                         cours en pourcentage.mq4 |
//|                        Copyright 2014, kim47.
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, kim47"
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
#define NL     "\n" //commentaire



extern double opendax30=-1;
extern double opencac40=-1;
extern double openeurusd=-1;
extern double openxauusd=-1;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//cours actuel
double dax30=MarketInfo("#FDXZ4",MODE_BID);   // attention ,symbol cfd à risque limité et futur sont differents...
double cac40 = MarketInfo("#FCEZ4",MODE_BID);
double eurusd = MarketInfo("EURUSD",MODE_BID);
double xauusd = MarketInfo("GOLD",MODE_BID);

//si l'eimpreinte n'est pas rélevée une alerte est lancé pour le rentrer manuellement
if (opendax30 ||opencac40 ||openeurusd ||openxauusd<=0){  
Alert("Empreinte impossible, veuillez entrer manuellement, merci!");
if (opendax30 &&opencac40 &&openeurusd &&openxauusd>0){
Alert("Empreinte enregistrées, merci!");
}}

//Empreinte selon horaire des marchés
if (Hour() == 0){ // forex
        if (Minute() == 0){
        if (Seconds() == 1){
        openeurusd = Bid; openxauusd =Bid; }}}

if (Hour() == 9){ //indice
        if (Minute() == 0){
        if (Seconds() == 1){
        opendax30 = Bid ; opencac40 = Bid; }}}
        
//calcul
 dax30= (100 / opendax30 * dax30 - 100); // Ta formule dax 30
 cac40= (100 / opencac40 * cac40 - 100); // Ta formule cac40
 eurusd= (100 / openeurusd * eurusd - 100); // Ta formule eurusd
 xauusd= (100 / openxauusd * xauusd - 100); // Ta formule pour l'or

//AFFICHAGE
Comment("DAX30 = ",(DoubleToStr(dax30,2))," %"+NL+  //affichage à 2 chiffre après la virgule
        "CAC40 = ",(DoubleToStr(cac40,2))," %"+NL+
        "EURUSD = ",(DoubleToStr(eurusd,2))," %"+NL+
        "XAUUSD = ", (DoubleToStr(xauusd,2))," %"+NL);


// le graphe doit être impérativement ouvert avant l'ouverture sinon il ne récupère pas l'empreinte du premier mouvement....
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
// le graphe doit être impérativement ouvert avant l'ouverture sinon il ne récupère pas l'empreinte du premier mouvement.... Autrement, tu l' enregistre manuellement

manuellement c'est OK, mais automatique en backtest... j'peux pas encor confirmer, bye

Re: MT4 et affichage en %

par falex » 20 sept. 2014 21:00

Merci pour le code je regarderai lundi.

Re: MT4 et affichage en %

par kim47 » 21 sept. 2014 17:24

Nouvelle version mise a jour V1.1
Backtest ok !

Pour entrer les prix d' ouvertures manuellement, clique-gauche sur le smiley :cry: du graphique en question et entrer les valeurs demandées.

Code : #

//+------------------------------------------------------------------+
//|                                         cours en pourcentage.mq4 |
//|                        Copyright 2014, kim47.
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, kim47"
#property link      "http://www.mql5.com"
#property version   "1.1"
#property strict
#define NL     "\n" //commentaire


// le graphe doit être impérativement ouvert avant l'ouverture sinon il ne récupère pas l'empreinte du premier mouvement....
extern double opendax30;
extern double opencac40;
extern double openeurusd;
extern double openxauusd;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---


//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
   //cours actuel
double dax30 = MarketInfo("#FDXZ4",MODE_BID);   // attention ,symbol cfd à risque limité et futur sont differents...
double cac40 = MarketInfo("#FCEZ4",MODE_BID);   // possibilité de changer les symboles a votre convenance
double eurusd = MarketInfo("EURUSD",MODE_BID);
double xauusd = MarketInfo("GOLD",MODE_BID);    // exemple GOLD par XAUUSD (ou autre) mais il va falloir modifier l'affichage aussi dans la partie 'comment' !!!


// pour backtest seulement !!! à griser en mode "live"
//if ((dax30<=0)||(cac40<=0)||(eurusd<=0)||(xauusd<=0)){dax30=10000; cac40=5000; eurusd=1.50; /*xauusd= 2000;*/}


//si l'eimpreinte n'est pas rélevée une alerte est lancé pour l'entrer manuellement
if (opendax30 && opencac40 && openeurusd && openxauusd >0 ){  
   /* Alert("Empreintes enregistrées, merci!");*/
//calcul
    double calc_dax30 = (100 / opendax30 * dax30 - 100); // Ta formule dax 30
    double calc_cac40 = (100 / opencac40 * cac40 - 100); // Ta formule cac40
    double calc_eurusd = (100 / openeurusd * eurusd - 100); // Ta formule eurusd
    double calc_xauusd = (100 / openxauusd * xauusd - 100); // Ta formule pour l'or
//AFFICHAGE
      Comment((DoubleToStr(Hour(),0))," H "+(DoubleToStr(Minute(),0))," min "+(DoubleToStr(Seconds(),0))," Sec"+ NL+
            "DAX30 = ",(DoubleToStr(calc_dax30,2))," %"+" OPEN = ",(DoubleToStr(opendax30,2))+" DAX30 = ",(DoubleToStr(dax30,2))+NL+  //affichage à 2 chiffre après la virgule
            "CAC40 = ",(DoubleToStr(calc_cac40,2))," %"+" OPEN = ",(DoubleToStr(opencac40,2))+" CAC40 = ",(DoubleToStr(cac40,2))+NL+
            "EURUSD = ",(DoubleToStr(calc_eurusd,2))," %"+" OPEN = ",(DoubleToStr(openeurusd,5))+" EURUSD = ",(DoubleToStr(eurusd,5))+NL+
            "XAUUSD = ", (DoubleToStr(calc_xauusd,2))," %"+" OPEN = ",(DoubleToStr(openxauusd,2))+" XAUUSD = ", (DoubleToStr(xauusd,2))+NL);

}  else {
        Comment("Empreinte impossible, veuillez entrer manuellement, merci !");
      
       //pour bakctest seulement !!! à griser en mode "live"
       /*opendax30=9845;
       opencac40=4453;
       openeurusd=1.29203;
       openxauusd=1224;*/

}

//Empreinte selon horaires d'ouverture des marchés
if (Hour() == 0){ // forex
        if (Minute() == 0){
        if (Seconds() <= 1){
        openeurusd = eurusd;}}}
        
if (Hour() == 1){ // forex
        if (Minute() == 0){
        if (Seconds() <= 1){
        openxauusd = xauusd;}}}
        
if (Hour() == 9){ //indice
        if (Minute() == 0){
        if (Seconds() <=1){
        opendax30 = dax30 ; opencac40 = cac40; }}} // cac trop court =problem
               




   
  }
//+------------------------------------------------------------------+

Re: MT4 et affichage en %

par falex » 21 sept. 2014 17:44

J'ai bienfait d'attendre avant de tester :)

Tu as encore 12/13H devant toi pour une V1.2 :lol:

Re: MT4 et affichage en %

par falex » 22 sept. 2014 15:34

Je viens de tester la v1.1 : Bizare ça n'affiche rien.

J'ai remplacé le "code" Dax FD.. par "dax 30" et rien ?
Tu aurais un screenshot du résultat s'il te plait ?

Idem pour EURUSD (ou le code est le même).

A chaque fois mes graphe sont bien ouvert avant que je charge l'indicateur.

Re: MT4 et affichage en %

par kim47 » 23 sept. 2014 15:07

slt, voila pour l'aperçu, je te confirme qu'il est opérationnel...

par contre si tu n'a aucun de ces 2 affichages c'est que le fichier n'est pas au bon endroit sur ton pc et j'ai une petite idée du problème...

Mt4 : fichier / ouvrir le dossier des données / mql4 / experts / ici !!! et normalement c'est bon...

tiens moi au jus...
Fichiers joints
fonctionel sans &quot;cours d'ouverture&quot;
fonctionel sans "cours d'ouverture"
fonctionel avec &quot;cours d'ouverture&quot; connu
fonctionel avec "cours d'ouverture" connu

Re: MT4 et affichage en %

par falex » 23 sept. 2014 15:39

Ok merci pour l'export.

Je vais regarder pourtant quand j'ai fini la compile et que je lance le terminal il est bien dans la liste à gauche ...

J'ai compris pourquoi ça n'affiche rien, tu l'a codé comme un EA pas comme un indic' ...
et moi j'ai copié/collé en tant qu'indic

---

Curieux malgré le fait que j'ai changé les codes des sous-jacent je suis obligé de rentrer le cours à la main ?

Re: MT4 et affichage en %

par kim47 » 23 sept. 2014 16:14

non, tu doit rentrer le cours d'ouverture (la première fois), pas le cours actuel, lol, ensuite il boss tout seul...

Re: MT4 et affichage en %

par falex » 23 sept. 2014 16:44

Oui j'avais bien vu ça dans ton code. mais tu avais écris en commentaire que si le graphe était ouvert il n'y avait pas besoin d'écrire le cours d'ouverture, c'est de la que vient mon étonnement.

Re: MT4 et affichage en %

par kim47 » 23 sept. 2014 17:01

...si le graph était ouvert "AVANT" que le cours démarre...

Re: MT4 et affichage en %

par falex » 23 sept. 2014 17:06

alors il y a un truc bizare.

Le terminal est ouvert et j'ai 4 onglet (DAX, US30, CAC et EURSUD), ensuite je glisse et dépose ton EA dans un des graphes et là il me dit : Empreinte pas disponible.

J'ai bien raté un truc ?

Re: MT4 et affichage en %

par kim47 » 23 sept. 2014 17:26

"non, tu doit rentrer le cours d'ouverture (la première fois), pas le cours actuel, lol, ensuite il boss tout seul..."

je l'utilise bien, sans problème, la preuve dans les aperçus précédemment envoyé...
je vais voir si j peux pas faire en sorte qu il récupère le cours (open) après l'ouverture des marchés, ça sera plus simple,........ sinon on va se chamailler, lol, bon ben v1.2 en cours...

Re: MT4 et affichage en %

par kim47 » 24 sept. 2014 02:23

voila la version 1.2 plus simple, plus efficace... et surtout automatique!


Code : #

//+------------------------------------------------------------------+
//|                                         cours en pourcentage.mq4 |
//|                        Copyright 2014, kim47.
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, kim47"
#property link      "http://www.mql5.com"
#property version   "1.2"
#property strict
#define NL     "\n" //commentaire


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---


//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
//cours actuel
double dax30 = MarketInfo("#FDXZ4",MODE_BID);   // attention ,symbol cfd à risque limité et futur sont differents...
double cac40 = MarketInfo("#FCEZ4",MODE_BID);   // possibilité de changer les symboles a votre convenance
double eurusd = MarketInfo("EURUSD",MODE_BID);
double xauusd = MarketInfo("GOLD",MODE_BID);    // exemple GOLD par XAUUSD (ou autre) mais il va falloir modifier l'affichage aussi dans la partie 'comment' !!!

//Empreinte récupéré automatiquement (OPEN)
double opendax30 = iOpen("#FDXZ4",PERIOD_D1,0);
double opencac40 = iOpen("#FCEZ4",PERIOD_D1,0);
double openeurusd = iOpen("EURUSD",PERIOD_D1,0);
double openxauusd = iOpen("GOLD",PERIOD_D1,0);


// pour backtest seulement !!! à griser en mode "live"
//if ((dax30<=0)||(cac40<=0)||(eurusd<=0)||(xauusd<=0)){dax30=10000; cac40=5000; eurusd=1.50; /*xauusd= 2000;*/}


//si l'eimpreinte n'est pas rélevée une alerte est lancé pour modifier un ou plusieurs symbols
if (opendax30 && opencac40 && openeurusd && openxauusd >0 ){  
    /*Alert("Empreintes enregistrées, merci!");*/
    
//calcul
    double calc_dax30 = (100 / opendax30 * dax30 - 100); // Ta formule dax 30
    double calc_cac40 = (100 / opencac40 * cac40 - 100); // Ta formule cac40
    double calc_eurusd = (100 / openeurusd * eurusd - 100); // Ta formule eurusd
    double calc_xauusd = (100 / openxauusd * xauusd - 100); // Ta formule pour l'or
//AFFICHAGE
      Comment((DoubleToStr(Hour(),0))," H "+(DoubleToStr(Minute(),0))," min "+(DoubleToStr(Seconds(),0))," Sec"+ NL+
            "DAX30 = ",(DoubleToStr(calc_dax30,2))," %"+" OPEN = ",(DoubleToStr(opendax30,2))+" DAX30 = ",(DoubleToStr(dax30,2))+NL+  //affichage à 2 chiffre après la virgule
            "CAC40 = ",(DoubleToStr(calc_cac40,2))," %"+" OPEN = ",(DoubleToStr(opencac40,2))+" CAC40 = ",(DoubleToStr(cac40,2))+NL+
            "EURUSD = ",(DoubleToStr(calc_eurusd,2))," %"+" OPEN = ",(DoubleToStr(openeurusd,5))+" EURUSD = ",(DoubleToStr(eurusd,5))+NL+
            "XAUUSD = ", (DoubleToStr(calc_xauusd,2))," %"+" OPEN = ",(DoubleToStr(openxauusd,2))+" XAUUSD = ", (DoubleToStr(xauusd,2))+NL);


}  else {
        Comment("Empreinte impossible, vérifiez les symbols , merci !");
      
       //pour bakctest seulement !!! à griser en mode "live"
       /*opendax30=9845;
       opencac40=4453;
       openeurusd=1.29203;
       openxauusd=1224;*/

}

// horaires d'ouverture des marchés
/*if (Hour() == 0){ // forex
        if (Minute() == 0){
        if (Seconds() <= 1){
        }}}
        
if (Hour() == 1){ // forex
        if (Minute() == 0){
        if (Seconds() <= 1){
        }}}
        
if (Hour() == 9){ //indice
        if (Minute() == 0){
        if (Seconds() <=1){
         }}} */
               




   
  }
//+------------------------------------------------------------------+

Re: MT4 et affichage en %

par falex » 24 sept. 2014 09:11

Et la version 1.2 pour IG et FXCM avec les bon noms des symboles pour DAX, CAC et Or

Testé et validé.

Attention les cours s'affichent au prochain tick donc patience si vous mettez en route lors d'un moment de très faible échange.

Code : #

    //+------------------------------------------------------------------+
    //|                                         cours en pourcentage.mq4 |
    //|                        Copyright 2014, kim47.
    //|                                              http://www.mql5.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2014, kim47, update falex IG/FXCM"
    #property link      "http://www.mql5.com"
    #property version   "1.2"
    #property strict
    #define NL     "\n" //commentaire


    //+------------------------------------------------------------------+
    //| Expert initialization function                                   |
    //+------------------------------------------------------------------+
    int OnInit()
      {
    //---


    //---
       return(INIT_SUCCEEDED);
      }
    //+------------------------------------------------------------------+
    //| Expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
      {
    //---
       
      }
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
      {
    //---
       
    //cours actuel
    double dax30 = MarketInfo("Dax 30",MODE_BID);   // attention ,symbol cfd à risque limité et futur sont differents...
    double cac40 = MarketInfo("FRA40",MODE_BID);   // possibilité de changer les symboles a votre convenance
    double eurusd = MarketInfo("EURUSD",MODE_BID);
    double xauusd = MarketInfo("XAUUSD",MODE_BID);    // exemple GOLD par XAUUSD (ou autre) mais il va falloir modifier l'affichage aussi dans la partie 'comment' !!!

    //Empreinte récupéré automatiquement (OPEN)
    double opendax30 = iOpen("Dax 30",PERIOD_D1,0);
    double opencac40 = iOpen("FRA40",PERIOD_D1,0);
    double openeurusd = iOpen("EURUSD",PERIOD_D1,0);
    double openxauusd = iOpen("XAUUSD",PERIOD_D1,0);


    // pour backtest seulement !!! à griser en mode "live"
    //if ((dax30<=0)||(cac40<=0)||(eurusd<=0)||(xauusd<=0)){dax30=10000; cac40=5000; eurusd=1.50; /*xauusd= 2000;*/}


    //si l'eimpreinte n'est pas rélevée une alerte est lancé pour modifier un ou plusieurs symbols
    if (opendax30 && opencac40 && openeurusd && openxauusd >0 ){ 
        /*Alert("Empreintes enregistrées, merci!");*/
       
    //calcul
        double calc_dax30 = (100 / opendax30 * dax30 - 100); // Ta formule dax 30
        double calc_cac40 = (100 / opencac40 * cac40 - 100); // Ta formule cac40
        double calc_eurusd = (100 / openeurusd * eurusd - 100); // Ta formule eurusd
        double calc_xauusd = (100 / openxauusd * xauusd - 100); // Ta formule pour l'or
    //AFFICHAGE
          Comment((DoubleToStr(Hour(),0))," H "+(DoubleToStr(Minute(),0))," min "+(DoubleToStr(Seconds(),0))," Sec"+ NL+
                "DAX30 = ",(DoubleToStr(calc_dax30,2))," %"+" OPEN = ",(DoubleToStr(opendax30,2))+" DAX30 = ",(DoubleToStr(dax30,2))+NL+  //affichage à 2 chiffre après la virgule
                "CAC40 = ",(DoubleToStr(calc_cac40,2))," %"+" OPEN = ",(DoubleToStr(opencac40,2))+" CAC40 = ",(DoubleToStr(cac40,2))+NL+
                "EURUSD = ",(DoubleToStr(calc_eurusd,2))," %"+" OPEN = ",(DoubleToStr(openeurusd,5))+" EURUSD = ",(DoubleToStr(eurusd,5))+NL+
                "XAUUSD = ", (DoubleToStr(calc_xauusd,2))," %"+" OPEN = ",(DoubleToStr(openxauusd,2))+" XAUUSD = ", (DoubleToStr(xauusd,2))+NL);


    }  else {
            Comment("Empreinte impossible, vérifiez les symbols , merci !");
         
           //pour bakctest seulement !!! à griser en mode "live"
           /*opendax30=9845;
           opencac40=4453;
           openeurusd=1.29203;
           openxauusd=1224;*/

    }

    // horaires d'ouverture des marchés
    /*if (Hour() == 0){ // forex
            if (Minute() == 0){
            if (Seconds() <= 1){
            }}}
           
    if (Hour() == 1){ // forex
            if (Minute() == 0){
            if (Seconds() <= 1){
            }}}
           
    if (Hour() == 9){ //indice
            if (Minute() == 0){
            if (Seconds() <=1){
             }}} */
                   




       
      }
    //+------------------------------------------------------------------+


Re: MT4 et affichage en %

par tontondubled » 30 nov. 2015 21:33

bonsoir,

se post date un peu voir beaucoup mais je suis a la recherche de se type de fichier au format indicateur, en mode expert; je n'arrive pas a le faire fonctionner correctement sur mt4 est t'il trouvable ?

merci

Sujets similaires
Problème affichage MT4
par Amarantine » 08 mars 2020 19:15 (1 Réponses)
Petit soucis avec MT4
par Benoist Rousseau » 29 janv. 2012 19:53 (1 Réponses)
EA pour MT4 avec indicateur pour indice action
par Guillaume » 19 oct. 2012 15:56 (2 Réponses)
MT4 arrive chez IG
par Benoist Rousseau » 02 août 2013 21:22 (28 Réponses)
Retouver les mêmes indicateurs PRT / MT4
par Ernesto » 02 mai 2014 13:20 (4 Réponses)
équivalence prorealtime mt4
par sembe » 11 mai 2014 00:42 (0 Réponses)
Différence PRT/MT4
par plataxis » 26 juin 2014 11:32 (1 Réponses)
MT4 chez IG
par falex » 30 sept. 2014 12:38 (1 Réponses)
MT4 sur IG
par falex » 13 nov. 2014 17:03 (20 Réponses)
MT4 Dax 30 IG
par Benoist Rousseau » 09 déc. 2014 11:04 (6 Réponses)