Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 842

 

OrderClose(OrderTicket(),0.01,Bid,2) ;

dans "experts" il est dit "ticket invalide pour la fonction OrderClose".

Aide ? Mon objectif est de clôturer l'ordre sur le graphique actuel.

 
Escapee:

OrderClose(OrderTicket(),0.01,Bid,2) ;

dans "experts" il est dit "ticket invalide pour la fonction OrderClose".

Aide ? Mon objectif est de clôturer un ordre sur le graphique actuel.

if (OrdersTotal()==true)
{
if(OrderSelect(ticket,SELECT_BY_TICKET)>0 && OrderType()==(OP_BUY/OP_SELL здесь поставишь какой ордер) && (здесь можешь написать условия закрытия т.е. сигнал) 
{
bool close = OrderClose(OrderTicket(),OrderLots(),Bid,3,clrRed); 
if(!close)
Print("Ошибка закрытия ордера. Код ошибки=",GetLastError());
else
Print("Ордер BUY успешно закрыт.");
}
}
 
Je dois VRAIMENT fermer la commande, si je peux me permettre ? Pourquoi orderticket ne fonctionne pas dans la ligne du programme que j'ai écrit ?
 
Pokrov:

Bonsoir, aidez-moi à comprendre le code ci-dessous, sell est écrit sur le même principe, pourquoi trois options d'ouverture, car j'ai dû bricoler l'option pour éviter d'ouvrir un ordre ensuite - lorsque l'ordre s'ouvre sur la barre actuelle et se ferme sur un no draw,

et le signal reste et s'ouvre à nouveau, j'ai donc dû l'écrire comme ceci. Le problème est qu'un seul ordre d'achat et de vente est ouvert et que tout le reste est silencieux. Je ne trouve pas d'autres erreurs. Je vous en remercie par avance.

Comment comprenez-vous cette ligne ?

if (!OrdersTotal()==true)

Je ne sais pas comment lire cette ligne et celle-ci.

if (!OrdersHistoryTotal()==true)

et celui-là...

if(OrderSelect(ticket,SELECT_BY_TICKET)>0 // дальше я не смотрел

Bien que cette dernière ligne fonctionnera, mais elle n'est pas si écrite... Je suis sans voix.

Si vous ne trouvez pas l'erreur, alors il n'y a probablement pas d'erreur...

 
Escapee:

OrderClose(OrderTicket(),0.01,Bid,2) ;

dans "experts" il est dit "ticket invalide pour la fonction OrderClose".

Aide ? Mon objectif est de clôturer l'ordre sur le graphique actuel.

Parce qu'avant de travailler avec un ordre, je dois le sélectionner avec la fonction OrderSelect().
 
AlexeyVik:

Comment comprenez-vous cette ligne ?

et celui-ci.

Et celui-là...

Bien que cette dernière ligne fonctionne, mais ce n'est pas la façon d'écrire... Je suis sans voix.

Eh bien, si vous n'avez pas trouvé l'erreur, alors il n'y a probablement pas d'erreur...

1. S'il n'y a pas d'ordres ouverts

2. S'il n'y a pas de commandes fermées.

Qu'est-ce qui ne va pas ?

 
Pokrov:

1. S'il n'y a pas d'ordres ouverts

2. S'il n'y a pas de commandes fermées.

Qu'est-ce qui ne va pas ?

int OrdersTotal(); - renvoie un nombre, pas un vrai-faux, c'est ce qui est faux. S'il n'y a pas d'ordres, cela signifie 0. S'il y a des ordres, ce n'est pas seulement 1.

Et il n'y a pas d'ordres fermés uniquement sur un compte fraîchement ouvert sur lequel nous n'avons pas encore négocié. Là encore, il s'agit d'une utilisation incorrecte de la fonction.

Et pourquoi RefreshRates() ; APRÈS que la commande ait été envoyée au serveur ? C'est comme si on payait d'abord quelque chose et qu'on demandait ensuite "combien ça coûte ?".

 
Pokrov:

if (OrdersTotal()==true)
{
if(OrderSelect(ticket,SELECT_BY_TICKET)>0 && OrderType()==(OP_BUY/OP_SELL здесь поставишь какой ордер) && (здесь можешь написать условия закрытия т.е. сигнал) 
{
bool close = OrderClose(OrderTicket(),OrderLots(),Bid,3,clrRed); 
if(!close)
Print("Ошибка закрытия ордера. Код ошибки=",GetLastError());
else
Print("Ордер BUY успешно закрыт.");
}
}

Quel genre d'absurdités faites-vous ici ?

Si le nombre total d'ordres et de positions est de 1 ou plus...
Si un ordre est sélectionné sur un ticket inconnu et que l'on ne sait pas s'il est fermé ou ouvert...
...etc...

Tu crois que ça a aidé ?

 
evillive:

... Aucun ordre signifie 0, et s'il y a des ordres, ce n'est pas seulement 1.

...

C'est ici que je vais corriger avec la permission, pour ainsi dire.

Dans un bool, s'il y a 0, alors c'est faux, tout ce qui est différent de zéro est vrai.

 
Escapee:

OrderClose(OrderTicket(),0.01,Bid,2) ;

dans "experts" il est dit "ticket invalide pour la fonction OrderClose".

Aide ? Mon objectif est de clôturer l'ordre sur le graphique actuel.

Pour clôturer une position à l'aide d'un ticket, vous devez d'abord connaître le numéro exact du ticket de la position à clôturer. Ensuite, vous devez sélectionner la commande à l'aide de la fonction OrderSelect(ticket,SELECT_BY_TICKET), avec des contrôles pour une sélection réussie. Ensuite, nous devons vérifier l'heure de clôture de l'ordre sélectionné avec succès. Pourquoi ? Parce que lorsque nous sélectionnons par ticket, le paramètre pool de la fonction OrderSelect(..., ..., pool) est ignoré (il n'est utilisé que lorsque nous sélectionnons par index). Et cela signifie que même si nous avons réussi à sélectionner un ordre, nous devons encore savoir dans quelle liste nous l'avons choisi - la liste des positions fermées ou ouvertes. C'est la vérification de l'heure de clôture qui nous permet de savoir "si l'ordre est toujours sur le marché". Si l'heure de clôture est égale à zéro, l'ordre est toujours sur le marché. Si l'heure est différente de zéro, l'ordre a déjà été clôturé plus tôt. Et après toute cette procédure, nous pouvons envoyer un ordre pour clôturer cet ordre.