
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
Au moins dans les paramètres de méthode, cela est justifié - le code peut devenir plus lisible et compact, vous obtenez un paramètre nommé.
ChartObject *hline=HLine::New(1.255).Color(clrGreen).Width(2).Selectable(true); // не надо помнить очерёдность параметров и можно писать в одну строку - цепочкой
// получается вот из подобного :
class HLine:public ChartObject {
public:
HLine(double price);
HLine *New(double _price) { return new HLine(_price); } // это чтобы не городить (new HLine(...)).Method1
HLine *Color(color _clr) { fgColor=_clr; return GetPointer(this); } // а это чтобы получались цепочки obj.Method1(..).Method2(..)
};
et interfère un peu avec la qualification des fonctions par le type retourné.
N'hésitez pas à renvoyer GetPointer(this) à partir des méthodes.
De cette façon, &ceci est plus concis.
Eh bien, laissez-moi commencer.
Pour clôturer un ordre, il n'est pas nécessaire de définir le type d'ordre et le prix qui correspond à ce type. Il suffit d'écrire "close at price" dans OrderClosePrice() !
void OnStart()
{
int i, total = OrdersTotal()-1;
for(i = total; i >= 0; i--)
{
if(OrderType() < OP_SELLSTOP)
{
if(!OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100))
printf("***********");
}
}
}/********************************************************************/
Plutôt cool ! ) Merci.
À en juger par l'exemple, vous n'avez pas non plus besoin de OrderSelect() ?
(Cool ! ) Merci.
À en juger par l'exemple, OrderSelect() n'est pas non plus nécessaire ?
Joli ! ) Merci.
Nécessaire. Je l'ai juste manqué par paresse...
Ouais, eh bien... C'est vraiment le bordel.
Mais avant, je n'ai pas rencontré ces sujets.
Vous pouvez donc utiliser OrderClosePrice uniquement APRÈS le OrderSelect correspondant. Puisque OrderSelect copie les données pour les fonctions Order(const) une fois, et que le même RefreshRates n'est pas capable de les mettre à jour.
C'est-à-dire que si, par exemple, l'OrderClosePrice ne parvient pas à clôturer, alors l'OrderSelect doit être refait avant la prochaine tentative (RefreshRates n'est pas nécessaire).
ZS Ce fil de discussion date de 2005! Les arguments détaillés des développeurs se trouvent ici.
Les ordres ouverts doivent être analysés à partir d'un nombre plus élevé, c'est-à-dire for(int nom=OrdersTotal()-1 ; nom>=0 ; nom--)
Il y a 20 commandes en cours
Ceci est particulièrement important lors de la suppression de commandes.
Mais que se passera-t-il si nous faisons le contraire for(int nom=0 ; nom<OrdersTotal() ; nom++) ?
Au départ, l'indice est égal à zéro et le tout premier ordre portant le numéro 0 est supprimé.
L'indice devient alors égal à 1. À ce stade, les ordres restants sont déplacés et celui qui porte le numéro 1
occupe la position zéro. L'ancien numéro 2 prend la position 1. Il sera supprimé.
L'indice devient alors 2. Et l'ordre qui était le numéro 4 au début sera supprimé.
Ainsi, les ordres qui occupent des positions paires au début sont supprimés. Les numéros impairs resteront. On peut le constater dans les commentaires des ordres et des numéros.
Je joins un script montrant les deux options de suppression et de captures d'écran.