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
Bonjour à tous ! Pouvez-vous m'indiquer comment définir la suppression d'un ordre dans un EA ?
La situation est la suivante :
Nous plaçons 2ordres en attente dans des directions différentes, dès que l'un d'eux se déclenche, l'autre est supprimé et n'est plus exposé.
Je vous serais très reconnaissant de toute aide.
Merci.
Par exemple :
// удаляет отложенные ордера по type +
//+------------------------------------------------------------------+
void DeleteOrders(int type)
{
int cnt = OrdersTotal();
for (int i=cnt-1; i>=0; i--) {
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
//По желанию
if (OrderSymbol() != Symbol()) continue;
//По желанию
if (OrderMagicNumber() != mn) continue;
if (OrderType() != type) continue;
if (type == OP_BUYSTOP || type == OP_SELLSTOP)
{
bool Del_1 = OrderDelete(OrderTicket());
if(!Del_1)
Print("Ошибка удаления ордера. Код ошибки=",GetLastError());
else
Print("Ордер успешно удален.");
}
if (type == OP_BUYLIMIT || type == OP_SELLLIMIT)
{
bool Del_2 = OrderDelete(OrderTicket());
if(!Del_2)
Print("Ошибка удаления ордера. Код ошибки=",GetLastError());
else
Print("Ордер успешно удален.");
}
}
}
//+------------------------------------------------------------------+
Et avant cela, déterminer qu'il y a une position et qu'il est temps de tuer l'ordre supplémentaire.
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 16.06.2008 |
//| Описание : Удаление ордеров, противоположных позиции |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" - любой символ, |
//| NULL - текущий символ) |
//| op - операция (-1 - любая позиция) |
//| mn - MagicNumber (-1 - любой магик) |
//+----------------------------------------------------------------------------+
void DeleteOppositeOrders(string sy="", int op=-1, int mn=-1) {
bool eb, es;
switch (op) {
case OP_BUY : eb=ExistPositions(sy, OP_BUY , mn); break;
case OP_SELL: es=ExistPositions(sy, OP_SELL, mn); break;
default: eb=ExistPositions(sy, OP_BUY , mn);
es=ExistPositions(sy, OP_SELL, mn); break;
}
if (eb) {
DeleteOrders(sy, OP_SELLLIMIT, mn);
DeleteOrders(sy, OP_SELLSTOP , mn);
}
if (es) {
DeleteOrders(sy, OP_BUYLIMIT, mn);
DeleteOrders(sy, OP_BUYSTOP , mn);
}
}
Pour vous donner un exemple :
// удаляет отложенные стоп ордера SELLSTOP или BUYSTOP по type +
//+------------------------------------------------------------------+
void DeleteOrders(int type)
{
int cnt = OrdersTotal();
for (int i=cnt-1; i>=0; i--) {
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
//По желанию
if (OrderSymbol() != Symbol()) continue;
//По желанию
if (OrderMagicNumber() != mn) continue;
if (OrderType() != type) continue;
if (type == OP_BUYSTOP || type == OP_SELLSTOP)
{
bool Del_1 = OrderDelete(OrderTicket());
if(!Del_1)
Print("Ошибка удаления ордера. Код ошибки=",GetLastError());
else
Print("Ордер успешно удален.");
}
if (type == OP_BUYLIMIT || type == OP_SELLLIMIT)
{
bool Del_2 = OrderDelete(OrderTicket());
if(!Del_2)
Print("Ошибка удаления ордера. Код ошибки=",GetLastError());
else
Print("Ордер успешно удален.");
}
}
}
//+------------------------------------------------------------------+
Quelle est la ségrégation par type ? Que fait-il ? Cela ferait-il une différence si c'était écrit de cette façon ?
{
bool Del_1 = OrderDelete(OrderTicket());
if(!Del_1)
Print("Ошибка удаления ордера. Код ошибки=",GetLastError());
else
Print("Ордер успешно удален.");
}
Pourquoi les barres sont-elles différentes dans mt4 et mt5 sur mon iPhone ? Bien que les heures d'ouverture et de fermeture des bars soient les mêmes. Il vous empêche évidemment de franchir la ligne hier à 14h00 sur MT4.
Pourquoi les barres sont-elles différentes dans mt4 et mt5 sur mon iPhone ? Bien que les heures d'ouverture et de fermeture des bars soient les mêmes. C'est clairement un obstacle, car hier sur mt4 la ligne n'a pas cassé à 14:00.
Pourquoi les barres sont-elles différentes dans mt4 et mt5 sur mon iPhone ? Bien que les heures d'ouverture et de fermeture des bars soient les mêmes. Il y a manifestement une interférence car la ligne n'a pas été cassée hier à 14h00 sur MT4.
- последние четыре строчки в общем понятны, вопрос лишь в функции PlaySound, код которой необходимо вставить после каждой строчки "Print("..." в таком виде:
bool PlaySound(
string payment // nom du fichier
)
; ...
Ou est-il également converti d'une manière ou d'une autre ?
Déclarez
en outre, que va imprimer Print ? Et à quelle condition ?
Quel est le but de cette action ? Jouer un son à la fermeture de l'ordre et écrire le commentaire (sur le TP ou le SL) ?
Salutations. Je me suis renseigné, mais je n'ai pas encore trouvé de réponse. Pouvez-vous me dire pourquoi avec l'entrée suivante
if (x!=maxpr1){x=maxpr1 ; OrderDelete(ticketD);}
if (z!=minpr1){z=minpr1 ; OrderDelete(ticketUP);}
Le système génère constamment des erreurs
: ticket invalide pour la fonction OrderDeletefunction
: Erreur de suppression de commande 4051
Selon le livre de référence, c'est
Valeur invalide du paramètre de fonction
Bien que les paramètres semblent être les mêmes.
Bien que si vous supprimez la condition et laissez seulement
CommandeSuppression(ticketD) ;
CommandeDelete(ticketUP) ;
il supprime avec succès (mais j'en ai besoin par condition). Qu'est-ce que je fais de mal ? Voici le tout :
https://www.mql5.com/ru/forum/160683/page31#comment_3911573
Le conseiller expert lit les valeurs min et max des X dernières barres et place des ordres en fonction de ces valeurs. Ensuite, si le maximum ou le minimum a diminué, nous devons supprimer l'ordre correspondant et l'ouvrir en utilisant les nouvelles données.
Je viens de commencer à l'étudier et le supprimer plutôt que le modifier a été fait pour étudier la fonction et je me suis demandé pourquoi cela ne fonctionnait pas.