Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1266
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Je ne me souviens pas, je dois vérifier, mais je ne veux pas. Peut-être que dans mql4 quand on essayait de créer un objet avec le nom d'un objet existant, une erreur était retournée, et dans mql5 pas une erreur, mais la modification des paramètres si les coordonnées sont différentes.
Comme Artem l'a dit - vérifiez l'existence de l'objet.
Oui, c'est vrai.
soudainement (comme d'habitude) ObjectGetInteger(0,objectName,OBJPROP_TYPE) fonctionne plus rapidement.
ObjectFind est une commande synchrone, c'est à dire qu'elle attend la mise à jour complète (et la disponibilité) des objets du graphique...L'utilisation est entachée de délais importants.
Si vous travaillez avec vos propres objets (c'est-à-dire créés dans votre propre stock), vous ne devriez pas utiliser ObjectFind - vous savez déjà dans quelle fenêtre l'objet a été créé et qu'il existe très probablement et qu'il est du bon type.
Le pire qui puisse arriver est que l'utilisateur supprime l'objet ou modifie la propriété.
Merci. C'est intéressant.
Bonne journée à vous tous.
Le livre de Kovalev indique que les index des tableaux peuvent être définis comme des valeurs entières en tant que constantes,variables ou expressions.
Lorsque je place l'index dans mql4 comme une variable, le compilateur me donne une seule erreur
Voici comment je règle l'indice
intW=1000;
double T_P[W]={0} ;
void OnTick()
{
code
}
S'il vous plaît, dites-moi ce que je fais mal.
Merci.
Bonne journée à vous tous.
Le livre de Kovalev indique que les index des tableaux peuvent être définis comme des valeurs entières en tant que constantes,variables ou expressions.
Lorsque je place l'index dans mql4 comme une variable, le compilateur me donne une seule erreur
Voici comment je règle l'indice
intW=1000;
double T_P[W]={0} ;
void OnTick()
{
code
}
S'il vous plaît, dites-moi ce que je fais mal.
Merci.
L'index du tableau n'est pas la taille du tableau.
Je l'ai, merci. Existe-t-il un moyen de définir la taille du tableau à l'aide d'une variable ?
Je l'ai, merci. Existe-t-il un moyen de définir la taille du tableau à l'aide d'une variable ?
Définit une nouvelle taille dans la première dimension du tableau
intArrayResize(
void&array[],// tableau transmis par la référence
intnew_size,// nouvelle taille du tableau
intreserve_size=0// valeur de la taille de réserve (redondante)
)
Définit la nouvelle taille dans la première dimension du tableau
intArrayResize(
void&array[],// tableau transmis par référence
intnew_size,// nouvelle taille du tableau
intreserve_size=0// valeur de reserve_size (redondant)
) ;
Merci pour ces informations précieuses.
Bonjour, veuillez m'aider avec un code simple.
Je m'occupe actuellement des mécanismes d'ouverture/fermeture des ordres et j'ai rencontré un problème avec la fermeture des positions ouvertes.
Le code est simple. L'idée de l'algorithme est de dessiner la MA (moyenne mobile) avec une période de 100 sur le graphique. Si la bougie précédente [1] s'est ouverte au-dessus de la MA, et a clôturé en dessous de la MA, alors la bougie suivante [0] ouvre un ordre de VENTEpour vendre.
//(Les conditions d'achat sont différentes, je ne les décrirai pas)
Pour la clôture de l'ordre, les conditions suivantes doivent être remplies : le prix actuel a dépassé le prix d'ouverture de l'ordre de la valeur fixée de points, par exemple 40.
Exemple : Un lot est ouvert à Bid= 1.20045, il devrait clôturer à Ask= 1.20005.
Le code d'ouverture et de fermeture est regroupé dans deux fonctions correspondantes - CheckForOpen() et CheckForClose() qui, à leur tour, sont appelées par la fonction OnTick(). En fait, le prix peut dépasser une certaine valeur de points (dépasser le niveau de fermeture) mais l'ordre ne sera pas fermé.
Je n'arrive pas à comprendre ce qui ne va pas.
p/s/ Captures d'écran et code joints.
Bonjour, veuillez m'aider avec un code simple.
Je m'occupe actuellement des mécanismes d'ouverture/fermeture des ordres et j'ai rencontré un problème avec la fermeture des positions ouvertes.
Le code est simple. L'idée de l'algorithme est de dessiner la MA (moyenne mobile) avec une période de 100 sur le graphique. Si la bougie précédente [1] s'est ouverte au-dessus de la MA, et a clôturé en dessous de la MA, alors la bougie suivante [0] ouvre un ordre de VENTEpour vendre.
//(Les conditions d'achat sont différentes, je ne les décrirai pas)
Pour la clôture de l'ordre, les conditions suivantes doivent être remplies : le prix actuel a dépassé le prix d'ouverture de l'ordre de la valeur fixée de points, par exemple 40.
Exemple : Un lot est ouvert à Bid= 1.20045, il devrait clôturer à Ask= 1.20005.
Le code d'ouverture et de fermeture est regroupé dans deux fonctions correspondantes - CheckForOpen() et CheckForClose() qui, à leur tour, sont appelées par la fonction OnTick(). En fait, le prix peut dépasser une certaine valeur de points (dépasser le niveau de fermeture) mais l'ordre ne sera pas fermé.
Je n'arrive pas à comprendre ce qui ne va pas.
p/s/ Captures d'écran et code joints.
Le CheckForOpen() ne doit pas être appelé directement dans OnTick, mais dans un OnBar auto-écrit (qui doit être appelé dans OnTick) - à l'ouverture de la barre. Mais c'est une chose triviale
, au lieu de Open[1], Close[1] (la bougie précédente a franchi MA100) nous devrions regarder Open[1],Open[0] (la bougie précédente s'est ouverte d'un côté de MA, la bougie actuelle de l'autre côté). Sinon, un écart peu profond entre les chandeliers sera observé et la logique sera pardonnée.
La SMA de la Médiane change sur la 0ème barre, c'est-à-dire qu'elle n'est pas constante. Il ne peut y être comparé. Corrigez l'algorithme.
Définit la nouvelle taille dans la première dimension du tableau
intArrayResize(
void&array[],// tableau transmis par référence
intnew_size,// nouvelle taille du tableau
intreserve_size=0// valeur de reserve_size (redondant)
) ;
Merci encore pour votre conseil, mais..... dans l'aide il est écrit que cette fonction ne s'applique qu'aux tableaux dynamiques. Et mon code n'est PAS un tableau dynamique, mais un tableau habituel.
Je vous serais très reconnaissant de me dire (ou, mieux, de me montrer) comment modifier la taille d'un tableau régulier dans la première dimension.
Merci encore pour votre aide.