Offtop - página 13

 
El buen conocimiento se basa en lo aprendido atrabes de las lecturas para conprender .ke manifestarse.en este ejemplo.no solo es ke el lector conprenda la importancia y centido a lo ke nos da el empuje para octener ganancias .si no ke con ello transmitimos de manera segura a ke otros aprendan a mantener el ritmo del día con la buena razón de es el trade MQL5.gracias 
 

mi duda es basicamente la que esta puesta en el foro en ingles 

https://www.mql5.com/en/forum/458346

donde me encuentro con que me dice estos errores de que el backtesting no funciona y dice que hay mucho volumen, pero los ticks aparentemente estan bien , igual el historial, no es que el mt4 este limpio o no pero si es complicado encontrar alguna solucion, pueden ayudarme porfavor 

I need help strategy tester tralingstop
I need help strategy tester tralingstop
  • 2023.12.01
  • www.mql5.com
Hi guys In the demo accounts and real accounts it works well but at the moment of placing in the strategy tester the program gets these errors I ha...
 

Buenas noches, soy nuevo aquí, y además estoy empezando en esto de la programación en MQL4.Tengo un código que no me funciona y necesito que alguien me ayude.  Basicamente persigo que todos los días a una misma hora y a partir de que se cumpla una elemental condición se envíe una orden de mercado con un stoploss y takeprofit fijos. El código no me ejecuta ninguna orden de mercado, y ni me funciona en backtesting que es en realidad mi verdadero objetivo. Por favor necesito ayuda!

Disculpen si en mi intento de resolver la situación escribo código muy ineficiente pero repito estoy iniciándome

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

//|                                            EAdePrueba.mq4 |

//|                                Copyright 2023, MetaQuotes Ltd. |

//|                                             https://www.mql5.com |

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

#property copyright "Copyright 2023, MetaQuotes Ltd."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property description "Este es mi primer EA."

#property strict


#property show_inputs


// --- Includes

#include <stdlib.mqh>


// Definition of an hour. This is necessary for a drop down menu for hours input.

enum enum_horas

  {

   h00 = 0, // 00:00

   h01 = 1, // 01:00

   h02 = 2, // 02:00

   h03 = 3, // 03:00

   h04 = 4, // 04:00

   h05 = 5, // 05:00

   h06 = 6, // 06:00

   h07 = 7, // 07:00

   h08 = 8, // 08:00

   h09 = 9, // 09:00

   h10 = 10, // 10:00

   h11 = 11, // 11:00

   h12 = 12, // 12:00

   h13 = 13, // 13:00

   h14 = 14, // 14:00

   h15 = 15, // 15:00

   h16 = 16, // 16:00

   h17 = 17, // 17:00

   h18 = 18, // 18:00

   h19 = 19, // 19:00

   h20 = 20, // 20:00

   h21 = 21, // 21:00

   h22 = 22, // 22:00

   h23 = 23, // 23:00

  };


enum enum_minutos

  {

   m00 = 0, // 00:00:00

   m01 = 1, // 00:01:00

   m02 = 2, // 00:02:00

   m03 = 3, // 00:03:00

   m04 = 4, // 00:04:00

   m05 = 5, // 00:05:00

   m06 = 6, // 00:06:00

   m07 = 7, // 00:07:00

   m08 = 8, // 00:08:00

   m09 = 9, // 00:09:00

   m10 = 10, // 00:10:00

   m11 = 11, // 00:11:00

   m12 = 12, // 00:12:00

   m13 = 13, // 00:13:00

   m14 = 14, // 00:14:00

   m15 = 15, // 00:15:00

   m16 = 16, // 00:16:00

   m17 = 17, // 00:17:00

   m18 = 18, // 00:18:00

   m19 = 19, // 00:19:00

   m20 = 20, // 00:20:00

   m21 = 21, // 00:21:00

   m22 = 22, // 00:22:00

   m23 = 23, // 00:23:00

   m24 = 24, // 00:24:00

   m25 = 25, // 00:25:00

   m26 = 26, // 00:26:00

   m27 = 27, // 00:27:00

   m28 = 28, // 00:28:00

   m29 = 29, // 00:29:00

   m30 = 30, // 00:30:00

   m31 = 31, // 00:31:00

   m32 = 32, // 00:32:00

   m33 = 33, // 00:33:00

   m34 = 34, // 00:34:00

   m35 = 35, // 00:35:00

   m36 = 36, // 00:36:00

   m37 = 37, // 00:37:00

   m38 = 38, // 00:38:00

   m39 = 39, // 00:39:00

   m40 = 40, // 00:40:00

   m41 = 41, // 00:41:00

   m42 = 42, // 00:42:00

   m43 = 43, // 00:43:00

   m44 = 44, // 00:44:00

   m45 = 45, // 00:45:00

   m46 = 46, // 00:46:00

   m47 = 47, // 00:47:00

   m48 = 48, // 00:48:00

   m49 = 49, // 00:49:00

   m50 = 50, // 00:50:00

   m51 = 51, // 00:51:00

   m52 = 52, // 00:52:00

   m53 = 53, // 00:53:00

   m54 = 54, // 00:54:00

   m55 = 55, // 00:55:00

   m56 = 56, // 00:56:00

   m57 = 57, // 00:57:00

   m58 = 58, // 00:58:00

   m59 = 59, // 00:59:00

  };

