Questions sur le MQL4 - page 8

 
Vous lui avez demandé de détruire toutes les commandes cinq minutes avant la fermeture du bar, donc il va les détruire toutes. Il suffit de régler l'heure correctement. Et utiliser d'autres morceaux de code pour fermer les ordres inutiles. Ou bien, voulez-vous que le programme entier soit écrit pour vous ?

Je m'interrogeais sur la première partie... comment supprimer le deuxième ordre après qu'il se soit déclenché.
Ma suppression intervient avant son déclenchement, mais l'algorithme de suppression est basé sur la vérification des ordres OUVERTS
. Par exemple, deux ordres en attente ont été définis. L'un d'eux est déclenché, c'est-à-dire
OrderType()==OP_SELL ou OrderType()==OP_SELL
La ligne correspondante est imprimée dans le journal
Et dans les résultats du test
delete vient avant buy ou sell
et cela entraîne une confusion dans la numérotation des ordres

. Et j'ai demandé si je pouvais fermer en fin de journée sans utiliser Curtime() car la mise à jour dépend des ticks entrants et s'ils sont absents, l'EA ne fermera pas au moment où j'en ai besoin
Je comprends maintenant que vous ne pouvez pas puisque l'EA ne fonctionne pas sans ticks
 
Accrochez le script et il ne se souciera pas de savoir s'il y a des tics.
 
Vous pouvez supprimer le second comme ceci :
   for(cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ; if(OrderType()<=OP_SELL && // vérification de la position ouverte OrderSymbol()==Symbol()) // vérification du symbole { for(i=0;i<OrdersTotal() ;i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES) ; if(OrderType()>OP_SELL && // vérification de la position ouverte OrderSymbol()==Symbol()) // vérification du symbole { OrderDelete(OrderTicket()) ; } }.


Et le temps... ? Faut-il vraiment être aussi précis ? Réglez-le à moins de 2 minutes, vous n'avez pas l'habitude d'avoir le plein pot au noir à ce moment-là.

 
Pour Roger
Merci maintenant... Avec un peu d'ajustement, cela a fonctionné comme prévu, bien que je ne comprenne toujours pas pourquoi cela n'a pas fonctionné pour moi (tout est transparent au maximum).
A propos du pot au noir... Le fait est que parfois, ce ne sont pas deux mais cinq minutes ou plus (selon la croix)

Pour Rosh
Ne partagez pas le script si vous avez certainement ?
 
int Coord[8] ; Coord[8]=1 ;


Le compilateur ne montre aucune erreur. C'est censé être comme ça ?

 
Oui, c'est comme ça que ça devrait être.
GetLastError générera une erreur lors de son exécution. Le compilateur ne vérifie pas les valeurs des expressions (la constante 8 est un cas particulier d'expression).
 
Slawa,
merci beaucoup, je vais maintenant surveiller plus attentivement la dimensionnalité des tableaux...)

Une autre question simple.
Si la taille du lot dépasse clairement le montant des fonds disponibles, lors de l'ouverture "à la main"...
- la première vérification est-elle effectuée sur le serveur ?
- Si ce n'est pas le cas, pourquoi le panneau d'ouverture de la commande reste-t-il suspendu pendant plusieurs secondes ?
- Si oui, est-ce correct, peut-être ce contrôle devrait-il être fait sur le terminal d'abord ?
 
Pour Roger<br / translate="no"> Merci maintenant... Avec un peu d'ajustement, cela a fonctionné comme prévu, mais je ne comprends toujours pas pourquoi cela n'a pas fonctionné pour moi (tout est transparent à l'extrême).
A propos du pot au noir... Le fait est que parfois, ce ne sont pas deux mais cinq minutes ou plus (selon la croix)

Pour Rosh
Pouvez-vous partager le script, si vous en avez un ?


Je viens de remarquer, ou peut-être ai-je oublié. Quel est le script qui fonctionne indépendamment des tics ?
Si c'est le cas, nous devrions écrire quelque chose comme :

while (true) { startFromExpert() ; Sleep(aussi longtemps que nécessaire) ; }



La fonction startFromExpert() est obtenue par simple rebrassage de la fonction start() de l'EA, on copie le tout et on le colle dans notre script, sans oublier d'utiliser tous les paramètres de l'EA.
C'est l'une des options.

 
Dans MQL 3, il y avait une fonction :
TotalProfit - profit total non réalisé sur toutes les positions ouvertes.
Je ne trouve pas comment l'implémenter dans MQL 4, veuillez m'indiquer comment le faire.
 
Je vais commencer à jurer bientôt aussi. Vous ne voulez pas lire l'aide ?
double AccountProfit( ) <br / translate="no">

Renvoie la valeur du bénéfice pour le compte courant.

Exemple

Print("Profit ", AccountProfit()) ;
Raison: