Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 71
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
Ok, faisons ça.
{
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
&& (OrderMagicNumber()==Magic) && (OrderType()<2))
orders[count1].Ticket=OrderTicket();
orders[count1].lot=OrderLots();
orders[count1].orderopenprice=OrderOpenPrice();
orders[count1].ordertype=OrderType();
orders[count1].profit=OrderProfit();
orders[count1].stoploss=OrderStopLoss();
count1++;
}
n'est-ce pas ?
Vous avez également besoin de crochets, sinon seule la première ligne aprèsif() fonctionnera. Vous avez de nombreux supports là où vous n'en avez pas besoin, et puis il n'y a pas de supports là où vous en avez besoin. Cela casse la logique du programme, parfois de manière très importante. Et le compteur n'a pas besoin d'être mondial, mais ce n'est pas si important.
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol()
&& OrderMagicNumber()==Magic && OrderType()<2)
{
orders[count1].Ticket=OrderTicket();
orders[count1].lot=OrderLots();
orders[count1].orderopenprice=OrderOpenPrice();
orders[count1].ordertype=OrderType();
orders[count1].profit=OrderProfit();
orders[count1].stoploss=OrderStopLoss();
count1++;
}
}
Aidez-moi à écrire la condition : Si le montant des fonds disponibles sur le compte est inférieur à 50% du dépôt, alors {action} MT5
De quel dépôt ? Initiales ? Ou du solde actuel ?
Si on le compare à l'équilibre, alors oui :
Je croyais qu'il voulait un MT5.
J'ai une bonne idée, je peux la noter, vous pouvez mettre le compteur au début de l'ontik et travailler avec.
Maintenant, comment puis-je en tirer quelque chose dans mon cas ?
et de plus, si le tableau sera bidimensionnel et plus (il y a une différence dans l'écriture et l'extraction)
pouvons-nous parler un peu de ce point ?Ok, faisons ça.
{
int Ticket;
double orderopenprice;
int ordertype;
double profit;
double stoploss;
double lot;
};
myorder orders[];
int i;
int count1=0;
void CalcOrders()
{
for(i=OrdersTotal()-1; i>=0; i--)
{
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
&& (OrderMagicNumber()==Magic) && (OrderType()<2))
orders[count1].Ticket=OrderTicket();
orders[count1].lot=OrderLots();
orders[count1].orderopenprice=OrderOpenPrice();
orders[count1].ordertype=OrderType();
orders[count1].profit=OrderProfit();
orders[count1].stoploss=OrderStopLoss();
count1++;
}
}
n'est-ce pas ?
Non, ce n'est pas bien.
Votre tableau orders[] a une valeur nulle. Où allez-vous écrire les données ? dans un tableau de taille nulle ? Pas du tout. Vous devez incrémenter la taille du tableau par count1+1 - si vous incrémentez le compteur après avoir écrit dans le tableau. En général, le compteur est incrémenté avant l'écriture, puis la taille du tableau est augmentée de la taille du compteur, et enfin les valeurs sont écrites par l'index [count1-1]. Et, comme il a été noté à juste titre ci-dessus - vous devez mettre toutes les autres actions entre crochets après avoir vérifié les conditions.
Pourquoi essayez-vous de faire quelque chose sans connaissances et idées élémentaires ? Juste "pour la chance" ?
Non, ça ne l'est pas.
Votre tableau orders[] a une valeur nulle. Où allez-vous écrire les données ? dans un tableau de taille nulle ? Pas du tout. Vous devez incrémenter la taille du tableau par count1+1 - si vous incrémentez le compteur après avoir écrit dans le tableau. En général, le compteur est incrémenté avant l'écriture, puis la taille du tableau est augmentée de la taille du compteur, et enfin les valeurs sont écrites par l'index [count1-1]. Et, comme il a été noté à juste titre ci-dessus - vous devez mettre toutes les autres actions entre crochets après avoir vérifié les conditions.
Pourquoi essayez-vous de faire quelque chose sans connaissances et idées élémentaires ? Juste "pour la chance" ?
Ne jetons pas des bites et des œufs pourris sur la capacité de quelqu'un à apprendre. Votre proposition pour résoudre mon problème passait par la construction d'un ensemble de structures. J'ai ouvert des manuels et fait des collages comme j'ai pu le comprendre, et j'ai jeté le code ici pour un examen public afin d'évaluer dans quelle mesure tout cela est correct. Vous ne pensez pas que je vais faire une variante idéale tout de suite, n'est-ce pas ?
Devrais-je être découragé d'aider après un fantasme aussi violent. Je vous en conjure une dernière fois : notez l'algorithme sur une feuille de papier et relisez-le plusieurs fois avec un crayon. Notez les valeurs et la taille du tableau - ce qui et où sera écrit à chaque itération de la boucle. Ne cherchez pas des morceaux de code qui vous semblent adaptés.
Artyom, c'est compréhensible, mais je peux aussi être compris dans ce cas. Rien ne fonctionne et cela ne fonctionnera pas dans la version actuelle. J'ai écrit pendant plusieurs pages sur la nécessité de la commande elle-même pour tirer l'élément requis du tableau donné et je n'ai aucune idée de la façon dont elle devrait être écrite pour ce cas particulier, par exemple le stop loss pour le 5e ordre.
Quant au crayon et à la feuille - le bot est prêt depuis un mois déjà et se plombe parfaitement sur n'importe quel instrument, je veux juste le modifier en ajoutant une branche de moyenne irrégulière.
Artyom, c'est compréhensible, mais je peux aussi être compris dans ce cas. Rien ne fonctionne et ne fonctionnera dans la variante actuelle. J'ai écrit pendant plusieurs pages sur la nécessité pour la commande elle-même de tirer l'élément requis de ce tableau et que je n'ai aucune idée de la façon dont elle est écrite pour ce cas particulier, par exemple stoploss pour le 5e ordre.
Je n'ai aucune idée de comment l'écrire pour ce cas particulier, par exemple, le stoploss pour le 5ème ordre.
Cette commande n'existe pas. Vous devez faire le vôtre. C'est-à-dire - une fonction.
OK, alors si je comprends bien, nous obtenons trois fonctions personnalisées différentes avec le retour de la bonne (si nous recherchons trois paramètres différents)
ArraySort
puis
Recherche dans les tableaux par le bon numéro
et ensuite comment je fais face à ça ?
Exactement la transition d'un tableau à un élément de structure