enum enum_segundos

  {

   s00 = 0, // 00:00:00

   s01 = 1, // 00:01:00

   s02 = 2, // 00:02:00

   s03 = 3, // 00:03:00

   s04 = 4, // 00:04:00

   s05 = 5, // 00:05:00

   s06 = 6, // 00:06:00

   s07 = 7, // 00:07:00

   s08 = 8, // 00:08:00

   s09 = 9, // 00:09:00

   s10 = 10, // 00:10:00

   s11 = 11, // 00:11:00

   s12 = 12, // 00:12:00

   s13 = 13, // 00:13:00

   s14 = 14, // 00:14:00

   s15 = 15, // 00:15:00

   s16 = 16, // 00:16:00

   s17 = 17, // 00:17:00

   s18 = 18, // 00:18:00

   s19 = 19, // 00:19:00

   s20 = 20, // 00:20:00

   s21 = 21, // 00:21:00

   s22 = 22, // 00:22:00

   s23 = 23, // 00:23:00

   s24 = 24, // 00:24:00

   s25 = 25, // 00:25:00

   s26 = 26, // 00:26:00

   s27 = 27, // 00:27:00

   s28 = 28, // 00:28:00

   s29 = 29, // 00:29:00

   s30 = 30, // 00:30:00

   s31 = 31, // 00:31:00

   s32 = 32, // 00:32:00

   s33 = 33, // 00:33:00

   s34 = 34, // 00:34:00

   s35 = 35, // 00:35:00

   s36 = 36, // 00:36:00

   s37 = 37, // 00:37:00

   s38 = 38, // 00:38:00

   s39 = 39, // 00:39:00

   s40 = 40, // 00:40:00

   s41 = 41, // 00:41:00

   s42 = 42, // 00:42:00

   s43 = 43, // 00:43:00

   s44 = 44, // 00:44:00

   s45 = 45, // 00:45:00

   s46 = 46, // 00:46:00

   s47 = 47, // 00:47:00

   s48 = 48, // 00:48:00

   s49 = 49, // 00:49:00

   s50 = 50, // 00:50:00

   s51 = 51, // 00:51:00

   s52 = 52, // 00:52:00

   s53 = 53, // 00:53:00

   s54 = 54, // 00:54:00

   s55 = 55, // 00:55:00

   s56 = 56, // 00:56:00

   s57 = 57, // 00:57:00

   s58 = 58, // 00:58:00

   s59 = 59, // 00:59:00

  };


input enum_horas horaInicioTrading = h08; // Start operation hour

input enum_minutos minutosInicioTrading = m15; // Start operation minuts

input enum_segundos segundosInicioTrading = s00; // Start operation seconds

input enum_horas horaFinalTrading = h15; // Last operation hour

input enum_minutos minutosFinalTrading = m30; // Last operation minuts

input enum_segundos segundosFinalTrading = s00; // Last operation seconds

input int         magicNumber = 2023;


double altoMasAlto;

double bajoMasBajo;

input enum_horas horaInicioAsia = h00;

input enum_minutos minutosInicioAsia = m00;

input enum_segundos segundosInicioAsia = s00;

input enum_horas horaFinalAsia = h08;

input enum_minutos minutosFinalAsia = m00;

input enum_segundos segundosInFinalAsia = s00;

double valorMedioRecuadroAsia;

double cierreUltimaVelaAsia;

long ticket;


double stopLevel; // Variable global para el nivel mínimo de stop

double precio_stoploss;

double precio_takeprofit;

double precio_entrada;

double preciosMasAltos[];

double preciosMasBajos[];


datetime tiempoAhora, tiempoAnterior;

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

//| Expert initialization function                                   |

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

