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
Gardez à l'esprit que vous pouvez avoir besoin de stocker continuellement l'écart ainsi ... selon le type d'EA que vous écrivez. autrement inutile
c'est HIGH [0] -- la barre actuelle qui vient de START
pour low, je ne sais pas, peut-être low[1]
Bon ordre pour mettre OrderSend(),OrderModify()
Il y a un jour, j'ai lu un sujet dans le forum sur les fonctions OrderSend() et OrderModify().
et ce sujet m'a donné un indice sur la raison pour laquelle certaines EA fonctionnent et d'autres non, et je me demande comment vérifier si la fonction OrderSend() et OrderModify() est correctement écrite.
Bonjour à tous...
Veuillez me dire comment coder pour obtenir la liste de toutes les paires dans MT4 ?
Merci
Charles
Bonjour,
Je sais que ce n'est pas correct d'écrire Ask[1] mais comment puis-je obtenir le prix de l'Ask à partir du dernier tick ?
Merci !Vous devez sauvegarder les ticks en temps réel, et ensuite y accéder depuis votre EA ou indicateur. Je peux essayer de coder un exemple pour vous si vous êtes toujours intéressé.
Bonjour à tous...
Veuillez me dire comment coder pour obtenir la liste de toutes les paires dans MT4 ?
Merci
CharlesJe pense que c'est plus facile à faire dans Mql5, alors attendez que les choses se mettent en place.
obtenir des valeurs de tendance magique dans une variable...
Bonjour !
je travaille sur un EA et je me demande comment je peux obtenir les valeurs de l'indicateur de tendance magique dans une variable. évidemment il n'y a pas de fonction native pour la tendance magique, comme iMA le fait pour les moyennes mobiles et ainsi.....
Pour l'instant, il semble que je doive le coder à partir de zéro, mais je ne trouve aucune information sur les mathématiques !
Quelqu'un pourrait-il m'aider ?
merci beaucoup !!!
hi !
je travaille sur un EA et je me demande comment je peux obtenir les valeurs de l'indicateur magic trend dans une variable. évidemment il n'y a pas de fonction native pour magic trend, comme iMA le fait pour les moyennes mobiles et ainsi.....
jusqu'à présent, il semble que je doive le coder à partir de zéro. mais je ne trouve aucune information sur les mathématiques !
Quelqu'un pourrait-il m'aider ?
merci beaucoup !!!Cherchez des informations sur l'utilisation de la fonction ICustom dans MQL4. Avec cette fonction, vous pouvez appeler des indicateurs externes dans votre EA.
-guyver
Robot - Automate EA sur 2 moyennes mobiles MA rapide et lente
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
extern int MagicNumber = 0 ;
extern bool SignalMail = False ;
extern bool EachTickMode = True ;
extern double Lots = 0.2 ;
extern int Slippage = 3 ;
extern bool UseStopLoss = True ;
extern int StopLoss = 15 ;
extern bool UseTakeProfit = True ;
extern int TakeProfit = 30 ;
extern bool UseTrailingStop = True ;
extern int TrailingStop = 20 ;
int BarCount ;
int Current ;
bool TickCheck = False ;
//+------------------------------------------------------------------+
//| fonction d'initialisation de l'expert
//+------------------------------------------------------------------+
int init() {
BarCount = Bars ;
if (EachTickMode) Current = 0 ; sinon Current = 1 ;
return(0) ;
}
//+------------------------------------------------------------------+
//| fonction de désinitialisation experte |
//+------------------------------------------------------------------+
int deinit() {
return(0) ;
}
//+------------------------------------------------------------------+
//| fonction de démarrage de l'expert |
//+------------------------------------------------------------------+
int start() {
int Ordre = SIGNAL_NONE ;
int Total, Ticket ;
double StopLossLevel, TakeProfitLevel ;
if (EachTickMode && Bars != BarCount) TickCheck = False ;
Total = OrdersTotal() ;
Ordre = SIGNAL_NONE ;
//+------------------------------------------------------------------+
//| Début de la variable |
//+------------------------------------------------------------------+
double Var1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1) ;
double Var2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1) ;
double Buy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1) ;
double Buy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1) ;
double Sell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1) ;
double Sell1_2 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1) ;
double CloseBuy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1) ;
double CloseBuy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1) ;
double CloseSell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1) ;
double CloseSell1_2 = iMA("GBPUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1) ;
//+------------------------------------------------------------------+
//| Fin de variable |
//+------------------------------------------------------------------+
//Vérifier la 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)) {
//Fermeture
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
if (CloseBuy1_1 > CloseBuy1_2 && False) Order = SIGNAL_CLOSEBUY ;
//+------------------------------------------------------------------+
//| 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 ;
continuer ;
}
//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 ;
continuer ;
}
}
}
} else {
//Fermeture
//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+
if (CloseSell1_1 > CloseSell1_2False) Order = SIGNAL_CLOSESELL ;
//+------------------------------------------------------------------+
//| Fin du signal (sortie de vente) |
//+------------------------------------------------------------------+
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 ;
continuer ;
}
//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 ;
continuer ;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
si (Buy1_1 < Buy1_2 && False) Ordre = SIGNAL_BUY ;
si (Sell1_1 < Sell1_2 && False) Ordre = SIGNAL_SELL ;
//+------------------------------------------------------------------+
//| Fin du signal |
//+------------------------------------------------------------------+
//Acheter
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Contrôle de la marge libre
if (AccountFreeMargin() < (1000 * Lots)) {
Print("Nous n'avons pas d'argent. Marge libre = ", AccountFreeMargin()) ;
return(0) ;
}
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point ; sinon StopLossLevel = 0.0 ;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point ; sinon TakeProfitLevel = 0.0 ;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue) ;
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("Ordre BUY ouvert : ", OrderOpenPrice()) ;
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy") ;
} else {
Print("Erreur lors de l'ouverture de l'ordre BUY : ", GetLastError()) ;
}
}
if (EachTickMode) TickCheck = True ;
if (!EachTickMode) BarCount = Bars ;
return(0) ;
}
}
//Vente
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) | (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Contrôle de la marge libre
if (AccountFreeMargin() < (1000 * Lots)) {
Print("Nous n'avons pas d'argent. Marge libre = ", AccountFreeMargin()) ;
return(0) ;
}
if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point ; sinon StopLossLevel = 0.0 ;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point ; sinon TakeProfitLevel = 0.0 ;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink) ;
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("Ordre SELL ouvert : ", OrderOpenPrice()) ;
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell") ;
} else {
Print("Erreur lors de l'ouverture d'un ordre de vente : ", GetLastError()) ;
}
}
if (EachTickMode) TickCheck = True ;
if (!EachTickMode) BarCount = Bars ;
return(0) ;
}
}
if (!EachTickMode) BarCount = Bars ;
return(0) ;
}
//+------------------------------------------------------------------+
//où se trouve l'erreur, car je ne sais pas, aidez-moi.
Quelle erreur obtenez-vous ?