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

 
tvv:

Je ne comprends pas. Cette option indique l'emplacement du fichier - \MetaQuotes\Terminal\Common. Sans cette option, je ne pourrai pas récupérer le fichier qui a été généré dans le testeur. Sans cette option, le fichier sera recherché dans MQL4\Files - et je ne pourrai pas y placer le fichier du testeur.

C'est l'absence de ce drapeau que j'ai soulignée.

 
Alexey Viktorov:

C'est l'absence de ce drapeau que j'ai soulignée.

Merci pour votre aide - c'est juste une faute de frappe - je connais ce drapeau. Le problème n'est pas résolu - le fichier ne veut pas s'ouvrir en mode lecture partagée - même sans utiliser le testeur. Tant que ce fichier est ouvert par l'indicateur - le script ne peut pas l'ouvrir. Le Bloc-notes, quant à lui, l'ouvre sans problème.

 
tvv:

Merci pour votre aide - c'est juste une faute de frappe - je connais ce drapeau. Le problème n'est pas résolu - le fichier ne veut pas s'ouvrir en mode lecture partagée - même sans utiliser le testeur. Tant que ce fichier est ouvert par l'indicateur - le script ne peut pas l'ouvrir. Le Bloc-notes, en revanche, l'ouvre sans problème.

Essayez de forcer les données sur le disque périodiquement par FileFlush().


hmmm : une autre chose que je n'ai pas remarqué tout de suite

tvv:

ExtHandle=FileOpen(c_symbol+(string)20+".csv",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_SHARE_READ|FILE_COMMON) ;
Le fichier du script est ouvert comme suit : ExtHandleR=FileOpen("EURUSD20.csv",FILE_BIN|FILE_READ|FILE_SHARE_READ) ;
Veuillez signaler mon erreur.

C'est étrange que ce soit écrit. Il devrait y avoir un drapeau FILE_CSV.
FileFlush - Файловые операции - Справочник MQL4
FileFlush - Файловые операции - Справочник MQL4
  • docs.mql4.com
При выполнении операции записи в файл физически данные могут оказаться в нем только через некоторое время. Для того чтобы данные сразу же сохранились в файле, нужно использовать функцию FileFlush(). Если не использовать функцию, то часть данных, еще не попавших на диск, принудительно записывается туда только при закрытии файла функцией...
 
Alexey Viktorov:

Essayez de forcer périodiquement les données sur le disque par FileFlush().


Indice : une autre chose que j'ai remarquée il y a quelque temps.

C'est étrange que ce soit écrit. Il devrait y avoir un drapeau FILE_CSV.

.CSV est une extension de fichier - vous pouvez utiliser n'importe quelle extension - je l'ai choisie pour que vous puissiez la consulter dans le Bloc-notes. Voici un article intéressant - https://www.mql5.com/ru/articles/2720. Mon code est conforme aux règles décrites ici - mais je ne peux pas lire le fichier de manière programmatique. en mode FILE_SHARE_READ. Pour le fichier EURUSD20.HST avec l'extension .HST - le drapeau doit être FILE.BIN, de sorte que dans MT Le fichier 4 peut être ouvert hors ligne.

Основы программирования на MQL5: Файлы
Основы программирования на MQL5: Файлы
  • 2016.09.28
  • Dmitry Fedoseev
  • www.mql5.com
Функции для работы с файлами есть почти во всех языках программирования, и MQL5 в этом смысле — не исключение. Хотя при программировании советников и индикаторов на MQL5 работать с использованием файлов приходится не всегда, (а скорее даже — очень редко), но тем не менее, каждый экспертописатель рано или поздно с этим сталкивается. Диапазон...
 
tvv:

.CSV est une extension de fichier - elle peut être n'importe quoi - je l'ai choisie pour pouvoir la consulter dans Notepad. Voici un article intéressant - https://www.mql5.com/ru/articles/2720. Mon code est conforme aux règles décrites ici - mais je ne peux pas lire le fichier de manière programmatique. en mode FILE_SHARE_READ. Pour le fichier EURUSD20.HST avec l'extension .HST - le drapeau doit être FILE.BIN, de sorte que dans MT Le fichier 4 peut être ouvert hors ligne.

J'ai essayé de travailler non pas dans le testeur mais juste sur un graphique normal (EURUSD M1) - je lance l'indicateur qui génère le TF M20.

Pour ouvrir le fichier:

ExtHandle= FileOpen("EURUSD20.csv",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_SHARE_READ).

Le fichier apparaîtra alors dans le dossier MQL4\Files. Ensuite, nous exécutons le script sur un graphique régulier (EURUSD M5) qui copie le contenu de EURUSD20.csv vers EURUSD20.HST. Le fichier EURUSD20.HST est généré dans le dossier historique dans le même répertoire que MQL4.

