[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 434

 
S'il vous plaît dites-moi, le smiley sourit mais le conseiller ne s'allume pas...comment puis-je le configurer correctement ?...merci !
 
zorber:

Bonne journée à tous,

Je place un ordre en attente (heure de création, par exemple 11:31)
Alors cet ordre se déclenche à 12:01

Question : Comment puis-je connaître la date et l'heure auxquelles l'ordre en attente a été placé si l'ordre est déjà entré sur le marché et que la fonction OrderOpenTime( ) renvoie l'heure d'entrée sur le marché.

Quelqu'un sait-il comment résoudre ce problème ?

Merci d'avance.


Dans MT4, à partir de la liste des ordres, c'est impossible.

L'un des moyens est de se souvenir du moment où l'on place

 
Roger:
Il est grand temps que vous compreniez le fichier texte, comment il est organisé et de quoi il se compose. Désimprimez la position du curseur après chaque lecture de ligne, en utilisant la touche
int FileTell( int handle)
Cela deviendra clair tout de suite.

L'ironie de la situation est que la question que j'ai posée ci-dessus a été déclenchée par une situation qui correspond presque à votre conseil...

Afin de comprendre le fonctionnement des fonctions FileIsEnding et FileIsLineEnding, j'ai écrit le script suivant :

//+------------------------------------------------------------------------------------------+
//|                                                                   Конец_Строки_Файла.mq4 |
//+------------------------------------------------------------------------------------------+
//+------------------------------------------------------------------------------------------+
//|                         script program start function                                    |
//+------------------------------------------------------------------------------------------+
#property show_inputs                                                    //выводим перед запуском скрипта окно свойств
extern int  position=0;                                                  //внешняя переменная: смещение файлового указателя ОТ НАЧАЛА ФАЙЛА (в БАЙТАХ)
//---------------------------------------------------------------------------------------- 1 -
int start()                                                              //функция start
  {                                                                      //начало start
   double Timestart=GetTickCount();                                      //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения эксперта 
   string name="Копия Запись чисел в файл.csv";                          //имя создаваемого файла
   bool h;                                                               //переменная: значение функции FileIsEnding
   bool h_l;                                                             //переменная: значение функции FileIsLineEnding
   int error;                                                            //переменная: ошибка
   int handle=FileOpen(name,FILE_CSV|FILE_WRITE,';');                    //открываем заданный файл n записываем туда данные
   int запись=FileWrite(handle,DoubleToStr(1.3584,4));                   //записываем число в файл csv (в преобразованном виде, т.е в виде текста)
   FileClose(handle);                                                    //закрываем файл
//---------------------------------------------------------------------------------------- 2 -
   handle=FileOpen(name,FILE_CSV|FILE_READ,';');                         //открываем заданный файл
   bool pos=FileSeek(handle,position,SEEK_SET);                          //смещаем от начала вправо указатель файла
   double чтение=FileReadNumber(handle);                                 //считываем число из текущей позиции (уже измененной функцией FileSeek) файлового указателя
   int size=FileSize(handle);                                            //вычисляем размер заданного файла
   h=FileIsEnding(handle);                                               //устанавливаем текущее значение переменной h
   h_l=FileIsLineEnding(handle);                                         //устанавливаем текущее значение переменной h_l
   error=GetLastError();                                                 //значение ошибки, производимой функцией FileIsEnding
   if(error!=0)Alert("Текущая ошибка ",error);                           //если код текущей ошибки не равен 0, то получаем номер текущей ошибки
   FileClose(handle);                                                    //закрываем файл
//----------------------------------------------------------------------------------------- 3 -
   Comment("Размер файла ",name," составил ",size," байт",
           "\nФункция FileSeek вернула: ",pos,
           "\nФункция FileReadNumber(handle) вернула: ",чтение,
           "\nФункция FileIsLineEnding(handle) вернула: ",h_l,
           "\nФункция FileIsEnding(handle) вернула: ",h,
           "\nСкрипт выполнялся всего ",GetTickCount()-Timestart," миллисекунд, из них: ",MathFloor((GetTickCount()-Timestart)/1000)," секунд ",((GetTickCount()-Timestart)/1000-MathFloor((GetTickCount()-Timestart)/1000))*1000," миллисекунд");//печать сообщения на экран
//----------------------------------------------------------------------------------------- 4 -
   return(0);                                                             //выход из start
  }                                                                       //конец start
//-------------------------------------- КОНЕЦ START -------------------------------------- 5 -

Dans le bloc 1-2, j'ai ouvert et écrit le nombre 1,3584 dans le fichier (que la fonction DoubleToStr convertit en texte).

Dans le bloc 3-4, j'ai ouvert le fichier et lu le nombre qui y était écrit.

L'objectif de la variable externe int position est d'essayer de comprendre comment fonctionnent les fonctions FileIsEnding et FileIsLineEnding et ce qu'est un pointeur de fichier en déplaçant le pointeur de fichier à l'aide de la fonction FileTell .

Le livre MQL4.community indique que le pointeur de fichier est un analogue du curseur de texte.

MAIS, en exécutant le script plusieurs fois et en augmentant la variable externe postiton de 1 à chaque fois (c'est-à-dire en déplaçant le pointeur de fichier de 1 octet à droite du début du fichier), la fonction Commentaire produit un certain nombre de messages, par exemple

si postiton=7, le message ressemblerait à ceci :

si postiton=7, le message ressemblerait à ceci :


Je comprends que, puisque les constantes de chaîne occupent 8 octets dans la mémoire du PC et qu'il n'y a qu'un seul numéro converti dans le fichier, le fait de déplacer le pointeur de fichier de 8 octets vers la droite me donnera une erreur 4099 (ce qui signifie que la fin du fichier a été atteinte). Je comprends également que la fonction FileIsEnding renvoie 1 (vrai) pour la même raison (fin du fichier atteinte). Mais je ne comprends pas pourquoi la fonction FileIsLineEnding renvoie 0 (faux, ce qui signifie que le pointeur de fichier n'a pas atteint la fin de la ligne). Après tout, en me basant sur l'analogie donnée dans le livre MQL (un pointeur de fichier est à peu près la même chose qu'un curseur de texte), je me suis dit que la fin du fichier est aussi la fin de la chaîne. Mais étant donné que FileIsEnding et FileIsLineEnding n'ont pas les mêmes valeurs lorsque le pointeur de fichier atteint la fin du fichier, je suis resté perplexe quant à ce qu'est un pointeur de fichier ? Mais comme il fallait bien commencer quelque part pour poser la question, je l'ai posée telle qu'elle apparaît à la page 433.

