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

 
Санек:

1) - Cette partie ouvre le fichier 11112222.txt pour y lire des données :

//=================================BUY=========================================
    int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения

2) - Ensuite vient la condition si handle2>0


  if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY
   {

3) - C'est la partie que je ne comprends pas :


       Print(FileReadString(handle2));

4) - Cette partie ferme le dossier :


       FileClose(handle2); // закрытие текстового файла

5) - La condition handle2>0 étant remplie, c'est-à-dire que le fichier 11112222.txt contient 1, un ordre d'achat est ouvert :

  //ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ      
                    if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку
                     {
                        OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
                        FileClose(handle2); // закрытие текстового файла
                     }
                    else
                      Print("NE USPESHNO!!!");
                      FileClose(handle2); // закрытие текстового файла

   }
//=================================конец кода BUY=========================================

Quelles parties ai-je mélangées ?

1) Ouvre le fichier, mais ne lit pas son contenu.

2) Le handle du fichier est TOUJOURS supérieur à zéro. Par conséquent, la condition sera toujours valable si le fichier existe, quel que soit son contenu.

3) Il s'agit exactement de lire le contenu du fichier. Bien que je ne comprenne pas pourquoi on lit une chaîne de caractères, si on a besoin de lire un nombre... Mais cela peut encore être un autre problème. Il s'agit maintenant de décrire la séquence d'actions.

4) Bien sûr, le dossier doit être fermé et il se ferme.

Et seule la clause suivante doit être conditionnée en fonction de ce que vous lisez dans la clause 3, mais pas la deuxième clause.

 
Alexey Viktorov:

1) ouvre un fichier, mais ne lit pas son contenu.

2) Un handle de fichier est TOUJOURS plus grand que zéro. Par conséquent, la condition sera toujours valable si le fichier existe, quel que soit son contenu.

3) Il s'agit exactement de lire le contenu du fichier. Mais je ne comprends pas pourquoi on lit une chaîne de caractères, si on veut lire un nombre... Mais cela peut tout de même renvoyer à un autre problème. Il s'agit maintenant de décrire la séquence d'actions.

4) Le dossier doit être fermé, bien sûr, et il l'est.

Et seule la clause suivante devrait être conditionnée en fonction de ce que vous lisez dans la clause 3, mais pas la deuxième clause.

Non... INVALID_HANDLE a la valeur -1.

C'est là qu'il y a une erreur d'ouverture de fichier, puis un signal de vente...

Autres constantes

Constantes spéciales utilisées pour indiquer l'état des paramètres et des variables. Peut prendre les valeurs suivantes :

Constant

Description

Valeur

NULL

Null de n'importe quel type. Indique également l'état de chaîne vide

0

VIDE

Indique l'état vide du paramètre

-1

EMPTY_VALUE

Valeur vide dans le tampon de l'indicateur

2147483647 (0x7FFFFFFFF)

CLR_NONE, clrNONE

Pas de couleur. Valeur par défaut, pointeur vers une valeur vide. Utilisé dans les indicateurs personnalisés

-1

CHARTS_MAX

Nombre maximal possible de graphiques ouverts simultanément dans le terminal

100

INVALID_HANDLE

Poignée incorrecte

-1

IS_DEBUG_MODE

Signe d'un programme mq5 en mode débogage

en mode débogage n'est pas égal à zéro, sinon 0

IS_PROFILE_MODE

Signe d'un programme mq5 en mode profilage

en mode profilage n'est pas égal à zéro, sinon c'est 0

WHOLE_ARRAY

Indique le nombre d'éléments restants jusqu'à la fin du tableau, c'est-à-dire que le tableau entier sera traité.

0

WRONG_VALUE

Une constante peut être implicitement convertie en n'importe quel type d'enum.

-1

 

Je n'ai pas vu ce fil, alors j'en ai créé un nouveau. Veuillez consulterle site https://www.mql5.com/ru/forum/206126.

