Escapee: Veuillez me conseiller une solution ; J'ai besoin que le script définisse automatiquement le stop loss minimum du serveur sur le symbole actuel lors de l'ouverture d'un ordre. Que faut-il écrire ici ? OrderSend(Symbol(),OP_BUY,0.01,Ask,10,?,0) ;
Lors de la définition d'un ordre en suspens, le prix d'ouverture ne peut pas être trop proche du marché. La distance minimale du prix en suspens par rapport au prix actuel du marché en points peut également être obtenue en utilisant la fonction MarketInfo() avec le paramètre MODE_STOPLEVEL. Si l'ordre en attente s'ouvre à un prix incorrect, l'erreur 130 (ERR_INVALID_STOPS) sera générée.
В документации есть 2 момента касательно индикаторов.
En constantes spéciales, ce sont :
"indicator_buffers nombre de tampons pour calculer l'indicateur, jusqu'à un maximum de 8 "
Sous les indicateurs personnalisés :
"Alloue de la mémoire pour les tampons utilisés pour les calculs d'indicateurs personnalisés. Le nombre de tampons ne peut pas dépasser 8 et être inférieur à la valeur spécifiée dans la propriété indicator_buffers. Si l'indicateur personnalisé nécessite des tampons supplémentaires pour le comptage, vous devez utiliser cette fonction pour spécifier le nombre total de tampons. "
Si le nombre de tampons est spécifié, je pense que cela signifie déjà l'allocation de mémoire pour les tampons. Corrigez-moi si vous voulez dire autre chose, s'il vous plaît.
Bon après-midi. Question sur un pointeur de fichier... Dans le livre MQL4, que vous trouverez à l'adresse MQL4.community, dans la section "Standard Functions", il y a un exemple du script "File Operations", qui est destiné à lire les données d'un fichier et à afficher des objets graphiques dans une fenêtre de symboles :
//--------------------------------------------------------------------// timetablenews.mq4// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------- 1 --int start() // Спец. функция start
{
//--------------------------------------------------------------- 2 --int Handle, // Файловый описатель
Stl; // Стиль вертикальной линииstring File_Name="News.csv", // Имя файла
Obj_Name, // Bмя объекта
Instr, // Название валюты
One,Two, // 1я и 2я чать названия инстр.
Text, // Текст описания события
Str_DtTm; // Дата и время события(строка)datetime Dat_DtTm; // Дата и время события(дата)color Col; // Цвет вертикальной линии//--------------------------------------------------------------- 3 --
Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файлаif(Handle<0) // Неудача при открытии файла
{
if(GetLastError()==4103) // Если файла не существует,..Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера else// При любой другой ошибке..Alert("Ошибка при открытии файла ",File_Name);//..такое сообщPlaySound("Bzrrr.wav"); // Звуковое сопровождениеreturn; // Выход из start()
}
//--------------------------------------------------------------- 4 --while(FileIsEnding(Handle)==false)// До тех пор, пока файловый ..
{ // ..указатель не в конце файла//--------------------------------------------------------- 5 --
Str_DtTm =FileReadString(Handle);// Дата и время события(дата)
Text =FileReadString(Handle);// Текст описания событияif(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
Dat_DtTm =StrToTime(Str_DtTm); // Преобразование типа данных
Instr =StringSubstr(Text,0,3);// Извлекаем первые 3 символа
One=StringSubstr(Symbol(),0,3);// Извлекаем первые 3 символа
Two=StringSubstr(Symbol(),3,3);// Извлекаем вторые 3 символа
Stl=STYLE_DOT; // Для всех - стиль пунктир
Col=DarkOrange; // Для всех - цвет такойif(Instr==One || Instr==Two) // А для событий по нашему ..
{ // .. финансовому инструменту..
Stl=STYLE_SOLID; // .. такой стиль..
Col=Red; // .. и такой цвет верт. линии
}
//--------------------------------------------------------- 7 --
Obj_Name="News_Line "+Str_DtTm; // Имя объектаObjectCreate(Obj_Name,OBJ_VLINE,0,Dat_DtTm,0);//Создаем объект..ObjectSet(Obj_Name,OBJPROP_COLOR, Col); // ..и его цвет,..ObjectSet(Obj_Name,OBJPROP_STYLE, Stl); // ..стиль..ObjectSetText(Obj_Name,Text,10); // ..и описание
}
//--------------------------------------------------------------- 8 --FileClose( Handle ); // Закрываем файлPlaySound("bulk.wav"); // Звуковое сопровождениеWindowRedraw(); // Перерисовываем объектыreturn; // Выход из start()
}
//--------------------------------------------------------------- 9 --
Ci-dessous, lors de l'analyse de ce script dans le livre sur MQL4, la phrase suivante est donnée : "si le contrôle spécifié (les 2 dernières lignes du bloc 5-6) est supprimé, un objet supplémentaire sera créé au moment de l'exécution. Et seulement après cela, la condition de terminaison de la boucle while se déclenchera et le contrôle sera transmis aux blocs 8-9".
Est-ce que je comprends bien ? Un pointeur de fichier n'est PAS INDIQUÉ PAR DES SIGNES DE TEXTE (par exemple : texte| où | est un pointeur de fichier), mais est un pointeur AVEC EXPRESSION, par exemple : texte où k est le caractère "à", le k-ième est mis en évidence par un pointeur de fichier. Cela explique la nécessité des cordes (voir p.164) :
if(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
En effet. À l'avant-dernière itération, après avoir créé le DERNIER objet
2007.05.11 18:30;JPY
le pointeur de fichier est à la position du dernier objet, c'est à dire
2007.05.11 18:30;JPYFabrication industrielle
(où o est le caractère "o", k est l'index du fichier). Ensuite, lors du passage du contrôle à l'en-tête de l'instruction while, la fonction FileIsEnding(handle) renverra évidemment true, car le pointeur de fichier ne se trouve PAS à la fin du fichier, mais au DERNIER caractère de ce fichier. Ensuite, lorsque les deux premières lignes sont exécutées, le pointeur de fichier se déplacera vers un espace vide et s'il n'y a pas de lignes
if(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
le script créera un graphique (c'est-à-dire une ligne) avec une description vide et une coordonnée temporelle qui correspond à 0. C'est ce que signifie la phrase : "si le contrôle spécifié (les 2 dernières lignes du bloc 5-6) est supprimé, un objet supplémentaire sera créé au moment de l'exécution. "
Question: est-ce que je comprends bien :
a ) la définition d'un pointeur de fichier ;
b) la signification de la phrase "Si le contrôle spécifié (les 2 dernières lignes du bloc 5-6) est supprimé, alors un objet supplémentaire sera créé lors de l'exécution du programme.Et seulement après cela, la condition de fin de la boucle while sera déclenchée et le contrôle sera transmis aux blocs 8-9".
P.S. Afin de ne pas encombrer le forum, merci d'avance pour votre réponse.
Dites-moi, je n'ai aucune expérience, si entre deux ticks mon programme envoie plusieurs commandes au serveur, seront-elles toutes exécutées, ou seulement la première commande ? Où puis-je trouver des informations sur ce sujet ?
Dites-moi, je n'ai aucune expérience, si entre deux ticks mon programme envoie plusieurs commandes au serveur, seront-elles toutes exécutées, ou seulement la première commande ? Où puis-je trouver des informations sur ce sujet ?
Bonjour, j'ai une question sur les indicateurs dans MQL4 et je n'arrive pas à la résoudre... Par exemple, j'ai un indicateur fractal simple :
Si je le compile sous cette forme, lorsque j'étend le bord gauche du graphique et de l'historique de chargement, il commence à présenter des problèmes et à afficher des marques là où elles ne devraient pas être (voir la capture d'écran en pièce jointe). Si on commente une partie du code :
Ensuite, ces problèmes disparaissent... Les mêmes problèmes apparaissent lors du chargement de l'historique, si vous ne remplissez que les éléments "non vides" du tableau d'indicateurs et ne réinitialisez pas la valeur de l'indicateur là où il n'y a pas d'étiquettes...
Pourquoi cela se produit-il ? Pourquoi, en effet, est-il nécessaire de recalculer l'ensemble de l'indicateur lors du chargement de l'historique ? Et pourquoi dois-je annuler les valeurs des éléments "vides" du tableau ?
Si les barres étaient indexées de gauche à droite, lors du chargement de l'historique, les index des barres changeaient, et l'indicateur s'affichait incorrectement sans recalcul, alors nous comprendrions ce problème .... Mais dans MT4 les barres sont indexées de droite à gauche, donc, lors du chargement de l'historique, les indices des barres qui étaient indexées auraient dû rester les mêmes (et les valeurs de l'indicateur aussi), alors pourquoi recalculer l'indicateur et d'où viennent ces décalages d'étiquettes ?
Pourquoi est-il nécessaire de recalculer l'ensemble de l'indicateur lors du chargement de l'historique ? Et pourquoi les valeurs des éléments "vides" du tableau devraient-elles être mises à zéro ? Et si vous ne le faites pas, alors les indicateurs s'affichent incorrectement...
Pouvez-vous me dire comment sortir 1 valeur et une valeur d'indicateur déjà redessinée en 2 lignes, qui est redessinée dans un indicateur séparé ? Je n'arrive pas à comprendre, il sort toujours la dernière valeur redessinée.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
J'ai besoin que le script définisse automatiquement le stop loss minimum du serveur sur le symbole actuel lors de l'ouverture d'un ordre. Que faut-il écrire ici ? OrderSend(Symbol(),OP_BUY,0.01,Ask,10,?,0) ;
Lire
В документации есть 2 момента касательно индикаторов.
En constantes spéciales, ce sont :
"indicator_buffers nombre de tampons pour calculer l'indicateur, jusqu'à un maximum de 8 "
Sous les indicateurs personnalisés :
"Alloue de la mémoire pour les tampons utilisés pour les calculs d'indicateurs personnalisés. Le nombre de tampons ne peut pas dépasser 8 et être inférieur à la valeur spécifiée dans la propriété indicator_buffers. Si l'indicateur personnalisé nécessite des tampons supplémentaires pour le comptage, vous devez utiliser cette fonction pour spécifier le nombre total de tampons. "
Si le nombre de tampons est spécifié, je pense que cela signifie déjà l'allocation de mémoire pour les tampons. Corrigez-moi si vous voulez dire autre chose, s'il vous plaît.
Bon après-midi. Question sur un pointeur de fichier... Dans le livre MQL4, que vous trouverez à l'adresse MQL4.community, dans la section "Standard Functions", il y a un exemple du script "File Operations", qui est destiné à lire les données d'un fichier et à afficher des objets graphiques dans une fenêtre de symboles :
Ci-dessous, lors de l'analyse de ce script dans le livre sur MQL4, la phrase suivante est donnée : "si le contrôle spécifié (les 2 dernières lignes du bloc 5-6) est supprimé, un objet supplémentaire sera créé au moment de l'exécution. Et seulement après cela, la condition de terminaison de la boucle while se déclenchera et le contrôle sera transmis aux blocs 8-9".
Est-ce que je comprends bien ? Un pointeur de fichier n'est PAS INDIQUÉ PAR DES SIGNES DE TEXTE (par exemple : texte| où | est un pointeur de fichier), mais est un pointeur AVEC EXPRESSION, par exemple : texte où k est le caractère "à", le k-ième est mis en évidence par un pointeur de fichier. Cela explique la nécessité des cordes (voir p.164) :
En effet. À l'avant-dernière itération, après avoir créé le DERNIER objet
2007.05.11 18:30;JPY
le pointeur de fichier est à la position du dernier objet, c'est à dire
2007.05.11 18:30;JPYFabrication industrielle
(où o est le caractère "o", k est l'index du fichier). Ensuite, lors du passage du contrôle à l'en-tête de l'instruction while, la fonction FileIsEnding(handle) renverra évidemment true, car le pointeur de fichier ne se trouve PAS à la fin du fichier, mais au DERNIER caractère de ce fichier. Ensuite, lorsque les deux premières lignes sont exécutées, le pointeur de fichier se déplacera vers un espace vide et s'il n'y a pas de lignes
le script créera un graphique (c'est-à-dire une ligne) avec une description vide et une coordonnée temporelle qui correspond à 0. C'est ce que signifie la phrase : "si le contrôle spécifié (les 2 dernières lignes du bloc 5-6) est supprimé, un objet supplémentaire sera créé au moment de l'exécution. "
Question: est-ce que je comprends bien :
a ) la définition d'un pointeur de fichier ;
b) la signification de la phrase "Si le contrôle spécifié (les 2 dernières lignes du bloc 5-6) est supprimé, alors un objet supplémentaire sera créé lors de l'exécution du programme.Et seulement après cela, la condition de fin de la boucle while sera déclenchée et le contrôle sera transmis aux blocs 8-9".
P.S. Afin de ne pas encombrer le forum, merci d'avance pour votre réponse.
Dites-moi, je n'ai aucune expérience, si entre deux ticks mon programme envoie plusieurs commandes au serveur, seront-elles toutes exécutées, ou seulement la première commande ? Où puis-je trouver des informations sur ce sujet ?
Dites-moi, je n'ai aucune expérience, si entre deux ticks mon programme envoie plusieurs commandes au serveur, seront-elles toutes exécutées, ou seulement la première commande ? Où puis-je trouver des informations sur ce sujet ?
Lisez :
https://book.mql4.com/ru/basics/common
Lisez :
https://book.mql4.com/ru/basics/common
Bonjour, j'ai une question sur les indicateurs dans MQL4 et je n'arrive pas à la résoudre... Par exemple, j'ai un indicateur fractal simple :
Si je le compile sous cette forme, lorsque j'étend le bord gauche du graphique et de l'historique de chargement, il commence à présenter des problèmes et à afficher des marques là où elles ne devraient pas être (voir la capture d'écran en pièce jointe). Si on commente une partie du code :
Ensuite, ces problèmes disparaissent... Les mêmes problèmes apparaissent lors du chargement de l'historique, si vous ne remplissez que les éléments "non vides" du tableau d'indicateurs et ne réinitialisez pas la valeur de l'indicateur là où il n'y a pas d'étiquettes...
Pourquoi cela se produit-il ? Pourquoi, en effet, est-il nécessaire de recalculer l'ensemble de l'indicateur lors du chargement de l'historique ? Et pourquoi dois-je annuler les valeurs des éléments "vides" du tableau ?
Si les barres étaient indexées de gauche à droite, lors du chargement de l'historique, les index des barres changeaient, et l'indicateur s'affichait incorrectement sans recalcul, alors nous comprendrions ce problème .... Mais dans MT4 les barres sont indexées de droite à gauche, donc, lors du chargement de l'historique, les indices des barres qui étaient indexées auraient dû rester les mêmes (et les valeurs de l'indicateur aussi), alors pourquoi recalculer l'indicateur et d'où viennent ces décalages d'étiquettes ?
Pourquoi est-il nécessaire de recalculer l'ensemble de l'indicateur lors du chargement de l'historique ? Et pourquoi les valeurs des éléments "vides" du tableau devraient-elles être mises à zéro ? Et si vous ne le faites pas, alors les indicateurs s'affichent incorrectement...
IndicatorBuffers indique le nombre total de tampons utilisés.
Exemple.
#property indicator_buffers 2
.......... .................................
IndicatorBuffers 3
Dessine deux lignes, le troisième tampon n'est pas affiché, mais est utilisé pour les calculs intermédiaires.