Anexos: Referencia de Funciones
En este capítulo, proporcionaremos una referencia de las funciones más utilizadas en MQL5 , junto con ejemplos prácticos y casos de estudio. Esta sección está diseñada para servir como una guía rápida y útil para traders y desarrolladores que deseen implementar estas funciones en sus proyectos.
Tabla de Funciones Más Utilizadas en MQL5
A continuación, presentamos una tabla con las funciones más comunes en MQL5, junto con una breve descripción de su propósito:
iMA() | Calcula el valor de una media móvil (SMA, EMA, etc.) en un símbolo y período dados. |
OrderSend() | Envía una orden de trading al mercado (compra, venta, stop loss, take profit). |
SymbolInfoDouble() | Obtiene información numérica sobre un símbolo (precio actual, spread, etc.). |
PositionSelect() | Selecciona una posición abierta para su análisis o modificación. |
PositionsTotal() | Devuelve el número total de posiciones abiertas en la cuenta. |
CopyRates() | Copia datos históricos de precios (OHLC) en un array para análisis. |
WebRequest() | Realiza solicitudes HTTP a servidores externos (APIs, servicios web). |
NormalizeDouble() | Normaliza un valor numérico según los dígitos del símbolo. |
MathMax() / MathMin() | Encuentra el valor máximo o mínimo entre dos números. |
ArraySort() | Ordena un array en orden ascendente o descendente. |
Ejemplos de Uso Práctico
A continuación, exploraremos ejemplos prácticos de cómo usar estas funciones en tus proyectos.
1. iMA(): Calcular Medias Móviles
La función iMA() es ampliamente utilizada para calcular medias móviles, una herramienta esencial en el análisis técnico.
//+------------------------------------------------------------------+
//| Ejemplo de uso de iMA() |
//+------------------------------------------------------------------+
void OnStart() {
double fastMA = iMA(_Symbol, PERIOD_CURRENT, 10, 0, MODE_SMA, PRICE_CLOSE, 0);
double slowMA = iMA(_Symbol, PERIOD_CURRENT, 50, 0, MODE_SMA, PRICE_CLOSE, 0);
if (fastMA > slowMA) {
Print("Señal de compra detectada.");
} else if (fastMA < slowMA) {
Print("Señal de venta detectada.");
}
}
Caso de Estudio:
Este ejemplo muestra cómo usar cruces de medias móviles para generar señales de compra y venta.
2. OrderSend(): Enviar Órdenes al Mercado
La función OrderSend() es fundamental para abrir posiciones de compra o venta.
//+------------------------------------------------------------------+
//| Ejemplo de uso de OrderSend() |
//+------------------------------------------------------------------+
void OpenBuyPosition() {
double lotSize = 0.1;
double stopLoss = NormalizeDouble(Ask - 50 * Point(), _Digits);
double takeProfit = NormalizeDouble(Ask + 100 * Point(), _Digits);
if (!OrderSend(_Symbol, OP_BUY, lotSize, Ask, 10, stopLoss, takeProfit)) {
Print("Error al abrir posición de compra. Código: ", GetLastError());
} else {
Print("Posición de compra abierta correctamente.");
}
}
Caso de Estudio:
Este código abre una posición de compra con stop loss y take profit predefinidos. Es ideal para implementar estrategias automatizadas.
3. SymbolInfoDouble(): Obtener Información del Símbolo
La función SymbolInfoDouble() permite acceder a datos clave sobre un símbolo, como el precio actual o el spread.
//+------------------------------------------------------------------+
//| Ejemplo de uso de SymbolInfoDouble() |
//+------------------------------------------------------------------+
void OnStart() {
double currentBid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
double currentAsk = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double spread = currentAsk - currentBid;
Print("Precio Bid: ", DoubleToString(currentBid, _Digits));
Print("Precio Ask: ", DoubleToString(currentAsk, _Digits));
Print("Spread: ", DoubleToString(spread, _Digits));
}
Caso de Estudio:
Este ejemplo muestra cómo obtener el spread actual de un símbolo, lo cual es útil para evaluar costos de trading.
4. CopyRates(): Analizar Datos Históricos
La función CopyRates() copia datos históricos de precios (OHLC) en un array para análisis posterior.
//+------------------------------------------------------------------+
//| Ejemplo de uso de CopyRates() |
//+------------------------------------------------------------------+
void OnStart() {
MqlRates rates[];
int copied = CopyRates(_Symbol, PERIOD_H1, 0, 10, rates); // Copiar las últimas 10 velas H1
if (copied > 0) {
for (int i = 0; i < copied; i++) {
Print("Vela ", i, ": Open=", rates[i].open, ", High=", rates[i].high, ", Low=", rates[i].low, ", Close=", rates[i].close);
}
} else {
Print("Error al copiar datos históricos.");
}
}
Caso de Estudio:
Este código copia las últimas 10 velas H1 y las imprime en la ventana de resultados. Es útil para backtesting y análisis técnico.
5. WebRequest(): Integrar APIs Externas
La función WebRequest() permite realizar solicitudes HTTP a servidores externos, como APIs de noticias o calendarios económicos.
//+------------------------------------------------------------------+
//| Ejemplo de uso de WebRequest() |
//+------------------------------------------------------------------+
void OnStart() {
string url = "https://api.example.com/data";
string headers = "Authorization: Bearer YOUR_API_KEY\r\n";
char responseBuffer[];
int timeout = 5000;
int result = WebRequest("GET", url, headers, timeout, NULL, responseBuffer);
if (result == -1) {
Print("Error en la solicitud HTTP. Código: ", GetLastError());
} else {
string response = CharArrayToString(responseBuffer);
Print("Respuesta de la API: ", response);
}
}
Caso de Estudio:
Este ejemplo muestra cómo integrar una API externa para obtener datos adicionales, como noticias o indicadores económicos.
Interactividad: Ejercicios Prácticos
- Ejercicio 1: Usa la función
iMA()para calcular una media móvil exponencial (EMA) y genera señales de trading basadas en ella. - Ejercicio 2: Implementa un sistema de gestión de riesgos usando
OrderSend()ySymbolInfoDouble(). - Ejercicio 3: Usa
CopyRates()para analizar las últimas 20 velas diarias y detectar patrones de reversión.
Actualización de Recursos
Dado que MQL5 se actualiza constantemente, asegúrate de revisar la documentación oficial para verificar si hay nuevas funciones o cambios en las existentes. Además, mantente al tanto de las discusiones en foros y comunidades para aprender sobre usos innovadores de estas funciones.
Conclusión: Esta referencia de funciones te proporciona una base sólida para desarrollar proyectos en MQL5. Al dominar estas funciones y practicar con los ejemplos proporcionados, podrás crear Expert Advisors (EAs), indicadores y scripts personalizados que se adapten a tus necesidades de trading.
¡Sigue explorando y perfeccionando tus habilidades en MQL5!
