Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 70
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
Veuillez me dire pourquoi la fonction OrdersTotal() écrit -1 lors de la recherche des commandes.
Exemple : pour (i=OrdersTotal()-1 ;i>=0 ; i--)
pourquoi pas simplement OrdersTotal() ?
Le nombre d'ordres dans cette fonction commence-t-il à 0 ou à 1 ? En d'autres termes, s'il y a une seule commande, la fonction OrdersTotal() est-elle égale à 0 ou à 1 ?
Veuillez me dire pourquoi la fonction OrdersTotal() écrit -1 lors de la recherche des commandes.
Exemple : pour (i=OrdersTotal()-1 ;i>=0 ; i--)
pourquoi pas simplement OrdersTotal() ?
Le nombre d'ordres dans cette fonction commence-t-il à 0 ou à 1 ? En d'autres termes, s'il y a une seule commande, la fonction OrdersTotal() est-elle égale à 0 ou à 1 ?
Lafonction OrdersTotal() indique la quantité, c'est-à-dire que s'il y a une commande, alorsla fonction OrdersTotal() est égale à 1, mais dans la liste des commandes, le rapport commence par 0.
0 - premier ordre
1 - deuxième ordre
2 - troisième
et ainsi de suite.
Ainsi, si nous commençons la recherche à partir de la fin de la liste, nous devonssoustraire un du nombre total deOrdersTotal().
OrdersTotal() indique la quantité, c'est-à-dire que s'il y a une commande, alorsOrdersTotal() sera égal à un, mais dans la liste des commandes, le rapport commence à zéro.
0 - premier ordre
1 - deuxième ordre
2 - troisième
et ainsi de suite.
Ainsi, si nous commençons la recherche à partir de la fin de la liste, nous devonssoustraire un au nombre total deOrdersTotal().
Mais si la première expression ne soustrait pas un, ce ne sera pas une erreur, si nous avons un ordre, il y aura deux itérations. A moins qu'il n'y ait pas besoin de faire deux itérations quand tout ce dont nous avons besoin peut être fait en une seule, donc -1, non ?
Oui, correct.
Ce n'est pas tout à fait ça.
Vous pouvez utiliser le préfixe de décrémentation.
Puisque nous avons une pile de commandes, pourquoi ne pouvons-nous pas simplement sortir celle dont nous avons besoin ? (Les bons) et en faire ce que l'on veut ? Par exemple, commande (i-4)
Parce que cela ne fonctionnera que dans le testeur MT4. Ou lorsque vous négociez sur un seul symbole et un seul cet EA.
Si vous y réfléchissez, l'EA est le même pour chaque paire, seul le solde du compte est commun (l'échange sera le dernier).
le filtre va à tous les ordres satisfaisant la condition market-open par l'Expert Advisor - si le symbole coïncide.
Qu'est-ce qui ne va pas ?
Si vous y réfléchissez, l'EA est le même pour chaque paire, seul le solde du compte est commun (l'échange sera le dernier).
le filtre s'applique à tous les ordres qui satisfont à la condition d'ouverture du marché par l'EA, si la simulation correspond.
Qu'est-ce qui ne va pas ?
On vous a déjà expliqué plus haut ce qui ne va pas. Les commandes ne comptent que les leurs, et prennent les index du tableau pour le nombre total - vous obtenez un tableau avec des cellules vides. Et c'est pour quoi faire ? Et si le tableau n'était pas vide, les champs "inutiles" contiendront des déchets inutiles qui entraîneront des erreurs, et nous parlons d'argent.
OK, c'est comme ça que ça marche.
{
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 ?