J'ai donc une énorme demande à faire pour vider mon cerveau échauffé et répondre aux questions suivantes (ou au moins une qui m'aidera à comprendre le reste des questions) :

1. Qu'est-ce qui ne va pas dans ma compréhension du pointeur de fichier (la question est donnée dans mon post à la p.433)

2. La signification de la phrase "Si la vérification spécifiée (les 2 dernières lignes du bloc 5-6) est supprimée, alors un objet supplémentaire sera créé au moment de l'exécution. Et seulement après cela, la condition de fin de la boucle while sera déclenchée et le contrôle sera transféré au bloc 8-9" (la question est donnée dans mon message à la page 433).

3. Pourquoi FileIsLineEnding renvoie-t-il 0 au lieu de 1 lorsqu'il atteint la fin du fichier ?

P.S. Afin de ne pas encombrer le forum, merci d'avance pour la réponse.

 

Bon moment à vous tous

Veuillez me dire comment tracer une ligne horizontale ((Bid+Ask)/2+0.00333) :)

 

Bonjour !

Messieurs, que faire ?

L'ordinateur mobile ne voit pas le réseau "PAS DE COMMUNICATION".

 
Ragen:

Bonjour !

Messieurs, que faire ?

L'ordinateur mobile ne voit pas le réseau "PAS DE COMMUNICATION".


créer une nouvelle démo. l'ancienne a dû être supprimée par manque de temps.
 
sergeev:

Créez une nouvelle démo pour vous-même. L'ancienne doit avoir été supprimée en raison de la date limite
.

Je ne suis pas sur une démo, mais sur trois comptes réels.

Mais tous proviennent du même Dtz, cela affecte-t-il quelque chose ?

 
Ragen:

Je ne suis pas sur une démo, mais sur trois comptes réels.

Mais tous proviennent du même Dtz, cela peut-il affecter quoi que ce soit ?


Qu'est-ce que cela a à voir avec le forum de programmation MQL ?
 
sergeev:

Qu'est-ce que cela a à voir avec le forum de programmation MQL ?

Pour une raison quelconque, le terminal a immédiatement "roulé" :)

Je m'en occupe !

 

Professionnels, veuillez nous conseiller. Si j'ai placé un ordre stop en attente, mais que le prix y est entré avec un écart étendu qui dépasse le stoploss..... Que va-t-il se passer ?

L'ordre sera mangé par la propagation... Ou bien une erreur se produira-t-elle et l'ordre ne sera pas déclenché ?