¿Puede alguien ayudarme con este 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);
}
//+------------------------------------------------------------------+
 

he intentado ponerlo en directo pero no funciona..

¿alguien puede arreglarlo por mí?

lo intente con el probador de estrategias y si funciona

Gracias de antemano :)

 

ODIAMOS A EA BUILDER

 
dabbler:

ODIAMOS A EA BUILDER



???
 

EA builder crea código malo que la persona que usa EA builder no puede entender y por lo tanto no puede arreglar. Y hay mucho código y es difícil aprender de un montón de código malo.

Intenta buscar en el foro hilos recientes que contengan "EA builder"

 
17021978:

he intentado ponerlo en directo pero no funciona..

¿alguien puede arreglarlo por mí?

lo intente usando el probador de estrategias y si funciona

Gracias de antemano :)


Si no opera entonces tienes que mirar en el diario de la terminal/expertos y leer las líneas dentro de esto

Si todavía no tienes idea entonces tienes que poner en tu EA algunas líneas de comentario o de impresión para ver lo que está sucediendo mientras tu EA está unido al gráfico

y si eso no ayuda entonces puede ser que no hayas permitido que el EA opere....

Entonces, ¿qué es lo que hay que arreglar?

Por cierto tienes que usar el botón SRC para colocar las líneas de programación en tu mensaje

y como dabbler

decir que odio EA Builder usted no aprende los fundamentos de la programación que necesita tener.... Tómate un tiempo y estudia los fundamentos

 
¡ok gracias dabbler y deVries!
 

  1. Como no hay esclavos aquí, sólo hay dos opciones: aprender a codificar o pagar a alguien. No vamos a codificar para usted. Estamos dispuestos a AYUDARLE. No vamos a depurar 230 líneas de código.
  2. El EA builder hace un mal recuento de código al cerrar múltiples órdenes.
  3. El constructor de EA hace mal código Las barras no son fiables (barras máximas en el gráfico) el volumen no es fiable (falta de ticks) Utilice siempre el tiempo
  4. El constructor de EA hace mal el código No se ajusta para los corredores de 4/5 dígitos
  5. El constructor de EA hace mal el código no ajustando para los corredores ECN.
  6. "Intenté ponerlo en vivo pero no opera..." ¿Qué dice el archivo de registro?
 
WHRoeder:

  1. Como no hay esclavos aquí, sólo hay dos opciones: aprender a codificar o pagar a alguien. No vamos a codificar para usted. Estamos dispuestos a AYUDARTE. No vamos a depurar 230 líneas de código.
  2. El EA builder hace un mal recuento de código al cerrar múltiples órdenes.
  3. El constructor de EA hace mal código Las barras no son fiables (barras máximas en el gráfico) el volumen no es fiable (falta de ticks) Utilice siempre el tiempo
  4. El constructor de EA hace mal el código No se ajusta para los corredores de 4/5 dígitos
  5. El constructor de EA hace mal el código no ajustando para los corredores ECN.
  6. "Intenté ponerlo en vivo pero no opera..." ¿Qué dice el archivo de registro?


el archivo de registro no muestra nada.. nada en el diario.

Por lo general, podemos ver el error de la revista, pero este su ninguno..

Gracias por responder WHRoeder

 
WHRoeder:

  1. El constructor de EA hace mal el código Las barras no son fiables (barras máximas en el gráfico) el volumen no es fiable (falta de garrapatas) Siempre use el tiempo

Así que el gráfico no puede ser más grande que el tamaño del gráfico especificado por la opción - se podría pensar. Así que escribí un pequeño EA para probar lo inútil que es el uso de Bares.

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);
}

Funciona muy bien como se esperaba en el probador. Asumí que fallaría miserablemente en una cuenta demo o real. El tamaño de mi gráfico está establecido en 100.000 y había más barras en el gráfico que eso. Así que cambié el máximo de barras en el gráfico a 10.000 y reinicié el programa. Efectivamente, el primer tick que ejecutó el EA me dio una respuesta casi correcta, 10.005. Pero en un gráfico M1 se está actualizando constantemente como sería de esperar si el límite del gráfico estuviera siendo totalmente ignorado. Es posible que el límite del gráfico sólo se aplique cuando se inicia el programa.

He acabado demostrando que no sé lo que se espera realmente de Bars :-(

 
17021978:

he intentado ponerlo en directo pero no funciona..

¿alguien puede arreglarlo por mí?

lo intente con el probador de estrategias y si funciona

Gracias de antemano :)

Estimado 17021978 - eso es viejo,

Lea todo el hilo sobre EA builder https://www.mql5.com/en/forum/139608

:(