int OnInit()

  {

//---


   altoMasAlto = 0;

   bajoMasBajo = MarketInfo(Symbol(), MODE_ASK);

   valorMedioRecuadroAsia = 0;

   cierreUltimaVelaAsia = 0;

   ticket = 0;


   tiempoAhora = tiempoAnterior = 0;


   stopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);


//---

   return(INIT_SUCCEEDED);

  }

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

//| Expert deinitialization function                                 |

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

void OnDeinit(const int reason)

  {

//---


  }

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

//| Expert tick function                                             |

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

void OnTick()

  {

//---

   if(!Filtro())

      return;

   if(HoraDeOperacion())

     {

      if(!Operaciones_Abiertas(magicNumber)) //Aquí evaluaremos si tenemos alguna posición abierta con este magicNumber.

        {

         if(Hour() == horaInicioTrading && Minute() == minutosInicioTrading && Seconds() == segundosInicioTrading)

           {

            MercadoAsiatico();

           }

         if((horaInicioTrading < horaFinalTrading) && (Hour() >= horaInicioTrading) && (Hour() <= horaFinalTrading))

           {

            if(cierreUltimaVelaAsia > valorMedioRecuadroAsia) //Cierre por arriba entonces posible señal de venta

              {

               Abrir_Operacion(OP_SELL);

              }

            if(cierreUltimaVelaAsia < valorMedioRecuadroAsia) //Cierre por debajo posible señal de compra

              {

               Abrir_Operacion(OP_BUY);

              }

           }

        }

     }

  }

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


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

//| Función para calcular los valores que caracterizan al mercado asiático |                                                                |

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

void MercadoAsiatico()

  {

   Print("Entró al mercado asiatico, y la hora con minutos y con segundos es ", Hour(), ":", Minute(), ":", Seconds());

   for(int i = 1; i <= 33; i++)

     {

      preciosMasAltos[i] = iHigh(NULL, PERIOD_M15, i);

     }

   altoMasAlto = ArrayMaximum(preciosMasAltos);


   for(int j = 1; j <= 33; j++)

     {

      preciosMasBajos[j] = iLow(NULL, PERIOD_M15, j);

     }

   bajoMasBajo = ArrayMinimum(preciosMasBajos);


   valorMedioRecuadroAsia = (altoMasAlto + bajoMasBajo) / 2;


   cierreUltimaVelaAsia = iClose(NULL, PERIOD_M15, 1);

  }

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


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

//| Función que abre una operación del tipo especificado.                                                                |

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

void Abrir_Operacion(int tipo_operacion) //Función que abre operaciones

  {

   if(OrderType() == OP_BUY)

     {

      //RefreshRates();

      precio_entrada = NormalizeDouble(Ask, Digits);

      precio_stoploss = (NormalizeDouble(Ask - (stopLevel / 10000), Digits));

      precio_takeprofit = (NormalizeDouble(Ask + (stopLevel / 10000), Digits));

     }

   if(OrderType() == OP_SELL)

     {

      //RefreshRates();

      precio_entrada = NormalizeDouble(Bid, Digits);

      precio_stoploss = NormalizeDouble(Bid + (stopLevel / 10000), Digits);

      precio_takeprofit = NormalizeDouble(Bid - (stopLevel / 10000), Digits);

     }

   RefreshRates();

   ticket = OrderSend(NULL, tipo_operacion, 1, precio_entrada, 10, precio_stoploss, precio_takeprofit, NULL, 2023, 0, clrNONE); //Enviamos orden de mercado

   if(ticket < 0) //Significaría que hemos tenido un error

     {

      tiempoAnterior = Time[0];

      Alert(ErrorDescription(GetLastError())); //Alertamos del error

     }

  }

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


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

//|                                                                  |

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

bool Filtro() //Compara el tiempo registrado de la operación anterior, ésto es "TiempoAnterior", con el tiempo registrado cuando se cumple las condiciones para una nueva operación lo que es "TiempoAhora"

  {

   tiempoAhora = Time[0];

   if(tiempoAnterior == tiempoAhora)

      return(false);

   else

      return(true);

  }


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

//|                                                                  |

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

bool Operaciones_Abiertas(int magicNumber_PLBP) //Esta función devuelve "true" si hay operaciones abiertas con este magic number, en caso contrario devuelve "false"

  {

   int tipoDeOperacion;

   int error = 0; //Esta variable contendrá el número de errores que ocurran, si ocurren

   if(OrdersTotal() != 0) //Orderstotal() devuelve el numero total de ordenes abiertas y pendientes

     {

      for(int i = OrdersTotal() - 1; i >= 0; i--)

        {

         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) //OrderSelect() nos devuelve true si la seleccionó, o false en caso contrario

           {

            //MODE_TRADES comprueba ordenes de mercado y pendientes, no las históricas

            tipoDeOperacion = OrderType(); //Aquí guardamos el tipo de orden que tehemos seleccionado actualmente (con la función OrderSelect() llamada previamente)

            if((tipoDeOperacion == OP_BUY || tipoDeOperacion == OP_SELL) && magicNumber_PLBP == OrderMagicNumber()) //La función OrderMagicNumber() nos devuelve el magic number de la orden seleccionada actualmente

              {

               return (true);

              }

           }

        }

      return (false);

     }

   else

      return (false);

  }

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

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

