Bonjour, pourriez-vous m'aider s'il vous plaît - J'ai un problème : le robot entre en position et sur le tick suivant il modifie son stop-loss au niveau le plus bas précédent et j'ai besoin que le stop-loss soit modifié seulement quand la bougie se ferme sur laquelle la position a été ouverte.
void TrailingStop()
{
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true);
{
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if (OrderType()==OP_BUY)
{
double LOW_1 = iLow(NULL,0,1);
bool res=OrderModify(OrderTicket(),OrderOpenPrice(),LOW_1,OrderTakeProfit(),0,White);
if(!res) Print("Ошибка модификации ордера. Код ошибки=",GetLastError());
}
if (OrderType()==OP_SELL)
{
double HIGH_1 = iHigh(NULL,0,1);
res=OrderModify(OrderTicket(),OrderOpenPrice(),HIGH_1,OrderTakeProfit(),0,White);
if(!res) Print("Ошибка модификации ордера. Код ошибки=",GetLastError());
}
}
}
}
return;
}
remjte: Messieurs ! Pouvez-vous m'indiquer le code qui arrêtera de tester un EA lorsqu'il n'y a pas assez de marge pour ouvrir une position ? Merci !
Si AccountFreeMarginCheck() est inférieur à une certaine valeur (par exemple, moins de 50% de AccountFreeMargin) - quitter la fonction de trading, le test se termine rapidement car les boucles vides sont presque impossibles à charger.
evillive: Si AccountFreeMarginCheck() est inférieur à une certaine valeur (par exemple, moins de 50% de AccountFreeMargin) - sortie de la fonction commerciale, le test se termine rapidement, car les boucles vides ne se chargent presque pas.
Honnêtement, encore très vert, a trouvé ce morceau de code pouvez-vous me dire comment corriger
zhezheria: Permettez-moi d'écrire de manière plus simple : comment écrire cette condition - Ne pas modifier un ordre ouvert avant l'apparition d'une nouvelle bougie.
Travaillez à l'ouverture d'une nouvelle barre dans un cadre temporel correspondant. De nombreux exemples de code
Vous n'avez pas besoin de le modifier, il fera l'affaire. A moins que vous ne remplaciez simplement les variables par vos propres noms.
Mais si nous avons besoin de moins de risque, alors si (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= AccountFreeMargin()*0.5) return (-1) ; - dans ce cas, si 50% ou moins d'argent gratuit reste après l'ouverture de la position avec le lot spécifié, alors return (-1)
Pouvez-vous me donner un indice, s'il vous plaît ? J'ai besoin d'écrire une partie de code où la deuxième commande de la liste sera sélectionnée puis supprimée (en attente). Renvoie 4051 lorsque OrderSelect(1, SELECT_BY_POS, MODE_TRADES)
remjte: Messieurs ! Pouvez-vous m'indiquer le code qui arrêtera de tester un EA lorsqu'il n'y a pas assez de marge pour ouvrir une position ? Merci !
// проверяем доступность свободных средствif(AccountFreeMarginCheck(Symbol(),OP_BUY,OpenLot)<=0 || GetLastError()==134)
{
Print("It is impossible to open the order Buy, not enough money.");
return(0);
}
// проверяем доступность свободных средствif(AccountFreeMarginCheck(Symbol(),OP_SELL,OpenLot)<=0 || GetLastError()==134)
{
Print("It is impossible to open the order Sell, not enough money.");
return(0);
}
Pomid: Pouvez-vous me donner un indice, s'il vous plaît ? J'ai besoin d'écrire une partie de code où la deuxième commande de la liste sera sélectionnée puis supprimée (en attente). Renvoie 4051 lorsque OrderSelect(1, SELECT_BY_POS, MODE_TRADES)
Le compte des commandes commence à partir de 0. Essayez, OrderSelect(0, SELECT_BY_POS, MODE_TRADES)
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Bonjour, pourriez-vous m'aider s'il vous plaît - J'ai un problème : le robot entre en position et sur le tick suivant il modifie son stop-loss au niveau le plus bas précédent et j'ai besoin que le stop-loss soit modifié seulement quand la bougie se ferme sur laquelle la position a été ouverte.
ou comment se débarrasser de cette erreur
Messieurs ! Pouvez-vous m'indiquer le code qui arrêtera de tester un EA lorsqu'il n'y a pas assez de marge pour ouvrir une position ?
Merci !
Si AccountFreeMarginCheck() est inférieur à une certaine valeur (par exemple, moins de 50% de AccountFreeMargin) - sortie de la fonction commerciale, le test se termine rapidement, car les boucles vides ne se chargent presque pas.
Honnêtement, encore très vert, a trouvé ce morceau de code pouvez-vous me dire comment corriger
if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= 0.0) return (-1) ;
if(GetLastError() == 134/* NOT_ENOUGH_MONEY */) return (-2) ;
return (l_lots_4) ;
Permettez-moi d'écrire de manière plus simple : comment écrire cette condition - Ne pas modifier un ordre ouvert avant l'apparition d'une nouvelle bougie.
Honnêtement, encore très vert, a trouvé ce morceau de code pouvez-vous me dire comment corriger
if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= 0.0) return (-1) ;
if (GetLastError() == 134/* NOT_ENOUGH_MONEY */) return (-2) ;
return (l_lots_4) ;
Vous n'avez pas besoin de le modifier, il fera l'affaire. A moins que vous ne remplaciez simplement les variables par vos propres noms.
Mais si nous avons besoin de moins de risque, alors si (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= AccountFreeMargin()*0.5) return (-1) ; - dans ce cas, si 50% ou moins d'argent gratuit reste après l'ouverture de la position avec le lot spécifié, alors return (-1)
Messieurs ! Pouvez-vous m'indiquer le code qui arrêtera de tester un EA lorsqu'il n'y a pas assez de marge pour ouvrir une position ?
Merci !
Pouvez-vous me donner un indice, s'il vous plaît ? J'ai besoin d'écrire une partie de code où la deuxième commande de la liste sera sélectionnée puis supprimée (en attente). Renvoie 4051 lorsque OrderSelect(1, SELECT_BY_POS, MODE_TRADES)