Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 240
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
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=========================================
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.
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.
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* ?
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.
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); }
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.
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 :
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 :
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.