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
Déclencheur MTF RWI ?
Comment programmer un déclencheur d'achat pour tout le vert et un déclencheur de vente pour tout le rouge pour ces indicateurs ? Merci de m'aider...
Nick,
EA pour une seule fois par tick
Bonjour à tous,
Je ne sais pas si cela a déjà été posté auparavant (je n'ai pas la patience de chercher dans les fils de discussion, désolé !) mais je sais que cela a été demandé à plusieurs reprises.
Ce code ne sera exécuté qu'une fois par tick. Il s'exécutera dès qu'un nouveau tick est introduit, et seulement à ce moment-là, et ne fonctionnera plus jusqu'à ce qu'un autre se produise.
Gardez à l'esprit que cela peut être un problème, parfois. Si vos ordres ne sont pas exécutés, pour quelque raison que ce soit, il ne sera pas réactivé. Si vous voulez modifier le code pour le faire, allez-y. Je suggérerais quelque chose comme :
if order fails, fileseek to front of f, write Open[2] to f
Cela fera croire au prochain tick que c'est un nouveau.
Existe-t-il des livres, des tutoriels en ligne ou des vidéos sur l'écriture de MQL4 ?
https://www.mql5.com/en/forum/178427
https://www.mql5.com/en/forum/178677
https://www.mql5.com/en/forum
Bonjour à tous,
J'ai besoin d'aide pour coder ceci :
Sur la base d'un graphique journalier :
a) Disons que mes conditions sont remplies à la clôture du jour 1 et supposons que le jour 1 est le 9 juin.
b) Maintenant je veux placer un BUY-Stop et un sell-stop au niveau du High et du Low à la clôture du jour #2 ou le 10 juin.
c) Enfin, je veux que la transaction soit déclenchée le troisième jour.
De plus, si le LONG est déclenché en premier, je veux que le sell-stop soit fermé et vice-versa.
Merci d'avance pour votre aide.
Salutations,
forexcel
EA pour désigner le jour de la semaine ,et l'heure
Ne connaissez-vous pas l'EA qui permet de choisir le jour (par exemple, seulement le mercredi et le jeudi) et de déterminer l'heure d'ouverture et de fermeture ?
Dans de nombreux cas,
Le taux augmente le mercredi et le jeudi, car beaucoup de gens achètent le SWAP.
Je l'achète à ce moment-là et prends une position.
Et le taux baisse dès qu'un SWAP se produit.
Je suis vendu à ce moment et prendre une position.
Je cherche un EA à utiliser pour ce type de transaction.
J'ai besoin d'aide !
Salut les gars,
J'ai besoin d'aide. J'ai créé cet EA
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
#property copyright "FxAttack"
#property link "http://www.ioinvesto.com"
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
extern double Lots = 0.1;
extern int Slippage = 3;
extern bool UseStopLoss = True;
extern int StopLoss = 25;
extern bool UseTakeProfit = True;
extern int TakeProfit = 25;
extern bool UseTrailingStop = False;
extern int TrailingStop = 30;
extern bool Use.Time.Filter = true;
extern string Server.Time.To.Start = "00:00";
extern string Server.Time.To.Stop = "17:00";
extern bool Not.Trade.Fri.Sun = True;
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
if (EachTickMode) Current = 0; else Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;
if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| Variable Begin |
//+------------------------------------------------------------------+
double OpenPrice = iOpen(NULL, PERIOD_D1, Current + 0);
double Buy_Sign = (OpenPrice + (30*Point));
double Sell_Sign = (OpenPrice - (30*Point));
double start_time = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Server.Time.To.Start);
double end_time = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Server.Time.To.Stop);
Comment("Open Price = ",OpenPrice);
//+------------------------------------------------------------------+
//| Variable End |
//+------------------------------------------------------------------+
if(Use.Time.Filter && (TimeCurrent() = end_time)) return(0);
if(Not.Trade.Fri.Sun && (DayOfWeek()==6 || DayOfWeek()==1 )) return(0);
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
if (Bid > Buy_Sign) Order = SIGNAL_BUY;
if (Ask < Sell_Sign) Order = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+
//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "MaxPower Buy Order", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//Sell
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "MaxPower Sell Order", MagicNumber, 0, DeepPink);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("SELL order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Error opening SELL order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
//+------------------------------------------------------------------+[/PHP]
......but I don't understand how to put the code below inner it.
[PHP]...
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() )
return(0);
....Le dernier bloc de code que j'ai écrit est : "Si un ordre sur un SYMBOLE a déjà été ouvert, ne pas ouvrir de nouveaux ordres sur ce SYMBOLE".
Quelqu'un peut-il m'aider à l'intégrer ?
Merci,
Mauro
L'EA ne fait qu'une seule transaction...
Salut les gars, j'ai une petite question à vous poser. J'ai récemment créé un EA. Les paramètres sont corrects et lorsque je l'ai ajouté au graphique, il a placé un achat approprié et plus tard une vente. Mais, la fois suivante où un signal d'achat est apparu, il n'a jamais placé une transaction. Il semble que l'EA ne prenne que la première transaction et aucune par la suite. Avez-vous une idée de la raison de cette situation ? J'apprécierais toute aide. Merci ! !!
C'est peut-être une idée de montrer l'ea ? Pour que nous puissions regarder le code ?