oui, oui tu as bien compris, merci pour les infos https://www.mql5.com/fr/articles/159
je rajoute un petit bout de code
//+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { double mm=moyenneMobileArithmetique(); double currentPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID); //gestion de l'index if(isNewBar()){index++;} if(index>(nbBarres-1)){index=0;} // calcul tabBar[index]=currentPrice-mm; // Filtrage des faux positifs à partir des valeurs du tableau. } bool isNewBar() { //--- memorize the time of opening of the last bar in the static variable static datetime last_time=0; //--- current time datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE); //--- if it is the first call of the function if(last_time==0) { //--- set the time and exit last_time=lastbar_time; return(false); } //--- if the time differs if(last_time!=lastbar_time) { //--- memorize the time and return true last_time=lastbar_time; return(true); } //--- if we passed to this line, then the bar is not new; return false return(false); }
cdl remy
- www.mql5.com
bool TesterPremierTick(ENUM_TIMEFRAMES Tf) { MqlRates TickBougie[5]; int NbreBougie = CopyRates(_Symbol, Tf, 0, 5, TickBougie); if ((NbreBougie == 5) && (TickBougie[4].tick_volume == 1)) return true; return false; } _________________ // Et pour l'appeler de n'importe où dans ton code, il te suffirait de faire juste ça, par exemple : bool NewBar = TesterPremierTick(PERIOD_M1) if (NewBar) { instruction1; instruction2; etc... }
Merci cela fct, cela prend probablement un peu moins de temps. Par contre, s'il y a une coupure réseau ou lorsque je passe de
tick_volume=50+ nouvelles barres + coupure + fin de la coupure+ tick_volum ( nouvelles barres )=10,
il va y avoir un problème, non ? Et j'ai également adapté ton code. un peu
bool isNewBar() { MqlRates TickBougie[1]; int NbreBougie = CopyRates(_Symbol, _Period , 0, 1, TickBougie); if ((NbreBougie == 1) && (TickBougie[0].tick_volume == 1)) return true; return false; }
cdl remy
Merci cela fct, cela prend probablement un peu moins de temps. Par contre, s'il y a une coupure réseau ou lorsque je passe de
tick_volume=50+ nouvelles barres + coupure + fin de la coupure+ tick_volum ( nouvelles barres )=10,
il va y avoir un problème, non ? Et j'ai également adapté ton code. un peu
cdl remy
Pas mal. Et j'espère que ton adaptation donne le même résultat, et c'est le plus important.
Je viens de vérifier, dans les deux cas il y a bien un problème. Il ne faut pas que la coupure dure plus longtemps
que la durée d'une barre. Je vais choisir l'option dans les dates,
parque
if(last_time!=lastbar_time)
me semble pus robuste que
if(TickBougie[0].tick_volume == 1)L'idéal aurais été de savoir calculer la valeur de la moyenne mobile pour une date donnée
encore merci cdl remy
Je viens de vérifier, dans les deux cas il y a bien un problème. Il ne faut pas que la coupure dure plus longtemps
que la durée d'une barre. Je vais choisir l'option dans les dates,
parque if(last_time!=lastbar_time) me semble pus robuste que if(TickBougie[0].tick_volume == 1)
encore merci cdl remy
Encore une fois, pas mal. C'est donc à toi de choisir la formule qui te va en tenant compte justement de la logique algorithmique que tu souhaites implémenter au final. Le plus important étant que tu arrives à obtenir le résultat que tu souhaites bien obtenir. Voilà ! Merci.
Je viens de vérifier, dans les deux cas il y a bien un problème. Il ne faut pas que la coupure dure plus longtemps
que la durée d'une barre. Je vais choisir l'option dans les dates,
parque
me semble pus robuste que
L'idéal aurais été de savoir calculer la valeur de la moyenne mobile pour une date donnéeencore merci cdl remy
Et pour ce qui est du calcul de la moyenne mobile, puisque tu es sur python et non directement sur Mql5, là, il te faudrait te renseigner davantage sur les bibliothèques python dédiées au trading, où tu trouverais des informations précises sur notamment le calcul des indicateurs techniques, en l'occurrence les moyennes mobiles, car c'est de ça qu'il t'est question ici. Merci
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Bonjour,
je suis à la recherche d'une méthode ou d'une fonction pour détecter la fin d'une barre. L'idée sous-jacente consiste à stocker le résultat d'un calcul dans un tableau.
tab[0]= (val close) - (Moyenne mobile lors de la clôture de la barre)
cdl remy