Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 254

 
Alexey Kozitsyn:
Par le biais d'un fichier, par exemple...

si ça ne vous dérange pas trop, un peu plus de détails.

 
виталик:

si vous le voulez bien, un peu plus de détails.

Pour extraire des citations, utilisez les fonctions de copie :

https://www.mql5.com/ru/docs/series

Ensuite, https://www.mql5.com/ru/docs/files est un lien vers les opérations de classement.

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Файловые операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Bonsoir, je suis en train de réaliser un modèle de "rails", mais je n'arrive pas à le faire fonctionner.... pouvez-vous voir ce qui ne va pas ? Merci d'avance.
Dossiers :
jzogyr2.mq4  6 kb
 
sviter-pro:
Bonsoir, je suis en train de réaliser un motif "rails", mais je n'arrive pas à le faire fonctionner.... pouvez-vous voir ce qui ne va pas ? Merci d'avance.

int OnInit()
  {

   SetIndexBuffer(0,BuyTrain); SetIndexStyle(0,DRAW_ARROW,EMPTY,RazmerStrelok,coloru); SetIndexArrow(0,159); SetIndexEmptyValue(0,EMPTY_VALUE);
   SetIndexBuffer(1,SelTrain); SetIndexStyle(1,DRAW_ARROW,EMPTY,RazmerStrelok,colord); SetIndexArrow(1,159); SetIndexEmptyValue(1,EMPTY_VALUE);

   return(INIT_SUCCEEDED);
  }

Et ces conditions ne seront jamais remplies

   double high2=0.0,high3=0.0,high4=0.0,high5=0.0,high6=0.0,high7=0.0,size1=0.0,size2=0.0,body1=0.0,body2=0.0;

      if(Close1<Open1 && Close2>Open2
         && MathAbs(High1-High2)<=5*Point
         && high3<high2
         && high4<high2
         && high5<high2
         && high6<high2
         && high7<high2
         && body1 >= size1 * 0.7
         && body2 >= size2 * 0.7
         && size1 >= 20 * Point && size2 >= 20 * Point)
        {
         BuyTrain[i]=low[i]-OtstupStrelok*Point;
        }
      if(Close1>Open1
         && Close2<Open2
         && MathAbs(Low1-Low2)>=5*Point
         && high3>high2
         && high4>high2
         && high5>high2
         && high6>high2
         && high7>high2
         && body1 <= size1 * 0.7
         && body2 <= size2 * 0.7
         && size1 <= 20 * Point
         && size2 <= 20 * Point)
        {
         SelTrain[i]=high[i]-OtstupStrelok*Point;
        }
 

Bonjour, la tâche est la suivante : je dois déterminer combien de barres il y aura avant la prochaine heure 01h00. Je l'ai fait jusqu'à présent avec une boucle, mais peut-être est-il plus correct de le faire d'une manière ou d'une autre avec iBarShift? Peut-être qu'il est plus correct de le faire différemment du tout ?

      int ShiftBar=0;
      for(int cnt=0; cnt<100; cnt++)
        {
         int hour=TimeHour(iTime(Symbol(),PERIOD_M30,cnt));
         if(hour==1)
           {
            ShiftBar=cnt;
            break;
           }
        }
        Print("ShiftBar= ",ShiftBar);
 
Nauris Zukas:

Bonjour, la tâche est la suivante : je dois déterminer combien de barres il y aura avant la prochaine heure 01h00. Je l'ai fait jusqu'à présent avec une boucle, mais peut-être est-il plus correct de le faire d'une manière ou d'une autre avec iBarShift ? Peut-être que c'est mieux de le faire d'une manière complètement différente ?

Pour une transition plus aisée vers mql5 à l'avenir, il serait préférable d'utiliser des fonctions qui sont utilisées dans les deux langues. Pour la recherche du nombre de barres, il est préférable d'utiliser

int  Bars(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период
   datetime         start_time,      // с какой даты
   datetime         stop_time        // по какую дату
   );

En fait, iBarShift() fera le travail mieux que cycle.

Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
 
Alexey Viktorov:

Pour une transition plus aisée vers mql5 à l'avenir, il est préférable d'utiliser les fonctions utilisées dans les deux langues. Pour la recherche du nombre de barres, il est préférable d'utiliser

L'iBarShift() peut gérer cette tâche mieux que le cycle.

Oui, mais le problème est de trouver les 01.00 heures les plus proches. Comment allez-vous le trouver ?
int iBarShift(
string symbol,// symbole
inttimeframe, // période
datetimeheure, // heure ?? ???????
bool exact=false // mode
) ;
 
Nauris Zukas:
Oui, mais le problème est de trouver les 01.00 heures les plus proches. Comment le déterminez-vous ?
int iBarShift(
string symbol,// symbole
inttimeframe, // période
datetimeheure, // heure ?? ???????
bool exact=false // mode
) ;

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Toute question pour les débutants sur MQL4, aide et discussion sur les algorithmes et les codes

Alexey Viktorov, 2017.07.27 13:54

Si vous voulez faire une transition sans problème vers mql5 à l'avenir, il serait préférable d'utiliser des fonctions qui sont utilisées dans les deux langues. Pour rechercher le nombre de barres, il est préférable d'utiliser

int  Bars(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период
   datetime         start_time,      // с какой даты
   datetime         stop_time        // по какую дату
   );

En principe, iBarShift() peut gérer cette tâche mieux qu'un cycle.

Renverra le nombre de barres entre le moment spécifié et le moment actuel, si le moment actuel de la barre est spécifié en tant que stop_time.

Le seul problème est que je ne remplis jamais ma cellule de mémoire avec des choses aussi inutiles que ce que la valeur obtenue sera égale, étant donné une barre avec le temps spécifié, ou inférieure de 1. Je vérifie juste à chaque fois.

 
Alexey Viktorov:

Renvoie le nombre de barres entre l'heure spécifiée et l'heure actuelle, si l'heure actuelle de la barre est spécifiée comme heure d'arrêt.

Le seul problème est que je n'encombre jamais ma cellule mémoire avec des trucs inutiles comme ce à quoi la valeur sera égale, y compris la barre avec le temps spécifié ou moins par 1. Je vérifie juste à chaque fois.

Je comprends tout cela, mais essayez d'entrer dans la question. Comment trouver l'heure spécifiée - dans mon cas, vous devez trouver les 01.00 heures les plus proches. Comment l'écrivez-vous ?
datetime start_time, // à partir de quelle date ? ??

 
Nauris Zukas:

Je comprends tout cela, mais essayez d'entrer dans la question. Comment trouver l'heure spécifiée - dans mon cas, vous devez trouver les 01.00 heures les plus proches. Comment l'écrivez-vous ?
datetime start_time, // à partir de quelle date ? ??

 datetime t=StringToTime("01:00");
 int b=Bars(_Symbol, PERIOD_M30, t, TimeCurrent());
À l'heure actuelle, 17:08, il affiche 33. Par exemple, le numéro de barre avec l'heure 01:00 sera 32.
Raison: