Quelqu'un peut-il m'aider avec cet EA ?

 
//+------------------------------------------------------------------+
//| |
//| In no event will author be liable for any damages whatsoever. |
//| Use at your own risk. |
//| |
//+------------------- DO NOT REMOVE THIS HEADER --------------------+

#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4

#property link "http://eatbuilder.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 = 15;
extern bool UseTakeProfit = True;
extern int TakeProfit = 10;
extern bool UseTrailingStop = False;
extern int TrailingStop = 30;
extern string Comments = "HLC_v2";

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 Var1 = iHigh(NULL, PERIOD_H1, Current + 1);
double Var2 = iLow(NULL, PERIOD_H1, Current + 1);
double Var3 = iClose(NULL, PERIOD_M15, Current + 0);
double Var4 = iOpen(NULL, PERIOD_M15, Current + 0);
double Var5 = iClose(NULL, PERIOD_M15, Current + 0);

double Buy1_1 = iHigh(NULL, PERIOD_H1, Current + 1); //(Buy1_1 < Buy1_2 && Buy2_1 < Buy2_2) Order = SIGNAL_BUY;
double Buy1_2 = iClose(NULL, PERIOD_M15, Current + 0);
double Buy2_1 = iOpen(NULL, PERIOD_M15, Current + 0);
double Buy2_2 = iClose(NULL, PERIOD_M15, Current + 0);

double Sell1_1 = iLow(NULL, PERIOD_H1, Current + 1);
double Sell1_2 = iClose(NULL, PERIOD_M15, Current + 0);
double Sell2_1 = iOpen(NULL, PERIOD_M15, Current + 0);
double Sell2_2 = iClose(NULL, PERIOD_M15, Current + 0);




//+------------------------------------------------------------------+
//| Variable End |
//+------------------------------------------------------------------+

//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 (Buy1_1 < Buy1_2 && Buy2_1 < Buy2_2) Order = SIGNAL_BUY;

if (Sell1_1 > Sell1_2 && Sell2_1 > Sell2_2) Order = SIGNAL_SELL;


//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+

//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (100 * 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, "Buy(#" + MagicNumber + ")", 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() < (100 * 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, "Sell(#" + MagicNumber + ")", 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);
}
//+------------------------------------------------------------------+
 

J'ai essayé de le mettre en ligne mais il ne s'échange pas...

Quelqu'un peut-il le réparer ?

J'ai essayé en utilisant le testeur de stratégie et cela fonctionne.

Merci d'avance :)

 

NOUS DÉTESTONS EA BUILDER

 
dabbler:

NOUS DÉTESTONS EA BUILDER



? ??
 

EA builder crée du mauvais code que la personne qui utilise EA builder ne peut pas comprendre et ne peut donc pas réparer. De plus, il y a beaucoup de code et il est difficile d'apprendre à partir de beaucoup de mauvais code.

Essayez de rechercher dans le forum les fils de discussion récents contenant "EA builder".

 
17021978:

J'ai essayé de le mettre en ligne mais il ne s'échange pas...

Quelqu'un peut-il le réparer ?

j'ai essayé en utilisant le testeur de stratégie et ça marche

Merci d'avance :)


Si cela ne fonctionne pas, vous devez regarder dans le journal des terminaux/experts et lire les lignes à l'intérieur.

Si vous n'avez toujours pas d'idée, vous devez mettre dans votre EA des lignes de commentaire ou d'impression pour voir ce qui se passe lorsque votre EA est attaché au graphique.

et si cela ne vous aide pas alors il se peut que vous n'ayez pas autorisé l'EA à trader....

Alors qu'est-ce qui doit être corrigé ?

Au fait, vous devez utiliser le bouton SRC pour placer les lignes de programmation dans votre message.

et comme dabbler

dites je déteste EA Builder vous n'avez pas appris les bases de la programmation vous devez avoir.... Prenez le temps d'étudier les bases

 
ok merci dabbler et deVries !
 

  1. Comme il n'y a pas d'esclaves ici, il n'y a que deux choix : apprendre à coder ou payer quelqu'un. Nous n'allons pas le coder POUR vous. Nous sommes prêts à vous AIDER. Nous n'allons pas déboguer 230 lignes de code.
  2. EA builder fait un mauvais code en comptant lors de la fermeture de plusieurs ordres.
  3. EA builder makes bad code Bars is unreliable (max bars on chart) volume is unreliable (miss ticks) Always use time
  4. EA builder makes bad code Pas d'ajustement pour les courtiers 4/5 chiffres
  5. EA builder fait un mauvais code ne s'ajustant pas pour les brokers ECN.
  6. "J'ai essayé de le mettre en ligne mais il ne fonctionne pas..." Que dit le fichier journal ?
 
WHRoeder:

  1. Comme il n'y a pas d'esclaves ici, il n'y a que deux choix : apprendre à coder ou payer quelqu'un. Nous n'allons pas le coder POUR vous. Nous sommes prêts à vous AIDER. Nous n'allons pas déboguer 230 lignes de code.
  2. EA builder fait un mauvais code en comptant lors de la fermeture de plusieurs ordres.
  3. EA builder makes bad code Bars is unreliable (max bars on chart) volume is unreliable (miss ticks) Always use time
  4. EA builder makes bad code Pas d'ajustement pour les courtiers 4/5 chiffres
  5. EA builder makes bad code not adjusting for ECN brokers.
  6. "J'ai essayé de le mettre en ligne mais il ne fonctionne pas..." Que dit le fichier journal ?


Le fichier journal ne montre rien... rien sur le journal.

Habituellement, nous pouvons voir l'erreur à partir du journal, mais cette fois-ci, il n'y en a pas...

Merci de votre réponse WHRoeder

 
WHRoeder:

  1. Le constructeur de l'EA fait du mauvais code Les barres ne sont pas fiables (barres max sur le graphique) Le volume n'est pas fiable (ticks manqués) Toujours utiliser le temps

Donc le graphique ne peut pas être plus grand que la taille de graphique spécifiée par l'option - on pourrait penser. J'ai donc écrit un petit EA pour prouver l'inutilité de l'utilisation des barres.

int barCount=-1;

int init(){
   barCount = Bars;
   Print("Starting number of bars is " + barCount );
}

int start(){
   if( barCount != Bars ){
       barCount  = Bars;
       Print("Bar count is now " + barCount);
   }

   return(0);
}

Il fonctionne bien comme prévu sur le testeur. J'ai supposé qu' il échouerait lamentablement dans un compte démo ou réel. La taille de mon graphique est fixée à 100 000 et il y avait plus de barres dans le graphique que cela. J'ai donc modifié le nombre maximum de barres du graphique à 10 000 et j'ai redémarré le programme. Bien sûr, le premier tick de l'EA m'a donné une réponse presque correcte, 10 005. Mais sur un graphique M1, la mise à jour est constante, comme on pourrait s'y attendre si la limite du graphique était totalement ignorée. Il est possible que la limite graphique ne s'applique que lorsque vous démarrez le programme.

J'ai fini par prouver que je ne sais pas ce que Bars est censé faire :-(

 
17021978:

J'ai essayé de le mettre en ligne mais il ne s'échange pas...

Quelqu'un peut-il le réparer ?

J'ai essayé en utilisant le testeur de stratégie et cela fonctionne.

Merci d'avance :)

Cher 17021978 - c'est vieux,

Lisez tout le fil de discussion sur EA builder https://www.mql5.com/en/forum/139608

:(

Raison: