![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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 Pro-Coders,
Je me demande si quelqu'un peut m'aider,
J'aimerais que mon EA ouvre une transaction d'achat et ferme une transaction de vente existante lors d'un changement de tendance.
Il le fait, mais seulement lorsqu'il a pris des bénéfices. Lorsque la tendance change alors que la position est toujours
ouverte, il fonctionne en StopLoss. (Voir l'image). Parfois cela fonctionne et parfois non.
Que pourrais-je améliorer ?
if(trendNow>0 && (NLD1>NLD2) && RSIfilter>55)
{
OpenBuy_ =true;
CloseSell_=true;
}
else
if(trendPrev>0 && (NLD1<NLD2) && RSIfilter<45)
{
OpenSell_=true;
CloseBuy_=true;
}
Cette partie du code n'est pas suffisante pour conclure quoi que ce soit
Bonjour Mladen,
Merci beaucoup d'avoir jeté un coup d'oeil à mon problème.
Veuillez trouver le code ci-dessous qui devrait fermer les ordres de vente et d'achat existants.
Il devrait également ouvrir un nouvel ordre d' achat ou de vente si la tendance va dans la bonne direction...
//+------------------------------------------------------------------+
//| Signal Exit Buy / Exit Sell)
//| Iterate through open tickets
//+------------------------------------------------------------------+
for(int i=0; i<Total; i++)
{
dummyResult=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber)
{
for(int z=OrdersTotal()-1; z>=0; z--)
{
if(OrderSelect(z,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 BUY
if(CloseBuy_==true && buy_ticket!=0)
{
dummyResult=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*PipMultiplier,MediumSeaGreen);
if(EachTickMode) TickCheck = True;
if(!EachTickMode) BarCount = Bars;
Print("Error closing Buy #",(string)OrderTicket()," Error code ",(string)GetLastError());
// Open new Sell Order
if(trendPrev>0 && (NLD1<NLD2) && RSIfilter<45) OpenSell_=true;
}
// Close SELL
if(CloseSell_==true && sell_ticket!=0)
{
dummyResult=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage*PipMultiplier,DarkOrange);
if(EachTickMode) TickCheck = True;
if(!EachTickMode) BarCount = Bars;
Print("Error closing Sell #",(string)OrderTicket()," Error code ",(string)GetLastError());
// Open new Buy Order
if(trendNow>0 && (NLD1>NLD2) && RSIfilter>55) OpenBuy_ =true;
}
Bonjour Mladen,
Merci beaucoup d'avoir jeté un coup d'oeil à mon problème.
Veuillez trouver le code ci-dessous qui devrait fermer les ordres de vente et d'achat existants.
Il devrait également ouvrir un nouvel ordre d'achat ou de vente si la tendance pointe vers la bonne direction...
//+------------------------------------------------------------------+
//| Signal Exit Buy / Exit Sell)
//| Iterate through open tickets
//+------------------------------------------------------------------+
for(int i=0; i<Total; i++)
{
dummyResult=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber)
{
for(int z=OrdersTotal()-1; z>=0; z--)
{
if(OrderSelect(z,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 BUY
if(CloseBuy_==true && buy_ticket!=0)
{
dummyResult=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*PipMultiplier,MediumSeaGreen);
if(EachTickMode) TickCheck = True;
if(!EachTickMode) BarCount = Bars;
Print("Error closing Buy #",(string)OrderTicket()," Error code ",(string)GetLastError());
// Open new Sell Order
if(trendPrev>0 && (NLD1<NLD2) && RSIfilter<45) OpenSell_=true;
}
// Close SELL
if(CloseSell_==true && sell_ticket!=0)
{
dummyResult=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage*PipMultiplier,DarkOrange);
if(EachTickMode) TickCheck = True;
if(!EachTickMode) BarCount = Bars;
Print("Error closing Sell #",(string)OrderTicket()," Error code ",(string)GetLastError());
// Open new Buy Order
if(trendNow>0 && (NLD1>NLD2) && RSIfilter>55) OpenBuy_ =true;
}
Pourquoi utilisez-vous une boucle dans la boucle ? Ce n'est pas du tout nécessaire. Débarrassez-vous-en, et lorsque le code sera simplifié, tout sera plus facile à nettoyer également.
Salut Mladen,
J'ai modifié le code en conséquence, pensez-vous que c'est mieux maintenant ?
Pourriez-vous s'il vous plaît jeter un coup d'oeil ? Ce code est toujours dans un état pseudo, pas encore testé.
Merci d'avance !
//+-------------------------------------------------------------------------+
int PositionIndex;//| Signal close Buy / close Sell / Open new BUY or SELL order when possible
int TotalNumberOfOrders;
TotalNumberOfOrders = OrdersTotal();// store number of Orders in the variable
for(PositionIndex = TotalNumberOfOrders - 1; PositionIndex >= 0 ; PositionIndex --)// for loop to loop through all Orders . . COUNT DOWN TO ZERO !
{
if(!OrderSelect(PositionIndex, SELECT_BY_POS, MODE_TRADES)) continue;// if the OrderSelect fails advance the loop to the next PositionIndex
if(OrderMagicNumber() == MagicNumber // does the Order's Magic Number match our EA's magic number ?
&& OrderSymbol() == Symbol() // does the Order's Symbol match the Symbol our EA is working on ?
&& (OrderType() == OP_BUY // is the Order a Buy Order ?
|| OrderType() == OP_SELL )) // or is it a Sell Order ?
if (! OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), Slippage*PipMultiplier,DarkOrange )) //try to close the order
Print("Order Close failed, order number: ", OrderTicket(), " Error: ", GetLastError()); //if the Order Close failed print some helpful information
if(trendNow>0 && (NLD1>NLD2) && RSIfilter>52) // Check if new entry condition is given
{
OpenBuy_=true;
}
else
if(trendPrev>0 && (NLD1<NLD2) && RSIfilter<42)
{
OpenSell_=true;
}
} // end of For loop
Salut Mladen,
J'ai modifié le code en conséquence, pensez-vous que c'est mieux maintenant ?
Pourriez-vous s'il vous plaît jeter un coup d'oeil ? Ce code est toujours dans un état pseudo, pas encore testé.
Merci d'avance !
//+-------------------------------------------------------------------------+
int PositionIndex;//| Signal close Buy / close Sell / Open new BUY or SELL order when possible
int TotalNumberOfOrders;
TotalNumberOfOrders = OrdersTotal();// store number of Orders in the variable
for(PositionIndex = TotalNumberOfOrders - 1; PositionIndex >= 0 ; PositionIndex --)// for loop to loop through all Orders . . COUNT DOWN TO ZERO !
{
if(!OrderSelect(PositionIndex, SELECT_BY_POS, MODE_TRADES)) continue;// if the OrderSelect fails advance the loop to the next PositionIndex
if(OrderMagicNumber() == MagicNumber // does the Order's Magic Number match our EA's magic number ?
&& OrderSymbol() == Symbol() // does the Order's Symbol match the Symbol our EA is working on ?
&& (OrderType() == OP_BUY // is the Order a Buy Order ?
|| OrderType() == OP_SELL )) // or is it a Sell Order ?
if (! OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), Slippage*PipMultiplier,DarkOrange )) //try to close the order
Print("Order Close failed, order number: ", OrderTicket(), " Error: ", GetLastError()); //if the Order Close failed print some helpful information
if(trendNow>0 && (NLD1>NLD2) && RSIfilter>52) // Check if new entry condition is given
{
OpenBuy_=true;
}
else
if(trendPrev>0 && (NLD1<NLD2) && RSIfilter<42)
{
OpenSell_=true;
}
} // end of For loop
Mntiwana
Here is the EA for B& S with 15 warnings left. If some one could tell me how to clear Declaration of global such as “declaration of 'trailingprofit' hides global declaration at line 62 mnt-BuyersSellers EA v1.00.mq4 915 53” I will clear it up.
I also need a few files to run it.
2016.12.17 16:01:35.347 2016.11.01 00:47 cannot open file 'C:\FXPrograms\Tallinex\MQL4\indicators\4BARS-MTF-BBH 1.06.ex4' [2]
2016.12.17 16:01:29.815 2016.11.01 00:17 cannot open file 'C:\FXPrograms\Tallinex\MQL4\indicators\BullBearHelper 1.00.ex4' [2]
2016.12.17 16:01:29.815 2016.11.01 00:17 cannot open file 'C:\FXPrograms\Tallinex\MQL4\indicators\AdaptiveLaguerreFilter.ex4' [2]
And ,"Slope Direction Line"
Let me Know
Ray
traderduke
Merci pour votre intérêt, le paquet indi est joint, en fait le système entier est de FF (http://www.tradingsystemforex.com/ideas-for-expert-advisors/4662-buyers-sellers-ea.html)
gspe travaillait dessus mais je pense que le cadre entier de l'EA est de "funyoo" et je suis seulement intéressé par le code de l'EA comme échantillon/modèle de cadre pour créer un nouvel EA avec, le reste de leur stratégie n'est pas plein de fruits comme par ma supposition, nous pouvons former mieux que cela, nous avons des indicateurs 100 fois meilleurs pour le moment :)
Salutations
"crsnapebtinternetcom" et MLADEN ..... puis j'ai testé et ça a marché mais il faut une certification :)
salutations
traderduke
Merci pour votre intérêt, le paquet indi est joint, en fait le système entier est de FF (http://www.tradingsystemforex.com/ideas-for-expert-advisors/4662-buyers-sellers-ea.html)
gspe travaillait dessus mais je pense que le cadre entier de l'EA est de "funyoo" et je suis seulement intéressé par le code de l'EA comme échantillon/modèle de cadre pour créer un nouvel EA avec, le reste de leur stratégie n'est pas plein de fruits comme par ma supposition, nous pouvons former mieux que cela, nous avons des indicateurs 100 fois meilleurs pour le moment :)
Salutations
Les gars
Les EAs de Funyoos ont généralement montré de bons résultats en utilisant la martingale en back test. Je serais très prudent en les utilisant