Как в тестере стратегий получить TimeGMT();
Как в тестере стратегий получить TimeGMT();
  • 2017.06.28
  • www.mql5.com
Справочник MQL5, Дата и время, TimeGMT TimeGMT - При работе в тестере стратегий время TimeGMT() всегда равно моделируемому серверному времени TimeT...
 
Alexey Viktorov:

1) ouvre un fichier, mais ne lit pas son contenu.

2) Un handle de fichier est TOUJOURS supérieur à zéro. Par conséquent, la condition sera toujours valable si le fichier existe, quel que soit son contenu.

3) Il s'agit exactement de lire le contenu du fichier. Mais je ne comprends pas pourquoi on lit une chaîne de caractères, si on veut lire un nombre... Mais cela peut tout de même renvoyer à un autre problème. Il s'agit maintenant de décrire la séquence d'actions.

4) Le dossier doit être fermé, bien sûr, et il l'est.

Et seul l'élément suivant devrait être conditionné en fonction de ce que vous avez lu dans l'élément 3, mais pas le deuxième élément.

Chers gourous de MQL - si vous n'êtes pas un problème, aidez-moi avec ce code, j'ai passé une demi-journée sur les moteurs de recherche, mais je n'ai rien trouvé de similaire.

Je suppose qu'il ne s'agit que de quelques lignes, mais pour un utilisateur expérimenté, c'est une question de minutes))).

 

Comment un dll en c++ peut-il prendre une chaîne de caractères de mql4 et la convertir en char* ?

struct MqlStr
{
        int               len;
        char             *string;
};

static int proc_func(char* Name);

MT4_EXPFUNC int __stdcall myfunc(MqlStr sym_name)
{
        proc_func(sym_name[0].string);
        
}
int proc_func(char* Name)
{
}
C'est le bon code, n'est-ce pas ?
 

Bonjour à tous, pourriez-vous me dire s'il vous plaît, j'ai écrit un EA il y a environ un an, il fonctionnait bien. Je ne l'ai pas utilisé pendant tout ce temps. Je ne sais pas quoi en faire, je ne sais tout simplement pas quoi en faire. Serait-ce parce que j'ai changé de bâtiment ? J'utilise actuellement la version 1090.

 
Санек Cher gourou MQL - si vous n'avez pas de mal à m'aider avec ce code, j'ai passé une demi-journée à fouiller dans les moteurs de recherche, mais je ne trouve rien de similaire.

Il semble que ce soit une question de quelques lignes, ce qui, pour une personne avertie, est une question de trois minutes))).

Ça m'a pris deux heures. Je dois vérifier le système pièce par pièce. Exécutez les deux EA en même temps sur des graphiques adjacents - tout sera visible. Expert Advisor 1 = Ecriture dans le fichier

//+------------------------------------------------------------------+
//| Запись в файл -1  0  1                                     1.mq4 |
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| Инициализация - установка интервала таймера                      |
//+------------------------------------------------------------------+
void OnInit()
{
   EventSetTimer(7);
}


//+------------------------------------------------------------------+
//| Деинициализация - удаление метки                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int Зачем)
{
   ObjectDelete("Семафор");
}


