Nous sommes le 15 Aoû 2018, 00:03

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 14 messages ] 
Auteur Message
MessagePosté: 22 Fév 2018, 14:40 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 180
Bonjour,

Je cherche à connaitre l'indice d'une barre à partir d'une donnée de type datetime.
Par exemple
datetime dtBarDatetime=D'2018.02.08 13:05';

_________________
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Mon blog : www.apprendre-mql5.com


Haut
 Profil  
 
MessagePosté: 24 Fév 2018, 18:25 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 180
Le code peut être sans doute amélioré.

Code:
//+------------------------------------------------------------------+
//|                                       scriptIndexBarResearch.mq5 |
//|                                   Copyright 2018, Pierre Rougier |
//|                           https://www.mql5.com/en/users/pierre8r |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, Pierre Rougier"
#property link      "https://www.mql5.com/en/users/pierre8r"
#property version   "1.00"
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int index_bar_research(datetime dt_bar_research)
  {
   datetime dt_start_time=D'1970.01.01 00:00';
   datetime time_array[];

   int res=CopyTime(NULL,NULL,dt_start_time,dt_bar_research,time_array);
   if(res<=0)
     {
      Print("Getting index bar research Failed! Error",GetLastError());
      return(0);
     }
   return(res-1);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {

   datetime dt_index_bar_research=D'2018.02.08 13:05';
   int i_index_bar_research=index_bar_research(dt_index_bar_research);
   Print("dt_index_bar_research :"+TimeToString(dt_index_bar_research)
         +" - i_index_bar_research :"+IntegerToString(i_index_bar_research));

   dt_index_bar_research=D'2017.09.14 13:05';
   i_index_bar_research=index_bar_research(dt_index_bar_research);
   Print("dt_index_bar_research :"+TimeToString(dt_index_bar_research)
         +" - i_index_bar_research :"+IntegerToString(i_index_bar_research));

   dt_index_bar_research=D'2017.09.06 10:35';
   i_index_bar_research=index_bar_research(dt_index_bar_research);
   Print("dt_index_bar_research :"+TimeToString(dt_index_bar_research)
         +" - i_index_bar_research :"+IntegerToString(i_index_bar_research));

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

_________________
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Mon blog : www.apprendre-mql5.com


Haut
 Profil  
 
MessagePosté: 24 Fév 2018, 18:44 
Hors ligne
VideoBourse family

Inscription: 28 Sep 2015, 15:18
Messages: 659
Cet usage de CopyTime est un dévoiement.

Ce n'est pas fait pour ça.

Pour trouver l'indice sachant le time c'est la fonction iBarShift()

Qui plus est ça doit prendre 100 fois moins de ressources.

A moins qu'iBarShift n'existe plus en MQL5 ? :lol:

_________________
Les informations présentées ne peuvent être considérées ni comme un conseil en investissement, ni comme une recommandation d'investissement. Il s'agit de commentaires généraux sur les marchés et de raisonnements que l'on peut tenir à leur sujet.


Haut
 Profil  
 
MessagePosté: 26 Fév 2018, 10:44 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 180
Salut Jeff719,

Citation:
A moins qu'iBarShift n'existe plus en MQL5 ? :lol:


Je vois que tu connais MQL4.
Et probablement MQL5, je te sens taquin. :D
Oui iBarShift n'existe pas en MQL5.
Peut-être les développeurs de MetaTrader 5 ont-ils une bonne raison.
Les bars des charts ne sont souvent pas numérotés dans le même sens en MQL4 et MQL5, encore que cette numérotation soit réversible, au moins en MQL5, en MQL4 je ne sais pas.

_________________
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Mon blog : www.apprendre-mql5.com


Haut
 Profil  
 
MessagePosté: 26 Fév 2018, 11:28 
Hors ligne
VideoBourse family

Inscription: 28 Sep 2015, 15:18
Messages: 659
Salut Pierre,

La numérotation des bars est réversible en MQL4 parce que Metaquote à fini par céder aux récriminations de crétins à qui ça faisait mal à la tête de penser à des indices allant croissants vers le passé (ce qui pourtant est l'élégante solution).

Metaquote étant une machine destinée à plumer le retail et surtout le développeur amateur retail, tout est fait pour que ça marche à fond. En particulier satisfaire les demandes saugrenues des amateurs les plus crasses. Il y a aussi l'algo genet dont l'objet est de n'être pas seulement sur optimisé, mais assurément sur optimisé à mort. A la plus grande joie des brokers.

Non je ne connais pas MQL5. Mais si effectivement iBarShift n'existe pas (et n'est pas remplacé par une primitive équivalente), ça veut dire que MQL5 est une immense merde, pire que MQL4 et qu'il convient de le faire savoir pour l'édification du public.

Quelqu'un connaît la question ? (Quelle primitive iBarShift).

Sinon je peux toujours t'écrire une recherche dicho qui va faire ce que te fait iBarShift (car le calcul ne peut être exact vu qu'on ne sait jamais les trous de cotation qu'on a dans l'historique), mais avoir besoin de ça est à pleurer.

a+

_________________
Les informations présentées ne peuvent être considérées ni comme un conseil en investissement, ni comme une recommandation d'investissement. Il s'agit de commentaires généraux sur les marchés et de raisonnements que l'on peut tenir à leur sujet.


Haut
 Profil  
 
MessagePosté: 26 Fév 2018, 11:29 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 180
Nouvelle version.
On doit pouvoir encore améliorer mais pour le moment j’arrête là.

Code:
//+------------------------------------------------------------------+
//|                                       scriptIndexBarResearch.mq5 |
//|                                   Copyright 2018, Pierre Rougier |
//|                           https://www.mql5.com/en/users/pierre8r |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, Pierre Rougier"
#property link      "https://www.mql5.com/en/users/pierre8r"
#property version   "1.00"
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int index_bar_research(datetime dt_bar_research)
  {
   datetime dt_start_time;
   datetime time_array[];

   int res=CopyTime(NULL,NULL,0,1,time_array);
   if(dt_bar_research>time_array[0])
     {
      Print("Error. dt_bar_research "+TimeToString(dt_bar_research)+" greater than the last time bar "+TimeToString(time_array[0]));
      return(0);
     }

   res=CopyTime(NULL,NULL,Bars(NULL,NULL)-1,1,time_array);
   dt_start_time=time_array[0];
   if(dt_bar_research<dt_start_time)
     {
      Print("Error. dt_bar_research "+TimeToString(dt_bar_research)+" smaller than the first time bar "+TimeToString(time_array[0]));
      return(0);
     }

   res=Bars(NULL,NULL,dt_start_time,dt_bar_research);
   if(res<=0)
     {
      Print("Getting index bar research Failed! Error",GetLastError());
      return(0);
     }
   return(res-1);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {

   datetime dt_index_bar_research=D'2017.08.18 14:55';
   int i_index_bar_research=index_bar_research(dt_index_bar_research);
   Print("dt_index_bar_research :"+TimeToString(dt_index_bar_research)
         +" - i_index_bar_research :"+IntegerToString(i_index_bar_research));

   dt_index_bar_research=D'2018.02.08 13:05';
   i_index_bar_research=index_bar_research(dt_index_bar_research);
   Print("dt_index_bar_research :"+TimeToString(dt_index_bar_research)
         +" - i_index_bar_research :"+IntegerToString(i_index_bar_research));

   dt_index_bar_research=D'2017.09.14 16:45';
   i_index_bar_research=index_bar_research(dt_index_bar_research);
   Print("dt_index_bar_research :"+TimeToString(dt_index_bar_research)
         +" - i_index_bar_research :"+IntegerToString(i_index_bar_research));

   dt_index_bar_research=D'2017.09.06 10:35';
   i_index_bar_research=index_bar_research(dt_index_bar_research);
   Print("dt_index_bar_research :"+TimeToString(dt_index_bar_research)
         +" - i_index_bar_research :"+IntegerToString(i_index_bar_research));

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

_________________
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Mon blog : www.apprendre-mql5.com


Haut
 Profil  
 
MessagePosté: 26 Fév 2018, 14:10 
Hors ligne
Membre assidu

Inscription: 28 Fév 2015, 17:53
Messages: 265
Hello,
ca me semble lourd comme code juste pour trouver une barre, je pense que ta solution se trouve là:
https://www.mql5.com/en/docs/series/copyrates.
Le copyrate va te créer un tableau dans lequel tu pourras retrouver ta barre.


Haut
 Profil  
 
MessagePosté: 26 Fév 2018, 17:42 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 180
neo-13 a écrit:
Hello,
ca me semble lourd comme code juste pour trouver une barre, je pense que ta solution se trouve là:
https://www.mql5.com/en/docs/series/copyrates.
Le copyrate va te créer un tableau dans lequel tu pourras retrouver ta barre.


Salut neo-13,

Merci pour le conseil.
Je vais garder mon code, de toutes façon il sera utilisé dans un indic, pas dans l'EA.

_________________
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Mon blog : www.apprendre-mql5.com


Haut
 Profil  
 
MessagePosté: 26 Fév 2018, 19:32 
Hors ligne
Membre assidu

Inscription: 28 Fév 2015, 17:53
Messages: 265
Qu'il soit dans un indic ou dans un EA, au plus le code est optimisé, au mieux c'est!
Je pense, mais cela n'engage que moi, que lors de chaque programme on se doit de clarifier son code au mieux et aussi et surtout de l'optimiser.
Surtout en trading, car s'il est bien un domaine où l'adage, "le temps c'est de l'argent" se vérifie, c'est bien celui là!!
Mais encore une fois cela n'engage que moi.


Haut
 Profil  
 
MessagePosté: 26 Fév 2018, 19:42 
Hors ligne
VideoBourse family

Inscription: 28 Sep 2015, 15:18
Messages: 659
Ouais enfin copyrate c'est un peu pareil. Pour avoir la flemme de mettre le doigt sur le bon indice d'après un ptit algo de quelques lignes, c'est l'enclume pour écraser une mouche : recopier l'entièreté d'un tableau dans un autre, juste pour le plaisir que le sous produit de l'opération te fournisse le bon indice. :shock:

En fait on a déjà le tableau. Ce sont les bars, avec Time(i) par exemple. A moins que ce soit différent en MQL5 ?

Bien sûr si on iBarShift "y a une heure ou deux" en M5, la stupide charge de calcul ne va pas se voir. Mais si par malheur vous faites du momentum 2 mois en allant voir des vieilles bougies M5, vous allez recopier 12000 bougies dans un tableau temporaire alloué dynamiquement. Comme Metaquote sont des truffes totales en allocation de mémoire, gros risque de voir un backtest de 10 ans en M5 passer de 3mn à 3heures, si c'est pas 3 jours. :lol:

Comme la question de Pierre m'a interpellé (et que je zieute de temps en temps ce qui se dit sur MQL5), j'ai été voir sur le forum MQL5. Y font pas mieux. Ça bricole encore et encore avec CopyTruc dans une table, la flemme de coder un truc moins débile.

C'est clair que Metaquote, disposant d'un tas de programmeurs qui seraient capables de résoudre l'affaire en quelques lignes, n'a pas envie de se faire chier. Le mieux est de laisser les amateurs se vautrer dans des trucs ineptes, car ça rapporte inéluctablement des tunes aux brokers ce qui est le but de la manip.

Quelqu'un a été voir du coté de Forex Factory ? Car normalement on trouve tout la bas. 8)

_________________
Les informations présentées ne peuvent être considérées ni comme un conseil en investissement, ni comme une recommandation d'investissement. Il s'agit de commentaires généraux sur les marchés et de raisonnements que l'on peut tenir à leur sujet.


Haut
 Profil  
 
MessagePosté: 15 Juin 2018, 15:26 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 180
Je ne m'intéresse plus du tout à la question, mais si quelqu'un fait une recherche et tombe sur cette file, je suis tombé par hasard sur du code d'Alain Verleyen.
iBarShift - library for MetaTrader 5
https://www.mql5.com/en/code/1864

_________________
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Mon blog : www.apprendre-mql5.com


Haut
 Profil  
 
MessagePosté: 15 Juin 2018, 16:15 
Hors ligne
VideoBourse family

Inscription: 28 Sep 2015, 15:18
Messages: 659
Bah oui c'est bien sur ces trucs que j'étais tombé quand j'avais fait des recherches.

C'est toujours le CopyTime de bourrin.

Verleyen est un garçon sympathique mais comment dire ? fatigué ? :wink:

_________________
Les informations présentées ne peuvent être considérées ni comme un conseil en investissement, ni comme une recommandation d'investissement. Il s'agit de commentaires généraux sur les marchés et de raisonnements que l'on peut tenir à leur sujet.


Haut
 Profil  
 
MessagePosté: 15 Juil 2018, 14:22 
Hors ligne
Membre assidu
Avatar de l’utilisateur

Inscription: 28 Sep 2013, 06:54
Messages: 180
iBarShift is back in MQL5 :lol:

Citation:
MQL5: New functions: iTime, iOpen, iHigh, iLow, iClose, iVolume, iBars, iBarShift, iLowest, iHighest, iRealVolume, iTickVolume, iSpread. These functions are similar to those used in MQL4. The functions provide for an easier transfer of code of trading applications to the fifth generation platform.


Source https://www.mql5.com/en/forum/53/page19#comment_7973400

_________________
Je cherche un sparring-partner pour apprendre à développer en MQL5.
Mon blog : www.apprendre-mql5.com


Haut
 Profil  
 
MessagePosté: 18 Juil 2018, 15:55 
Hors ligne
VideoBourse family

Inscription: 17 Sep 2014, 17:36
Messages: 645
Pierre8r a écrit:
je suis tombé par hasard sur du code d'Alain Verleyen."


Alain est mon codeur d'EA Favoris :) c'est un belge qui connait super bien mql4, mql5, c++
c'est une pointure.

tu peux le croiser souvent sur le site de mql5 ou il est modo et code freelance

https://www.mql5.com/en/users/angevoyageur

_________________
ducunt volentem fata nolentem trahunt


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 14 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com
phpBB SEO