Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 71

 
trader781:

Ok, faisons ça.

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 ?

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.

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++;
         }
}
 
sile:
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 :

if(AccountInfoDouble(ACCOUNT_MARGIN_FREE)/AccountInfoDouble(ACCOUNT_BALANCE)<0.5) {действие}
 
Vitalie Postolache:


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 ?
 
trader781:

Ok, faisons ça.

struct myorder
{
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" ?

 
Bonjour. Existe-t-il un code universel qui peut être inséré à la fin de la description de n'importe quel indicateur et qui permettrait de changer le TF de cet indicateur (par exemple de M5 à M1) ?
 
Artyom Trishkin:

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 pisseuses et des œufs pourris sur la capacité de quelqu'un à apprendre de la matière. Votre suggestion pour résoudre mon problème était de construire 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 ?
 
trader781:
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 refuser de vous aider après des fantasmes aussi fous ? 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.
Comprenez que l'enseignement est difficile, surtout quand on ne veut pas vraiment apprendre.
 
Artyom Trishkin:
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.
Comprenez que l'enseignement est difficile, surtout lorsqu'une personne n'a pas vraiment envie d'apprendre.

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.

 
trader781:

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.

Je n'ai pas un tel commandement. Je dois faire le mien. C'est-à-dire - la fonction.
 
Artyom Trishkin:
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
Raison: