Offtop - página 12

 
Estoy participando TT si o no
 
Alludenme en esto 
 
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".
Razón de la queja: