// Amount of long / short trades int longs = 0; int shorts = 0; double j;
for(j=OrdersTotal()-1;j>=0; j--) { if(OrderType()==OP_BUY) longs++; // Check # of long trades. if(OrderType()==OP_SELL) shorts++; // Check # of short trades }
// place orders if(longs < MaxLongTrades && NLD1 > NLD2 && RSIfilter>55) Order = SIGNAL_BUY; if(shorts < MaxShortTrades && NLD1 < NLD2 && RSIfilter<45) Order = SIGNAL_SELL;
// Signal Begin(Exit Buy) if (RSIfilter<50) Order=SIGNAL_CLOSEBUY;
// Amount of long / short trades int longs = 0; int shorts = 0; double j;
for(j=OrdersTotal()-1;j>=0; j--) { if(OrderType()==OP_BUY) longs++; // Check # of long trades. if(OrderType()==OP_SELL) shorts++; // Check # of short trades }
// place orders if(longs < MaxLongTrades && NLD1 > NLD2 && RSIfilter>55) Order = SIGNAL_BUY; if(shorts < MaxShortTrades && NLD1 < NLD2 && RSIfilter<45) Order = SIGNAL_SELL;
// Signal Begin(Exit Buy) if (RSIfilter<50) Order=SIGNAL_CLOSEBUY;
Il y a deux problèmes que vous devez résoudre avant de continuer :
Vous devez d'abord sélectionner un ordre - vous n'avez jamais sélectionné l'ordre avant de tenter de le fermer.
Vous ne vérifiez pas quel est le type de l'ordre que vous voulez fermer - vérifiez le type et ensuite, selon le type d'ordre, prenez des mesures supplémentaires - et ajustez le prix de clôture à l'offre ou à la demande, selon le type d'ordre.
deux problèmes que vous devez résoudre avant de poursuivre :
Vous devez d'abord sélectionner un ordre - vous n'avez jamais sélectionné l'ordre avant de tenter de le fermer.
Vous ne vérifiez pas quel est le type de l'ordre que vous voulez fermer - vérifiez le type et ensuite, selon le type d'ordre, prenez des mesures supplémentaires - et ajustez le prix de clôture à l'offre ou à la demande, selon le type d'ordre.
Cher Mladen,
Je vous remercie beaucoup pour vos suggestions utiles.
Si je vous ai bien compris, je dois implémenter quelque chose comme le code suivant
pour sélectionner un "buy_ticket" l'EA doit se fermer. Le code n'a pas encore été testé, et est en quelque sorte un "pseudo état".
double BU1=iMA(Symbol(),0,ShortSma,0,MODE_SMA,PRICE_CLOSE,i+1) ;
double BL1=iMA(Symbol(),0,LongSma,0,MODE_SMA,PRICE_CLOSE,i) ;
string SBUY="false";string SSEL="false" ;
if(BU1<Close[1]&&BL1<Close[1])SBUY="true";if(BL1>Close[1]&&BU1>Close[1])SSEL="true";
Cela fonctionne maintenant, quelque chose n'allait pas avec le Trade après TP.....
Merci pour votre aide Mladen.
bonjour mr mladen
comment traduire ce mot :
http://forexsystemsru.com/1075962-post327.html
Analyse en grappes
regard
Mr mladen :
pourriez-vous en faire une MTF
Bien à vous
Bonjour chers codeurs,
J'ai probablement une question simple, mais je suis bloqué en ce moment sur :
Mon EA ouvre des ordres d' achat et de vente sans problème, mais quand il s'agit de SIGNAL_CLOSEBUY ou SIGNAL_CLOSESELL il ne ferme pas les ordres.
mais quand il s'agit de SIGNAL_CLOSEBUY ou SIGNAL_CLOSESELL il ne ferme pas les ordres.
J'utilise ici un RSI_Filter comme déclencheur pour fermer les ordres d'achat ou de vente.
J'ai copié mon code, je serais très heureux si quelqu'un pouvait y jeter un œil.
Merci d'avance !
#define SIGNAL_NONE 0
// Signal Begin(Exit Buy)#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
extern int MaxShortTrades = 1;
extern int MaxLongTrades = 1;
int Order = SIGNAL_NONE;
// RSI Filter
double RSIfilter=iRSI(Symbol(),0,RSIPeriod,PRICE_CLOSE,BarShift);
// Trade Signal Indicator
double NLD1,NLD2;
NLD1 = iCustom(NULL,0,"indicator",0,Length,0,0,1,0,0,0,1);
NLD2 = iCustom(NULL,0,"indicator",0,Length,0,0,1,0,0,0,2);
// Amount of long / short trades
int longs = 0;
int shorts = 0;
double j;
for(j=OrdersTotal()-1;j>=0; j--)
{
if(OrderType()==OP_BUY) longs++; // Check # of long trades.
if(OrderType()==OP_SELL) shorts++; // Check # of short trades
}
// place orders
if(longs < MaxLongTrades && NLD1 > NLD2 && RSIfilter>55) Order = SIGNAL_BUY;
if(shorts < MaxShortTrades && NLD1 < NLD2 && RSIfilter<45) Order = SIGNAL_SELL;
if (RSIfilter<50) Order=SIGNAL_CLOSEBUY;
if(Order==SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars!=BarCount))))
{
dummyResult=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*PipMultiplier,MediumSeaGreen);
if(EachTickMode) TickCheck = True;
if(!EachTickMode) BarCount = Bars;
return(0);
}
// Signal Begin(Exit Sell)
if (RSIfilter>50) Order=SIGNAL_CLOSESELL;
if(Order==SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars!=BarCount))))
{
dummyResult=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage*PipMultiplier,DarkOrange);
if(EachTickMode) TickCheck = True;
if(!EachTickMode) BarCount = Bars;
return(0);
}
Bonjour chers codeurs,
J'ai probablement une question simple, mais je suis bloqué en ce moment sur :
Mon EA ouvre des ordres d'achat et de vente sans problème, mais quand il s'agit de SIGNAL_CLOSEBUY ou SIGNAL_CLOSESELL il ne ferme pas les ordres.
mais quand il s'agit de SIGNAL_CLOSEBUY ou SIGNAL_CLOSESELL il ne ferme pas les ordres.
J'utilise ici un RSI_Filter comme déclencheur pour fermer les ordres d'achat ou de vente.
J'ai copié mon code, je serais très heureux si quelqu'un pouvait y jeter un œil.
Merci d'avance !
#define SIGNAL_NONE 0
// Signal Begin(Exit Buy)#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
extern int MaxShortTrades = 1;
extern int MaxLongTrades = 1;
int Order = SIGNAL_NONE;
// RSI Filter
double RSIfilter=iRSI(Symbol(),0,RSIPeriod,PRICE_CLOSE,BarShift);
// Trade Signal Indicator
double NLD1,NLD2;
NLD1 = iCustom(NULL,0,"indicator",0,Length,0,0,1,0,0,0,1);
NLD2 = iCustom(NULL,0,"indicator",0,Length,0,0,1,0,0,0,2);
// Amount of long / short trades
int longs = 0;
int shorts = 0;
double j;
for(j=OrdersTotal()-1;j>=0; j--)
{
if(OrderType()==OP_BUY) longs++; // Check # of long trades.
if(OrderType()==OP_SELL) shorts++; // Check # of short trades
}
// place orders
if(longs < MaxLongTrades && NLD1 > NLD2 && RSIfilter>55) Order = SIGNAL_BUY;
if(shorts < MaxShortTrades && NLD1 < NLD2 && RSIfilter<45) Order = SIGNAL_SELL;
if (RSIfilter<50) Order=SIGNAL_CLOSEBUY;
if(Order==SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars!=BarCount))))
{
dummyResult=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*PipMultiplier,MediumSeaGreen);
if(EachTickMode) TickCheck = True;
if(!EachTickMode) BarCount = Bars;
return(0);
}
// Signal Begin(Exit Sell)
if (RSIfilter>50) Order=SIGNAL_CLOSESELL;
if(Order==SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars!=BarCount))))
{
dummyResult=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage*PipMultiplier,DarkOrange);
if(EachTickMode) TickCheck = True;
if(!EachTickMode) BarCount = Bars;
return(0);
}
Il y a deux problèmes que vous devez résoudre avant de continuer :
deux problèmes que vous devez résoudre avant de poursuivre :
Cher Mladen,
Je vous remercie beaucoup pour vos suggestions utiles.
Si je vous ai bien compris, je dois implémenter quelque chose comme le code suivant
pour sélectionner un "buy_ticket" l'EA doit se fermer. Le code n'a pas encore été testé, et est en quelque sorte un "pseudo état".
int buy_ticket=0;
int sell_ticket=0;
int ticket;
// Iterate through tickets
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
{
if(OrderType()== OP_BUY)
buy_ticket=OrderTicket();
else
if(OrderType() == OP_SELL)
sell_ticket=OrderTicket();
}
}
// Close Ticket with trigger
if (RSIfilter<50) Order=SIGNAL_CLOSEBUY;
if (RSIfilter>50) Order=SIGNAL_CLOSESELL;
if(Order==CLOSE_BUY && buy_ticket!=0)
{
if(OrderSelect(buy_ticket,SELECT_BY_TICKET))
{
if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,clrDodgerBlue))
Print("Error closing Buy #",(string)OrderTicket()," Error code ",(string)GetLastError());
}
}
else
if(Order==CLOSE_SELL && sell_ticket!=0)
{
if(OrderSelect(sell_ticket,SELECT_BY_TICKET))
{
if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,clrDodgerBlue))
Print("Error closing Sell #",(string)OrderTicket()," Error code ",(string)GetLastError());
}
}
Cher Mladen,
Je vous remercie beaucoup pour vos suggestions utiles.
Si je vous ai bien compris, je dois implémenter quelque chose comme le code suivant
pour sélectionner un "buy_ticket" l'EA doit se fermer. Le code n'a pas encore été testé, et est en quelque sorte un "pseudo-état".
int buy_ticket=0;
int sell_ticket=0;
int ticket;
// Iterate through tickets
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
{
if(OrderType()== OP_BUY)
buy_ticket=OrderTicket();
else
if(OrderType() == OP_SELL)
sell_ticket=OrderTicket();
}
}
// Close Ticket with trigger
if (RSIfilter<50) Order=SIGNAL_CLOSEBUY;
if (RSIfilter>50) Order=SIGNAL_CLOSESELL;
if(Order==CLOSE_BUY && buy_ticket!=0)
{
if(OrderSelect(buy_ticket,SELECT_BY_TICKET))
{
if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,clrDodgerBlue))
Print("Error closing Buy #",(string)OrderTicket()," Error code ",(string)GetLastError());
}
}
else
if(Order==CLOSE_SELL && sell_ticket!=0)
{
if(OrderSelect(sell_ticket,SELECT_BY_TICKET))
{
if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,clrDodgerBlue))
Print("Error closing Sell #",(string)OrderTicket()," Error code ",(string)GetLastError());
}
}
Avez-vous un seul ordre (même magie, même symbole) ouvert en même temps ?
Si oui, alors il fonctionnera.
Chers amis,
L'ea ci-joint ouvre constamment des ordres à lot fixe(il ouvre tous les ordres à 0.10).
Je ne change pas ou ne contrôle pas la valeur du lot des ordres ouverts !
Les valeurs "Lots" et "MaximumRisk" sont disponibles dans les paramètres, mais elles ne sont pas effectives sur les valeurs de lot des ordres !
Pouvez-vous m'aider s'il vous plaît ?
bonjour mr mladen
Pourriez-vous créer une sous-fenêtre vide semblable à cette image ?
regard
Bonjour Mladen, j'ai téléchargé votre
stepma_pdf_4_4.ex4 ainsi que l'histogramme,
Je les ai copiés dans MT4. Je les glisse sur la fenêtre du graphique
J'obtiens le message suivant, voir dans l'image :
Pouvez-vous me dire comment je peux utiliser votre indicateur ?
Lea
ps. la même chose est arrivée avec : moyennes_-_mtf__alerts_7_4.ex4 et histogramme