Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 569
![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
Et voici la solution proposée :
Bonjour, j'ai une petite question en étudiant MQL4. Le problème se trouve dans le tutoriel de ce site. Voici la condition : Problème 25. Créez un programme dans lequel les conditions suivantes sont réalisées : si le taux dépasse le niveau spécifié, il produira un message, dans lequel des mots indiqueront que le taux dépasse le niveau (jusqu'à 100 points) ; dans les autres cas, le message informera que le taux ne dépasse pas le niveau spécifié.
Et voici la solution proposée :
Montre les solutions possibles. Utile pour la formation.
Il existe d'autres options. Il y a d'autres erreurs.
Faites-vous davantage confiance. Expérimentation.
Bonjour ! En étudiant MQL4, j'ai une petite question. La tâche se trouve dans le tutoriel sur ce site. Voici la condition : Problème 25. Créez un programme qui réalise les conditions suivantes : si le taux dépasse le niveau spécifié, il émet un message disant que le taux dépasse le niveau (jusqu'à 100 points) ; dans les autres cas, le message disant que le taux ne dépasse pas le niveau spécifié.
Et voici la solution proposée :
P.S.
Plus précisément, l'utilité de cet exemple pour traiter un tableau,
la représentation possible des données en mots,
l'utilisation de la fonction NormalizeDouble et de la variable Point prédéfinie.
Possibilité de choisir un passe-temps plus facile.
Apparemment, il n'y a aucun moyen de déclarer des variables externes directement dans la classe. Alors quelles sont les options ? Si je ne veux pas déclarer dans l'Expert Advisor lui-même ou ailleurs ces variables externes spécifiques, qui ne sont nécessaires que lors de l'utilisation de cette classe. Je pense que la seule option est de faire un inluder, qui déclarera ces variables externes. Et puis la classe devrait être incluse dedans, non ?
Ensuite, afin d'appeler la classe, vous devez inclure la classe elle-même. C'est vrai ? Ou bien il peut y avoir d'autres variantes ?
Ça ne me semble pas bon. Beaucoup de fichiers d'inclusion imbriqués à créer... C'est pourquoi j'ai une telle question.
Ou est-il encore possible, comme dans une bibliothèque habituelle, de déclarer des variables externes et d'importer les bibliothèques nécessaires avant de déclarer la classe ? Je veux dire quelque chose comme ça :
Je n'ai jamais vu ça avant. Alors je me demande si je vais dans la bonne direction...Les sortir en tant que variables globales sur l'écran du terminal par le biais de Commentaire. Il n'y avait pas de zéros, seulement des nombres négatifs. Puis j'ai changé
Lors du transfert du code de l'indicateur vers le conseiller expert, une erreur se produit. Division par zéro dans la partie code
...
Les sortir en tant que variables globales sur l'écran du terminal via Commentaire. Il n'y avait pas de zéros, seulement des nombres négatifs. Puis j'ai changé
...
à .
...
tout est tombé en place, remettez-le en place. Pas d'erreur du tout ! Quelle en était la cause ? J'ai éteint internet à nouveau.J'ai également obtenu l'erreur "zero divide" où le zéro ne pouvait pas être passé dans le dénominateur de la fraction. Maintenant, avant de diviser, je fais une vérification formelle comme :
Et l'erreur a disparu. C'est-à-dire qu'il faut indiquer au compilateur ce qu'il doit faire si le dénominateur=0, même si le programmeur est sûr à 100% qu'il n'y a pas de 0.
Bonjour, pouvez-vous m'aider avec le code ? J'ai besoin que l'EA fasse la chose élémentaire - ouvrir des positions lorsqu'il s'approche de la ligne verticale (c'est-à-dire strictement le temps, pas le prix), à savoir pour un intervalle shi spécifié, que j'ai ici 120 c'est-à-dire comme je comprends - 2 minutes. La couleur de la ligne doit déterminer s'il s'agit d'un achat ou d'une vente. J'ai cherché sur Internet et l'ai réécrit, et j'ai obtenu ce qui suit :
void OnTick()
{
int AllObject = ObjectsTotal();
for ( int i = 0; i < AllObject; i++)
{
string NameObj = ObjectName(i);
Colorrr = ObjectGet(NameObj, OBJPROP_COLOR);
Vremyaaa = (ObjectGet(NameObj, OBJPROP_TIME) - shi);
if(Vremyaaa == TimeLocal())
break;
}
int kolpos = 0;
if((Colorrr == Green)||(Colorrr == Aqua)){operacia = "OP_BUY";}
if((Colorrr == Red)||(Colorrr == Purple)){operacia = "OP_SELL";}
for (int pos = 0; pos < OrdersTotal(); pos++)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) == true)
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
kolpos++;
}
}
}
if(kolpos == 0)
{
if (iTime(NULL,0,1) == Vremyaaa)
{
int ticket = OrderSend(Symbol(), operacia, Lot, Bid, 10, 0, 0, "5", Magic, 0, col);
}
}
}
Bonjour, pouvez-vous m'aider avec le code ? J'ai besoin que l'EA fasse la chose élémentaire - ouvrir des positions lorsqu'il s'approche de la ligne verticale (c'est-à-dire strictement le temps, pas le prix), à savoir pour un intervalle shi spécifié, que j'ai ici 120 c'est-à-dire comme je comprends - 2 minutes. La couleur de la ligne doit déterminer s'il s'agit d'un achat ou d'une vente. J'ai cherché sur Internet et je l'ai réécrit :
void OnTick()
{
int AllObject = ObjectsTotal();
for ( int i = 0; i < AllObject; i++)
{
string NameObj = ObjectName(i);
Colorrr = ObjectGet(NameObj, OBJPROP_COLOR);
Vremyaaa = (ObjectGet(NameObj, OBJPROP_TIME) - shi);
if(Vremyaaa == TimeLocal())
break;
}
int kolpos = 0;
if((Colorrr == Green)||(Colorrr == Aqua)){operacia = "OP_BUY";}
if((Colorrr == Red)||(Colorrr == Purple)){operacia = "OP_SELL";}
for (int pos = 0; pos < OrdersTotal(); pos++)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) == true)
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
kolpos++;
}
}
}
if(kolpos == 0)
{
if (iTime(NULL,0,1) == Vremyaaa)
{
int ticket = OrderSend(Symbol(), operacia, Lot, Bid, 10, 0, 0, "5", Magic, 0, col);
}
}
}
Si votre heure coïncide avec l'heure du terminal, vous pouvez utiliser TimeLocal(), mais TimeCurrent() est plus fiable .
Changer le type de variable operacia en int et supprimer les guillemets OP_BUY et OP_SELL
Si vous avez la même heure que celle du terminal, vous pouvez utiliser TimeLocal(), mais TimeCurrent() est plus fiable .
Changer le type de variable operacia en int et supprimer les guillemets OP_BUY et OP_SELL
Merci. A propos de TimeCurrent c'est vrai, mon heure ne correspond pas à l'heure du serveur. Je l'ai réparé, mais ça ne marche toujours pas... N'écrit pas d'erreurs dans le journal.
P.S. Dans mon message précédent, du code sans espace a été inséré. Mais je pense avoir mis toutes les accolades correctement.
MT4 - 625, message du testeur lorsqu'il essaie de tester les hiboux avec la bibliothèque :
2014.03.29 18:38:48.753 'C:\Program Files\Admiral1\MQL4\Libraries\ingLib094.mq4' n'est pas une version 32 bits.
Avant, cette chouette a compilé sans problème, et la bibliothèque n'a pas eu un seul mot non plus. En fait, je ne le comprends pas du tout.
Mon système (je veux dire Windows) est en 32 bits, je n'en ai jamais eu d'autre. Septièmement.
La bibliothèque est mon lieu d'origine, j'y vais à fond. Fonctionne bien en temps réel sur une nouvelle construction. Y compris avec d'autres hiboux. Et dans le testeur dans les versions antérieures sans problèmes.
Mais il ne veut pas s'ouvrir dans le testeur, et la raison est même aspirée de vos doigts.
Et il n'y a pas un mot sur les cas 32 bits dans tous les manuels.