Le code du script :

ExtHandleR=FileOpen("EURUSD20.csv",FILE_BIN|FILE_READ|FILE_SHARE_READ) lire le fichier ;

ExtHandleW=FileOpenHistory("EURUSD20.hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ) ;

Tout fonctionne uniquement lorsque je supprime l'indicateur du graphique M1. C'est-à-dire que le mode de lecture du partage de fichiers ne fonctionne pas.

 

Bonjour, quel est le problème de metatrader sur le graphique de l'eurodollar ? Une bougie quotidienne pour le dimanche 9.10.2011 est apparue, sur le graphique horaire il n'y a qu'une heure 23:00 pour cette date. Cela est probablement dû au passage à l'heure d'hiver. Comment le réparer ? Cette bougie n'existait pas auparavant.

 
tvv: Tout fonctionne uniquement lorsque je supprime l'indicateur du graphique M1. C'est-à-dire que je n'ai pas le mode de lecture des fichiers divisés qui fonctionne.

Le problème est résolu comme suit : le programme qui écrit le fichier doit fermer FileClose après chaque opération d'écriture, libérant ainsi le fichier pour qu'un autre programme puisse le lire. Cela est dû au fait que les données sont d'abord écrites dans la mémoire tampon et ne sont pas physiquement présentes dans le fichier pendant un certain temps. La fermeture du fichier libère le tampon dans le fichier. Avant la prochaine écriture

   // Открытие или создание файла и перемещение указателя в конец
   Файл = FileOpen(ИмяФайла, FILE_CSV | FILE_READ | FILE_WRITE, " "); // еще COMMON  SHARE...
   FileSeek(Файл, 0, SEEK_END);

le fichier est rouvert et le pointeur est déplacé à la fin de l'enregistrement.

 

Bonjour, pouvez-vous me dire s'il est correct de dire que le nombre de points obtenus sera le même dans les deux expressions ? C'est vraiment important pour moi !

"Цена закрытия последнего закрытого ордера"-Ask>=30*Point

Ask-"Цена закрытия последнего закрытого ордера">=30*Point //Если цена Выше

Plus exactement, les points ne peuvent-ils pas être négatifs ???? Ou est-ce encore.....))

 

Bonsoir.

J'ai commencé à étudier le mql5 et j'ai quelques questions, alors aidez-moi s'il vous plaît.

La tâche est de récupérer les valeurs des n derniers chandeliers dans un tableau et de trier le tableau en ne choisissant que les chandeliers invaincus.

J'ai écrit la fonction :

double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)
   {
      double high=0;
      int k=0;
      int s=0;
      ArraySetAsSeries(High,true);
         if(CopyHigh(Symbol(),Period(),0,NumCand,High)==-1)
               {
               Print("Не удалось скопировать значения цен High! Код ошибки = ",GetLastError());
               }  
               
      
       for(int x=NumCand-1; x==0; x--)
            {
            if(IsStopped())
            break;
                  for (int j = NumCand-x-1; j == 0; j--) 
                  {
                  if (High[j+1] > High[j])
                     {
                     // Если хай не побит записываем в массив
                     temp[k] = High[j+1];
                     k++;
                     }   
                   }
            }
      s=sizeof(temp);               
      high=temp[index];
      return(high);
   } 

Il génère untableau d' erreurhors de portée.

 high=temp[index];

D'après ce que j'ai compris, cette erreur est causée par l'adressage d'une cellule inexistante du tableau.

Mais je n'ai pas pu trouver l'erreur du déménagement, veuillez m'indiquer où j'ai fait une erreur, ou peut-être y a-t-il un tri plus élégant.

 
WhiteBerkut:

Bonsoir.

J'ai commencé à étudier le mql5 et j'ai quelques questions, alors aidez-moi s'il vous plaît.

La tâche est de récupérer les valeurs des n derniers chandeliers dans un tableau et de trier le tableau en ne choisissant que les chandeliers invaincus.

J'ai écrit la fonction :

Il génère untableau d' erreurhors de portée.

D'après ce que j'ai compris, cette erreur est causée par l'adressage d'une cellule inexistante du tableau.

Mais je n'ai pas pu trouver l'erreur du déménagement, veuillez m'indiquer où j'ai fait une erreur, ou peut-être y a-t-il un tri plus élégant.

Compare la valeur de l'index avec la dimension du tableau. Notez que les éléments du tableau sont numérotés à partir de zéro, et que le numéro du dernier élément est inférieur de 1 à la dimension de l'index. Et NumCand est égal à quoi ?
Raison: