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
Christoff
De cette façon, la variable Décimales devrait être OK
Dans tous les cas, vérifiez quel code d'erreur vous obtenez en cas d'échec de la clôture (partielle) de l'ordre.Mladen,
Merci pour l'astuce.
Le problème est qu'il n'y a pas de message d'erreur. Lorsque cela ne fonctionne pas, il semble que la fonction PartialTP n'ait même pas été appelée. D'autres fois - généralement aux premiers ordres après le redémarrage de l'EA - elle fonctionne bien.
J'ai pensé que peut-être une des variables ne revient pas à la valeur zéro, ou quelque chose comme ça, mais je n'arrive toujours pas à trouver le bug.
Mladen,
Merci pour l'astuce.
Le problème est qu'il n'y a pas de message d'erreur. Lorsque cela ne fonctionne pas, il semble que la fonction PartialTP n'ait même pas été appelée. D'autres fois - généralement aux premiers ordres après le redémarrage de l'EA - elle fonctionne bien.
J'ai pensé que peut-être une des variables ne revient pas à la valeur zéro, ou quelque chose comme ça, mais je ne trouve toujours pas le bug.chrisstoff
Désolé, mais avec un code partiel, je ne peux pas vous aider davantage.
Ce que vous décrivez signifie qu'il est nécessaire de déboguer le code - et cela ne peut être fait qu'en l'exécutant en utilisant une sorte de points de contrôle.
chrisstoff
Désolé, mais avec un code partiel, je ne peux pas vous aider davantage.
Ce que vous décrivez signifie qu'il est nécessaire de déboguer le code - et cela ne peut être fait qu'en l'exécutant tout en utilisant des points de contrôle.Merci, Mladen.
Il est rassurant que vous n'ayez pas vu de problèmes dans le code.
Je pense que toutes les parties pertinentes du code ont été postées, je dois donc trouver le bug ailleurs.
hock87
Veuillez lire le message qui précède le vôtre pour trouver une solution à ce problème.
Le code complet pour cela est le suivant :
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0);
stop=(Ask-stopsize*Point);
prof=(Ask+profsize*Point);
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
Malden,
Si je veux ouvrir des tailles de lot à un pourcentage du solde de mon compte, comment le coder ?
Exemple :
Le solde de mon compte est de 500 $,
Je veux ouvrir une taille de lot de 5%, puis il compte automatiquement et ouvre les lots de 0,25 $, TP=10 SL=20.
Comment le coder ?
Merci.
Malden,
Si je veux ouvrir des tailles de lot à un pourcentage du solde de mon compte, comment le coder ?
Exemple :
Le solde de mon compte est de 500 $,
Je veux ouvrir une taille de lot de 5%, puis il compte automatiquement et ouvre les lots de 0,25$, TP=10 SL=20.
Comment le coder ?
Merci.Vous pouvez utiliser une fonction comme celle-ci :
{
RefreshRates();
double pPoint = MarketInfo(Symbol(),MODE_POINT);
double step = MarketInfo(Symbol(),MODE_LOTSTEP);
double minLot = MarketInfo(Symbol()l,MODE_MINLOT);
double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);
double lots = minLot;
if (risk>0 && stopLoss>0)
{
lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(s_symbol,MODE_TICKVALUE)/pPoint);
}
}
return(MathMax(MathMin(lots,maxLot),minLot));
}
PS : stopLoss doit être passé à la fonction en pips/points (pas en valeurs entières).
Vous pouvez utiliser une fonction comme celle-ci pour cela :
{
RefreshRates();
double pPoint = MarketInfo(Symbol(),MODE_POINT);
double step = MarketInfo(Symbol(),MODE_LOTSTEP);
double minLot = MarketInfo(Symbol()l,MODE_MINLOT);
double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);
double lots = minLot;
if (risk>0 && stopLoss>0)
{
lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(s_symbol,MODE_TICKVALUE)/pPoint);
}
}
return(MathMax(MathMin(lots,maxLot),minLot));
}
Merci, Mladen.
Mais je ne parviens pas à composer le code de l'ordre d'achat.
Il apparaît beaucoup d'erreurs et d'avertissements.
Comment le composer ?
Merci.
extern double profsize = 10;
int err;
int ticket;
double stop;
double prof;
int start()
{
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen);
stop=(Ask-stopsize*Point);
prof=(Ask+profsize*Point);
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
err=GetLastError();
// Comment("This is a test ", err, " ", stop, " ", prof);
Comment(" ");
}Merci, Mladen.
Mais je ne parviens pas à composer le code de l'ordre d'achat.
Il apparaît beaucoup d'erreurs et d'avertissements.
Comment le composer ?
Merci.
extern double profsize = 10;
int err;
int ticket;
double stop;
double prof;
int start()
{
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen);
stop=(Ask-stopsize*Point);
prof=(Ask+profsize*Point);
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
err=GetLastError();
// Comment("This is a test ", err, " ", stop, " ", prof);
Comment(" ");
}Essayez-le comme ceci (je l'ai testé maintenant et il fonctionne) :
extern double profsize = 10;
int err;
int ticket;
double stop;
double prof;
int init() { return(0); }
int deinit() { return(0); }
int start()
{
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen);
stop=(Ask-stopsize*Point*MathPow(10,Digits%2));
prof=(Ask+profsize*Point*MathPow(10,Digits%2));
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
err=GetLastError();
// Comment("This is a test ", err, " ", stop, " ", prof);
Comment(" ");
}cher mladen et mr. tools svp,
est-il possible de créer une ea qui donne un signal basé sur certaines conditions comme les signaux de 3 ou 4 indicateurs répondant à des conditions prédéfinies.
Par exemple
je veux que l'ea signale un achat en cas de croisement de l'ema 8 et de l'ema 21 :
ema 8 croise ema 21
qqe au-dessus de 0
le ma non lag est vert
et la bougie est au-dessus du nuage ichimoku
l'ea ne doit pas ouvrir de trades mais juste donner le signal lorsque les conditions énoncées sont remplies.
Merci, Mladen.
Je l'ai essayé.
mais il ouvre toujours les lots avec 0,1 $.
Je veuxouvrir des lots à un pourcentage du solde de mon compte.
EX : le solde du compte est de 500 $.
J'ouvre une taille de lot de 5%, puis il compte automatiquement et ouvre les lots de 0,25$, TP=10 SL=20.
LotSizeSlot1 = AccountBalance() * (RiskSlot1 / 100)
LotSizeSlot1 = 500 $*(5%/100)
LotSizeSlot1 = 0,25 $.
Ensuite, il ouvre automatiquement des lots de 0,25 $ et TP=10 SL=20.
Comment le créer ?
Merci.
Merci, Mladen.
Je l'ai essayé.
mais il ouvre toujours les lots avec 0,1 $.
Je veux ouvrir deslots à un pourcentage du solde de mon compte.
EX : le solde du compte est de 500 $.
J'ouvre une taille de lot de 5%, puis il compte automatiquement et ouvre les lots de 0,25$, TP=10 SL=20.
LotSizeSlot1 = AccountBalance() * (RiskSlot1 / 100)
LotSizeSlot1 = 500 $*(5%/100)
LotSizeSlot1 = 0,25 $.
Ensuite, il ouvre automatiquement des lots de 0,25 $ et TP=10 SL=20.
Comment le créer ?
Merci.Comme dans l'exemple ci-joint