//+------------------------------------------------------------------+
//| По таймеру каждые 7 секунд                                       |
//+------------------------------------------------------------------+
void OnTimer()
{
   int x=0;
   if(rand()<20000)
   {
     x=1;
     if(rand()<16000) x=-1;
   }

   ObjectCreate("Семафор",OBJ_LABEL,0,0,0);
   ObjectCreate("Семафор", OBJ_LABEL, 0, 0, 0);  // Создание
   ObjectSet("Семафор", OBJPROP_CORNER, 3);      // В правый нижний угол
   ObjectSet("Семафор", OBJPROP_XDISTANCE, 0);   // Координата X   
   ObjectSet("Семафор", OBJPROP_YDISTANCE, 40);  // Координата Y
   ObjectSetText("Семафор",(string)x+" Открываю",20,"Arial",Yellow);
   ChartRedraw(0);
   Sleep(2000);

   int handle = FileOpen("123.txt", FILE_BIN | FILE_WRITE);
   if(handle == -1)
   {
      ObjectSetText("Семафор","Ошибка",20,"Arial",Salmon);
      ChartRedraw(0);
      return;
   }

   ObjectSetText("Семафор",(string)x+" Записываю",20,"Arial",DeepSkyBlue);
   ChartRedraw(0);

   FileWriteInteger(handle, x, 4);
   Sleep(2000);

   ObjectSetText("Семафор","",20,"Arial",White);
   ChartRedraw(0);
   FileClose(handle);
}

EA 2 = Lecture du fichier

//+------------------------------------------------------------------+
//| Чтение файла  -1  0  1                                     2.mq4 |
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| Инициализация - установка интервала таймера                      |
//+------------------------------------------------------------------+
void OnInit()
{
   EventSetTimer(1);
}


//+------------------------------------------------------------------+
//| Деинициализация - удаление метки                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int Зачем)
{
   ObjectDelete("Семафор");
}


//+------------------------------------------------------------------+
//| По таймеру каждую секунду                                        |
//+------------------------------------------------------------------+
void OnTimer()
{
   int x=0;

   ObjectCreate("Семафор",OBJ_LABEL,0,0,0);
   ObjectCreate("Семафор", OBJ_LABEL, 0, 0, 0);  // Создание
   ObjectSet("Семафор", OBJPROP_CORNER, 2);      // В правый нижний угол
   ObjectSet("Семафор", OBJPROP_XDISTANCE, 0);   // Координата X   
   ObjectSet("Семафор", OBJPROP_YDISTANCE, 40);  // Координата Y
   ObjectSetText("Семафор","",20,"Arial",Yellow);
   ChartRedraw(0);

   Sleep(500);
   int handle = FileOpen("123.txt", FILE_BIN | FILE_READ);  // Получаем НОМЕР файла в ОС
   if(handle == -1)                // Если производится запись, файл занят, будет ошибка
   {
      ObjectSetText("Семафор","Ошибка",20,"Arial",Salmon);
      ChartRedraw(0);
      return;
   }

   x = FileReadInteger(handle,4);                          // Получаем СОДЕРЖИМОЕ файла
   ObjectSetText("Семафор",(string)x+" Прочитал",20,"Arial",DeepSkyBlue);
   ChartRedraw(0);

   FileClose(handle);
}
 
toni_stark:

Bonjour à tous, pourriez-vous me dire s'il vous plaît, j'ai écrit un EA il y a environ un an, il fonctionnait bien. Je ne l'ai pas utilisé pendant tout ce temps. Je ne sais pas quoi en faire, je ne sais tout simplement pas quoi en faire. Serait-ce parce que j'ai changé de bâtiment ? J'utilise actuellement la version 1090.


C'est tout à fait possible, il y a eu beaucoup d'innovations. Commencez par vérifier les erreurs de compilation. Avec la directive #PropertyStrict.

 
Vladimir Zubov:

Il se peut qu'il y ait eu beaucoup d'innovations. Commencez par vérifier les erreurs de compilation. Avec la directive #PropertyStrict.

Cette directive n'existe pas.

C'est le cas :

#property strict
 
Vladimir Zubov:

Il se peut qu'il y ait eu beaucoup d'innovations. Commencez par vérifier les erreurs de compilation. Avec la directive #PropertyStrict.


Artyom Trishkin:

Cette directive n'existe pas.

C'est le cas :


Mais je ne peux pas ouvrir le fichier EA qui est sur mon ordinateur avec l'extension ex4, mais il n'y a pas de tel fichier dans MetaEditor. S'il vous plaît, dites-moi quelle est la raison.