//|                                                                  |

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

bool HoraDeOperacion()

  {

   bool horaDeOperar = false;

   int hora_deseada = 8;

   int minutos_deseados = 15;

// Obtiene la hora actual del servidor

   datetime hora_actual = TimeCurrent();

   int hora_actual_server = TimeHour(hora_actual);

   int minutos_actual_server = TimeMinute(hora_actual);


   int tiempo_hasta_ejecucion = (hora_deseada - hora_actual_server) * 3600 + (minutos_deseados - minutos_actual_server) * 60;

   if(tiempo_hasta_ejecucion > 0)

     {

      Sleep(tiempo_hasta_ejecucion * 1000); // Espera hasta la hora deseada

      // Coloca aquí tu código para abrir la operación de compra

      horaDeOperar = true;

     }

   return horaDeOperar;

  }

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


Discover new MetaTrader 5 opportunities with MQL5 community and services
Discover new MetaTrader 5 opportunities with MQL5 community and services
  • 2023.12.08
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
 
Andy Ruben Machado Naranjo #:
La cuenta de 50 k la tengo en 51 k, pero me da error de dinero insuficiente con 30 lotes y 1.5 pips de SL, osea que incluso estoy usando menos lotes del que me toca y además hasta ayer podía abrir operaciones con ese lotaje, alguien sabe por qué pasa esto, si es por diciembre que sube el costo o algo ?

Desconozco el apalancamiento que está utilizando, pero suponiendo que por ejemplo sea de 1:500 e intente abrir 30 lotes en el EURUSD el margen requerido es de +82.000€ ($90.000).


 
Hola páseme información 
 
Hola buenas tarde quien me puede ayudar eh depositado 50 $ en metatrader para poder comprar un indicador pero no veo la opción de pagar con ese dinero ya que al pagar me pide que pague con tarjeta o otros medio y no con el dinero que recargue ya en mi cuenta de mql5.
 
Los comentarios no relacionados con este tema han sido trasladados en "Off-topic — Publicaciones fuera de tema: comentarios varios y fuera de alcance".
 

DONDE PUEDO VER MI NUMERO DE CUENTA

 
MetaQuotes:

Hemos actualizado el chat de MQL5.com: ahora es más cómodo y fácil de usar. No solo ha cambiado el aspecto externo del servicio, sino también algunas funciones; por ejemplo, hemos rediseñado la lógica de adición de amigos. Cree grupos sobre temas financieros, únase a comunidades ya existentes, discuta sobre temas de actualidad en chats grupales con un equipo de tráders o solo en conversaciones personales.


Tendrá acceso a:

Chats — para conversaciones individuales. En los chats, podrá contactar rápidamente con colegas o socios, intercambiar documentos, enlaces y archivos.

Grupos — para discusiones colectivas: cualquier miembro del grupo podrá escribir mensajes en igualdad de condiciones con el resto. Los grupos resultan adecuados para aquellos que desean discutir una nueva idea o situación del mercado, compartir conocimientos con tráders principiantes y recibir consejos de participantes del mercado más experimentados.

Canales — para declaraciones públicas. Solo un círculo limitado de personas podrá escribir aquí y tomar decisiones sobre el tema y el ámbito de desarrollo del canal. Por ejemplo, podrá seguir las fuentes de noticias sobre trading y mercados financieros para mantenerse al día de los últimos desarrollos, o crear su propio canal y compartir información útil con sus suscriptores. Si lo desea, podrá crear un canal cerrado de carácter comercial, donde será imposible ingresar sin una invitación.

Además del sitio web de la comunidad MQL5.com y los terminales MetaTrader, puede usar el servicio de mensajería instantánea MQL5 Channels de iOS para comunicarse o publicar contenidos. Se trata de una aplicación aparte con funcionalidad completa que minimiza el consumo de tráfico al trabajar con chats.

Ponga a prueba ahora mismo el funcionamiento del Chat MQL5.com actualizado: cree un nuevo grupo temático o canal.

Crear un chat grupal o canal propio

Chatt
 
Una muy buena app