EA Expert basado en EMA lenta barras y EMA rapida

MQL5 Experts

Trabalho concluído

Tempo de execução 2 dias
Comentário do desenvolvedor
Gracias por la oportunidad.
Comentário do cliente
This encoder performs extremely well in the mql language. He interpreted the strategy extremely well and patiently knew how to add conditions to the code to achieve the objective.

Termos de Referência

Necesito que se desarrole un EA Expert para MT5 basado en EMA de 200 periodos el cual será el detector de la tendencia principal.

Para indice de futuros S&P500 y otros en marco temporal D1 y H1:

El EA debe detectar que la tendencia es alcista, de lo contrario no hacer nada.

Condiciones: se deben cumplir 3 barras bajistas completadas en contra de la tendencia principal, despues de la tercera vela el EA debe abrir una operacion de compra en favor de la tendencia principal.

El EA cerrará la orden solo cuando el precio esté por encima de la EMA de 5 periodos.

En imputs debe haber gestión de capital lote fijo o dinámico así como ajuste de Stop Loss

Es una estrategia FIFO.

Aquí un borrador en código de la estrategia:

//+------------------------------------------------------------------+

//|                                            EMAS&bars.mq5   |

//|                          Copyright 2024, xxxx xxxxxx xxxxx. |

//|                                   https://www.opentrading.top |

//+------------------------------------------------------------------+

input int emaSlowPeriods = 200;

input int emaFastPeriods = 5;

input double lotSize = 0.1;

input int stopLoss = 135; // en puntos


// Variables globales

bool trendIsUp = false;

int consecutiveBearishCandles = 0;

int ticket = 0;


//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit()

  {

   return (INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

   //--- 

  }

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

   // Verificar tendencia

   double emaSlow = iMA(NULL, 0, emaSlowPeriods, 0, MODE_EMA, PRICE_CLOSE, 0);

   double emaFast = iMA(NULL, 0, emaFastPeriods, 0, MODE_EMA, PRICE_CLOSE, 0);


   if (emaSlow > emaSlow[1])

       trendIsUp = true;

   else

       trendIsUp = false;


   // Detectar velas bajistas consecutivas

   if (Close[0] < Open[0])

       consecutiveBearishCandles++;

   else

       consecutiveBearishCandles = 0;


   // Condición de entrada

   if (trendIsUp && consecutiveBearishCandles >= 3 && ticket == 0)

   {

       // Realizar acciones de entrada

       double stopLossPrice = NormalizeDouble(Bid - stopLoss * Point, Digits);

       ticket = OrderSend(Symbol(), OP_BUY, lotSize, Ask, 3, stopLossPrice, 0, "Compra basada en estrategia", 0, 0, Green);

       if (ticket > 0)

       {

           Print("Orden de compra abierta: Ticket #", ticket);

       }

       else

       {

           Print("Error al abrir la orden de compra: ", GetLastError());

       }

   }


   // Condición de salida

   if (ticket > 0)

   {

       if (OrderSelect(ticket, SELECT_BY_TICKET) == true)

       {

           if (OrderType() == OP_BUY && Close[0] > emaFast)

           {

               if (OrderClose(ticket, OrderLots(), Bid, 3, Red))

               {

                   Print("Orden de compra cerrada: Ticket #", ticket);

                   ticket = 0; // Restablecer la variable ticket

               }

               else

               {

                   Print("Error al cerrar la orden de compra: ", GetLastError());

               }

           }

       }

   }

  }

//+------------------------------------------------------------------+



Respondido

1
Desenvolvedor 1
Classificação
(163)
Projetos
278
24%
Arbitragem
15
40% / 7%
Expirado
18
6%
Ocupado
Pedidos semelhantes
drán índices de grupos de parámetros. //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { // Load strategy parameter sets int totalParams = LoadParams(fileName_, params); // If nothing is loaded, report an error if (totalParams == 0 ) {
Hola, quiera convertir un indicardor que yo facilite en un sistema, ademas de las entradas y salidas, debería tener lo siguientes parametros: -Hora de entrada -Hora de salida -Dia de las semana para operar -Stop Loss - Take Profit

Informações sobre o projeto

Orçamento
30+ USD
IVA (19%): 5.7 USD
Total: 35.7 USD
Desenvolvedor
27 USD