Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
- Visualizaciones:
- 35
- Ranking:
- Publicado:
-
¿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 a un 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
-
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
-
-
Cálculo del importe del riesgo en la divisa del depósito
riskAmount = баланс × (риск% / 100) -
Cálculo del volumen del lote
lotSize = riskAmount / (stopLossPips × tickValue)
-
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("La cantidad de 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 SNR Detection identifica los niveles de soporte y resistencia mediante puntos de pivote ZigZag.
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.
Accumulation/Distribution
El indicador Accumulation/Distribution (Acumulación/Distribución) queda determinado por los cambios que se producen en el precio y en el volumen.
Accelerator Oscillator (AC)
El indicador Acceleration/Deceleration (AC, Aceleración/Desaceleración) mide la aceleración y la desaceleración de la fuerza impulsora del mercado.
