Trading Sistemático

Más Operaciones Después del Breakeven: Optimiza tu Trading con MetaTrader 4
MetaTrader4
Más Operaciones Después del Breakeven: Optimiza tu Trading con MetaTrader 4

¡Hola, traders! Hoy vamos a hablar sobre una herramienta muy útil que puede ayudarte a mejorar tus operaciones en MetaTrader 4: la función de conteo de órdenes de nuestro pequeño Asesor Experto (EA). ¿Qué es la función de conteo de órdenes? La esencia de esta función es contar las órdenes que aún no han alcanzado el breakeven. Aquí te dejo un fragmento del código que implementa esta función: int OrdersCounter()   {    int counter=0; //---    for(int i=OrdersTotal()-1; i>=0; i--)       if(OrderSelect(i,SELECT_BY_POS))          if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) // Si la orden fue abierta por este EA            { //--- si se ha alcanzado el breakeven    /* Para compras, solo cuando el StopLoss es igual o superior al precio de apertura. Nota: esta implementación no es recomendable si tienes órdenes pendientes, es solo para compras y ventas*/             double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice();             if(!XBreakeven) // Si solo se ha alcanzado el breakeven y el trailing stop no ha protegido el precio de apertura'               {                counter++; // Contamos la posición               }            }    return counter;   } En esta función, contamos solo las órdenes que NO tienen un stoploss por encima o igual al precio de apertura en compras y por debajo en ventas. En resumen, contamos todas las órdenes que no han llegado al breakeven o donde el trailing stop no ha protegido su precio de apertura. double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice();             if(!XBreakeven) // Si solo se ha alcanzado el breakeven y el trailing stop no ha tenido lugar' Con esto, creamos un contador que devuelve el valor que vamos a usar para limitar nuestra posición máxima, que en este caso hemos establecido en 1 orden a la vez.    if(OrdersCounter()<MaximumOrders) Por lo tanto, cada vez que se alcanza el breakeven, esta función lo ignorará al contarlo. En este ejemplo, como solo teníamos una posición, el contador devolverá cero y ¡boom! Abrimos otra venta y el proceso continúa. Esto no sería posible si no hubiera creado una función de breakeven: void BreakEvenFunction()   { //---    for(int i=OrdersTotal()-1; i>=0; i--)       if(OrderSelect(i,SELECT_BY_POS))          if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())            { // Para compras, si el Bid está por encima del Precio de Apertura + pips de breakeven. Viceversa para ventas             double xHybrid = OrderType()==OP_BUY ? (Bid>OrderOpenPrice()+BreakevenPips*_Point && OrderStopLoss()<OrderOpenPrice()) : (Ask<OrderOpenPrice()-BreakevenPips*_Point && OrderStopLoss()>OrderOpenPrice());             /* Para compras, solo cuando el StopLoss es igual o superior al Precio de Apertura. Viceversa para ventas */             if(xHybrid)               {                bool modfy = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrNONE);               }            }   } ¿Te animas a probarlo?

2021.07.13
Estrategia de Ruptura de Promedios Móviles para MetaTrader 4
MetaTrader4
Estrategia de Ruptura de Promedios Móviles para MetaTrader 4

¿Te has preguntado cómo sacarle el máximo provecho a los promedios móviles en tu trading? Hoy vamos a hablar sobre una estrategia de ruptura que puede ayudarte a identificar oportunidades de compra y venta en MetaTrader 4. Entendiendo la Entrada a la Estrategia Vamos a desglosar los parámetros de entrada, tomando como ejemplo una operación de compra. Recuerda que las ventas serían lo contrario. inp1: El promedio móvil exponencial (EMA) de 20 períodos debe ser mayor que el EMA de 30 períodos. inp2: El EMA de 30 períodos debe ser mayor que el EMA de 50 períodos. inp3: La apertura de la barra de ruptura debe estar por encima del EMA de 30 períodos. Ajustes de Ruptura Los ajustes de ruptura son cruciales para que esta estrategia funcione correctamente: Cantidad de barras tranquilas: Define cuántas barras atrás la ruptura es más alta. Rango de barras tranquilas: Establece el rango mínimo en pips de las barras tranquilas. Fuerza de impulso: Configura este valor en 1.1, lo que significa que la ruptura debe estar al menos un 10% por encima de los máximos del rango de barras tranquilas. Valor de paso para optimización: Ajusta este valor de 0.1, comenzando desde 1 hasta 5. Longitud de la Mecha y Tamaño de la Barra de Ruptura Para optimizar tu estrategia, considera también los siguientes parámetros: inp5: Longitud de la mecha como un porcentaje del tamaño total de la barra. Rango de tamaño mínimo y máximo: Establece el tamaño en pips de la barra de ruptura. inp6: El mínimo de la barra de ruptura debe ser igual o menor que el EMA de 20. Volumen y Stop Loss: Define el volumen de lotes y el objetivo de Stop Loss en pips.   

2021.07.03
Marco Validate Me: Crea Robots de Trading Exitosos para MetaTrader 4
MetaTrader4
Marco Validate Me: Crea Robots de Trading Exitosos para MetaTrader 4

Marco Validate Me Hoy quiero compartir contigo mi interpretación sobre cómo programar un robot de trading que utilice órdenes de compra y venta en el mercado, asegurando que cumpla con la validación necesaria. Este marco aborda una serie de verificaciones que un robot de trading debe superar antes de ser publicado. Recuerda, es solo con fines educativos. Ejemplo de código para comprar ask=MarketInfo(_Symbol,MODE_ASK);          bid=MarketInfo(_Symbol,MODE_BID);          sl=(OrderStopPips==0)?0.0:bid-ExtOrderStop;          if(sl!=0.0 && ExtOrderStop<StopLevel)             sl=bid-StopLevel;          tp=(OrderTakePips==0)?0.0:ask+ExtOrderTake;          if(tp!=0.0 && ExtOrderTake<StopLevel)             tp=ask+StopLevel;          GetLot=CheckVolumeValue(Lots);          if(!CheckStopLoss_Takeprofit(OP_BUY,ExtOrderStop,ExtOrderTake))             return;          if(CheckMoneyForTrade(GetLot,OP_BUY))             order=OrderSend(_Symbol,OP_BUY,GetLot,ask,10,sl,tp,"Framework",678,0,Blue); Entradas del marco

2021.06.22
Dual StopLoss: Combina Stop Loss Oculto y Regular en MetaTrader 4
MetaTrader4
Dual StopLoss: Combina Stop Loss Oculto y Regular en MetaTrader 4

Cuando un trader abre una nueva posición, lo primero que debe considerar es la gestión del dinero. Controlar el riesgo y administrar el capital es fundamental, y una de las maneras más comunes de hacerlo es estableciendo un margen de pérdida para nuestras operaciones. Muchos traders creen que al fijar un Stop Loss (o incluso un Take Profit) en la ventana de modificación de posiciones, el servidor del bróker está obligado a cerrar su operación tan pronto como el precio alcance ese límite. Pero, en realidad, no es tan simple. Todo depende del tipo de cuenta que tengas con tu bróker. En cuentas ECN, cuando le das un precio al bróker como Stop Loss o Take Profit, él cerrará tu posición en el primer precio disponible una vez que se alcance ese límite. Si no estás de acuerdo con esto, te invito a revisar con más detalle tu historial de operaciones. Ahí notarás que algunas de tus órdenes se cierran a precios diferentes a los que estableciste, lo que puede causarte pérdidas mayores y ganancias inesperadas. Esto se debe al SLIPPAGE. Además, hay traders que piensan que el límite de pérdida no debería ser indicado con precisión al bróker. De aquí nace el concepto de Stop Loss OCULTO, y este robot está diseñado precisamente para eso. Ahora puedes tener tanto un STOP LOSS OCULTO como un STOP LOSS REGULAR juntos. El STOP LOSS REGULAR se puede configurar fácilmente para tus posiciones, como siempre lo has hecho. No importa si utilizas robots o si operas manualmente. Simplemente ejecuta este robot en un gráfico nuevo (cualquiera) para gestionar todas tus posiciones. El valor de entrada determina la distancia entre el STOP LOSS OCULTO y el STOP LOSS REGULAR. Ten en cuenta que este valor se define en puntos, no en pips.

2021.04.23
Asistente de Scalping v1.0: Tu aliado en MetaTrader 4
MetaTrader4
Asistente de Scalping v1.0: Tu aliado en MetaTrader 4

El scalping es una de las estrategias más populares en el mundo del trading, y muchos traders la han probado al menos una vez. Como un scalper suele realizar más de 10 operaciones al día, establecer Stop Loss y Take Profit para cada operación puede resultar un poco tedioso. Si tu estrategia implica operar con varios instrumentos financieros y buscar el Break Even, gestionar todas estas órdenes puede volverse aburrido y, muchas veces, propenso a errores. Además, si operas en gráficos con tiempos cortos y en varios pares de divisas, puede ocurrir un movimiento de precio rápido justo cuando te alejas de tu escritorio para tomar un café, y podrías perder la oportunidad de asegurar un Break Even. No hay que olvidar que la posibilidad de que un movimiento de precio rápido convierta una operación rentable en una pérdida siempre está presente. Con este asistente, podrás determinar fácilmente la cantidad de Stop Loss y Take Profit que necesitas. Tan pronto como abras una operación, el asistente configura automáticamente los valores iniciales y, si el precio se mueve lo suficiente en la dirección deseada, la operación se convierte en libre de riesgo o Break Even. Todos los valores de entrada están en PUNTOS (no en PIP). extern double WhenToMoveToBE; // Determinas cuántos puntos debe estar el precio alejado del punto de entrada para que el EA lleve la orden a Break Even. extern double BEAmount; // Configuras la distancia del Stop Loss al punto de entrada.

2021.04.23
Scheduler Automático: Tu Asesor Experto para MetaTrader 4 y 5
MetaTrader4
Scheduler Automático: Tu Asesor Experto para MetaTrader 4 y 5

¡Hola, traders! Hoy quiero hablarles sobre una herramienta que puede facilitar mucho su experiencia de trading: el Scheduler Automático, un asesor experto para MetaTrader 4 y 5 que puedes encontrar en EarnForex.com. Este Scheduler Automático te permite tener el control total sobre los períodos en los que el AutoTrading está habilitado o deshabilitado en tu plataforma MetaTrader. ¡Es como tener un asistente personal que se encarga de tus operaciones! Una de las mejores características de este asesor es que puedes establecer horarios específicos para cada día de la semana. Esto significa que puedes programar el AutoTrading para que esté activo solo cuando realmente lo necesites, y se desactivará automáticamente fuera de esos períodos. ¡Adiós a las sorpresas desagradables! Además, si deseas, el Scheduler también puede intentar cerrar todas las operaciones abiertas y las órdenes pendientes antes de desactivar el AutoTrading. Esto te da una capa extra de seguridad y te permite gestionar tus posiciones de manera más efectiva. Control total sobre tus horarios de trading Desactivación automática fuera de los períodos programados Cierre de operaciones antes de desactivar el AutoTrading Así que si buscas una manera de optimizar tu estrategia de trading y asegurarte de que tus operaciones estén bajo control, no dudes en probar el Scheduler Automático. ¡Tu cartera te lo agradecerá!

2021.04.01
Cierra Órdenes por Objetivo o Limita Pérdidas - Herramienta para MetaTrader 4
MetaTrader4
Cierra Órdenes por Objetivo o Limita Pérdidas - Herramienta para MetaTrader 4

Utilizando el EA para el Trading En el mundo del trading, contar con las herramientas adecuadas puede marcar la diferencia. Hoy vamos a hablar sobre un Asesor Experto (EA) que te ayudará a gestionar tus órdenes de manera más eficiente. Inputs Necesarios Este EA requiere tres entradas que debes configurar: Objetivo de Beneficio Límite de Pérdidas Número Mágico extern    double         inTargetProfitMoney     = 10;       //Objetivo de Beneficio ($) extern    double         inCutLossMoney          = 0.0      //Límite de Pérdidas ($) extern    int            inMagicNumber           = 0        //Número Mágico Cuando este EA se ejecuta, primero llamará a la función OnInit(), donde verificaremos la inicialización de las entradas y variables. int OnInit()   { //---    if(inTargetProfitMoney <= 0)      {       Alert("Entrada inválida");       return(INIT_PARAMETERS_INCORRECT);      }    inCutLossMoney = MathAbs(inCutLossMoney) * -1; //---    return(INIT_SUCCEEDED);   } Cada vez que haya un movimiento de precio (tick), se llamará a la función OnTick(). void OnTick()   { //---    double   tFloating = 0.0;    int tOrder  = OrdersTotal();    for(int i=tOrder-1; i>=0; i--)      {       if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))         {          if(OrderMagicNumber() == inMagicNumber)            {             tFloating   += OrderProfit()+OrderCommission() + OrderSwap();            }         }      }    if(tFloating >= inTargetProfitMoney || (tFloating <= inCutLossMoney && inCutLossMoney < 0))      {       fCloseAllOrders();      }   } En la función OnTick, se calcula el beneficio o pérdida total. Si se cumple el objetivo o se alcanza el límite de pérdida, se cierran todas las órdenes. void fCloseAllOrders()   {    double   priceClose = 0.0;    int tOrders = OrdersTotal();    for(int i=tOrders-1; i>=0; i--)      {       if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))         {          if(OrderMagicNumber() == inMagicNumber && (OrderType() == OP_BUY || OrderType() == OP_SELL))            {             priceClose = (OrderType()==OP_BUY)?MarketInfo(OrderSymbol(), MODE_BID):MarketInfo(OrderSymbol(), MODE_ASK);             if(!OrderClose(OrderTicket(), OrderLots(), priceClose, slippage, clrGold))               {                Print("AVISO: Cierre Fallido");               }            }         }      }   } Para más información detallada y compartir códigos MQL4, te invito a unirte a nuestro grupo de Telegram: t.me/codeMQL

2021.03.31
Cómo implementar un Trailing Stop con MagicNumber en MetaTrader 4
MetaTrader4
Cómo implementar un Trailing Stop con MagicNumber en MetaTrader 4

El trailing stop es una herramienta esencial para nuestros trades, ya que nos permite mover el stop loss a la zona de ganancias, asegurando así nuestros beneficios de forma automática. Comencemos a codificar especificando los parámetros de entrada del trailing stop. input    bool     isTrailingStop = true;  //Trailing Stop input    int      trailingStart  = 15;    //Inicio del Trailing (pips) input    int      trailingStep   = 5     //Paso del Trailing (pips) input    int      MagicNumber = 0;        //Número Mágico Variable Global //Variable Global double   myPoint    = 0.0; Cuando ejecutamos este EA, la función OnInit() se ejecutará por primera vez y aquí validaremos e inicializaremos las variables de entrada. int OnInit()   {       if (isTrailingStop && trailingStart <= 0){       Alert ("Parámetros incorrectos");       return(INIT_PARAMETERS_INCORRECT);    }       myPoint     = GetPipPoint(Symbol());       return(INIT_SUCCEEDED);   } Cada vez que ocurre un movimiento de precio (tick) en el gráfico donde se ha emparejado este EA, se ejecutará la función OnTick(). Dentro de esta función, llamaremos a la función setTrailingStop(). void OnTick()   { //---    setTrailingStop(MagicNumber);      } Función setTrailingStop() void setTrailingStop(int magicNumber=0){    if (isTrailingStop==false) return;       int      tOrder = 0;    string   pair = "";    double   sl = 0.0, tp = 0.0;       pair = Symbol();       tOrder = OrdersTotal();    for (int i=tOrder-1; i>=0; i--){       bool hrsSelect = OrderSelect(i, SELECT_BY_POS, MODE_TRADES);       if (OrderMagicNumber() == magicNumber && StringFind(OrderSymbol(), pair, 0) == 0 ){          if (OrderType() == OP_BUY){             if ( (Bid - (trailingStart * myPoint)) >= OrderOpenPrice()                   && (Bid - ((trailingStart+trailingStep) * myPoint) >= OrderStopLoss() )                 ){                sl = NormalizeDouble(Bid - (trailingStart * myPoint), Digits());                if (!OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, clrBlue)){                   Print ("#", OrderTicket(), " no se actualizó el SL");                }             }          }                   if (OrderType() == OP_SELL){             if ( (Ask + (trailingStart * myPoint)) <= OrderOpenPrice()                   && ( (Ask + ((trailingStart+trailingStep) * myPoint) <= OrderStopLoss() ) || OrderStopLoss() == 0.0)                )             {                sl = NormalizeDouble(Ask + (trailingStart * myPoint), Digits() );                if (!OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, clrBlue)){                   Print ("#", OrderTicket(), " no se actualizó el SL");                }             }          }       } //fin if magicNumber    }//fin for } Otras funciones estándar necesarias son GetPipPoint() // Función GetPipPoint double GetPipPoint(string pair) {    double point= 0.0;    int digits = (int) MarketInfo(pair, MODE_DIGITS);    if(digits == 2 || digits== 3) point= 0.01;    else if(digits== 4 || digits== 5) point= 0.0001;    return(point); } Si tienes alguna pregunta, no dudes en dejarla en los comentarios. También puedes unirte a nuestro grupo de intercambio (en Español) t.me/codeMQL También te invitamos a descargar nuestra app SignalForex Apóyanos descargando y utilizando la app SignalForex para mejorar tus resultados en el trading. Descargar SignalForex

2021.03.30
Primero Anterior 1 2 3 4 5 6 7 8 9 10 11 Siguiente Último