Mira cómo descargar robots gratis
¡Búscanos en Facebook!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Librerías

Calcular el porcentaje del lote - librería para MetaTrader 5

Maksim Novikov
Maksim Novikov
Me llamo Maxim, soy trader y desarrollador en los lenguajes de programación MQL4 y MQL5.
Me especializo en la creación de programas para facilitar el trading.
| Spanish English Русский 中文 Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Visualizaciones:
212
Ranking:
(4)
Publicado:
Actualizado:
AutoLot.mqh (0.97 KB) ver
AutoLot.mq5 (1.78 KB) ver
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

La función CalcularLote está diseñada para calcular automáticamente el tamaño del lote de negociación basándose en los principios de gestión del riesgo. Permite al operador especificar el porcentaje del saldo de la cuenta que está dispuesto a arriesgar en una operación y determinar el volumen de posición óptimo en función de ello.

Sintaxis

double CalculateLot(double riskPercent, double stopLossPips);

Parámetros

Параметр        Тип     Описание
riskPercent     double  Процент от текущего баланса счета, которым трейдер готов рискнуть. Указывается в абсолютном значении (например, 2.0 = 2% от баланса).
stopLossPips    double  Расстояние до уровня Stop Loss в пунктах. Для 5-значных котировок указывается количество стандартных пунктов (например, 1000 = 1000 пунктов = 100 пипсов).

Valor de retorno

La función devuelve el volumen de lote normalizado ( doble ), que:

  • Se ajusta a las reglas de redondeo al paso de volumen ( VOLUME_STEP );

  • No supera el volumen máximo permitido ( VOLUME_MAX );

  • No sea inferior al volumen mínimo permitido ( VOLUME_MIN ).

Si el valor calculado supera los límites permitidos, la función devuelve un valor limitado (minLot o maxLot).

Algoritmo de funcionamiento

  1. Obtención de los parámetros de cuenta y símbolo

    • Saldo actual ( ACCOUNT_BALANCE )

    • Valor del tick ( SYMBOL_TRADE_TICK_VALUE )

    • Mínimo, máximo y paso de cambio de lote

  2. Cálculo del importe del riesgo en la divisa del depósito

    riskAmount = баланс × (риск% / 100)

  3. Cálculo del volumen del lote

    lotSize = riskAmount / (stopLossPips × tickValue)

  4. Normalización y validación

    • Redondeo al paso más próximo ( VOLUME_STEP )

    • Validación del valor mínimo y máximo

Ejemplos de utilización

Ejemplo 1 Uso básico en un Asesor Experto

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnTick()
{
   //--- Riesgo 1.5% del balance y stop loss 500 pips
   double lot = CalculateLot(1.5, 500);
   
   //--- Compruebe que el lote se calcula correctamente
   if(lot > 0.0)
     {
      //--- Obtener precios actuales
      double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
      
      //--- Calcular niveles
      double sl = ask - 500 * _Point;
      double tp = ask + 1500 * _Point;
      
      //--- Abrir una posición
      trade.Buy(lot, _Symbol, ask, sl, tp);
     }
}


Ejemplo 2. Uso en un script con comprobación de errores

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnStart()
{
   double riskPercent  = 2.0;   // Riesgo 2% del saldo
   double stopLossPips = 1000;  // Stop loss 1000 puntos
   
   double lot = CalculateLot(riskPercent, stopLossPips);
   
   //--- Información de salida sobre el cálculo
   Print("=== Resultados del cálculo del lote ===");
   Print("Saldo de cuenta: ", AccountInfoDouble(ACCOUNT_BALANCE));
   Print("Riesgo, %: ", riskPercent);
   Print("Importe del riesgo: ", AccountInfoDouble(ACCOUNT_BALANCE) * riskPercent / 100.0);
   Print("Stop loss, puntos: ", stopLossPips);
   Print("Coste del tictac:", SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE));
   Print("Lote calculado: ", lot);
   Print("================================");
   
   if(lot <= 0.0)
     {
      Alert("Error: Falló el cálculo del lote. Compruebe los parámetros de riesgo y stop loss".);
     }
}

Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/71010

ZigZag Support and Resistance Detection ZigZag Support and Resistance Detection

ZigZag SNR Detection identifica los niveles de soporte y resistencia mediante puntos pivote ZigZag.

To Close All Open Trades of Different Symbols To Close All Open Trades of Different Symbols

Detalles Técnicos Utiliza el OrderSend de MQL5 con TRADE_ACTION_DEAL para el cierre instantáneo del mercado a los precios Bid/Ask actuales. Incluye tolerancia al deslizamiento (10 puntos), coincidencia de volumen adecuada y preservación del número mágico. Bucles hacia atrás a través de las posiciones para evitar el cambio de índice durante la ejecución.

ICT True Open and Power of 3 (PO3) Lines ICT True Open and Power of 3 (PO3) Lines

Una utilidad ligera y esencial para los operadores de TIC y SMC. Traza automáticamente los precios de apertura diarios, semanales y mensuales reales, sirviendo de base para el concepto Power of 3 (Acumulación, Manipulación, Distribución).

SMC Liquidity Sweep and Rejection Detector SMC Liquidity Sweep and Rejection Detector

Indicador de alta precisión diseñado para detectar barridos de liquidez institucional (stop hunts). Identifica el rechazo de precios más allá de los niveles de oscilación recientes, marcando zonas potenciales de reversión de alta probabilidad sin indicadores rezagados.