¿Estás buscando un asistente que te ayude a optimizar tus operaciones en MetaTrader 5? ¡Te presento a Lazy Bot MT5! Este sistema de trading está diseñado para realizar operaciones automáticas basadas en los puntos más altos y bajos del día anterior. A continuación, te contaré cómo configurarlo y cómo funciona.
1. Parámetros de entrada
- EASettings: "---------------------------------------------"
- InpMagicNumber: 123456 (Número mágico para identificar operaciones)
- InpBotName: "LazyBot_V1" (Nombre del bot)
- Inpuser_lot: 0.01 (Tamaño de lote)
- Inpuser_SL: 5.0 (Stoploss en Pips)
- InpAddPrice_pip: 0 (Distancia desde [H], [L] al precio de operación en Pips)
- Inpuser_SLippage: 3 (Deslizamiento máximo permitido en Pips)
- InpMax_spread: 0 (Spread máximo permitido en Pips)
- isTradingTime: true (Permitir operaciones solo en el horario establecido)
- InpStartHour: 7 (Hora de inicio de operaciones)
- InpEndHour: 22 (Hora de finalización de operaciones)
- isVolume_Percent: false (Permitir volumen en porcentaje)
- InpRisk: 1 (Porcentaje de riesgo sobre el saldo)
2. Inicialización de variables locales
// Parámetros locales datetime last; int totalBars; int Pips2Points; // Deslizamiento 3 pips double Pips2Double; // Stoploss 15 pips double slippage; double acSpread; string strComment = ""; CPositionInfo m_position; // Objeto de posición de trading CTrade m_trade; // Objeto de trading CSymbolInfo m_symbol; // Información del símbolo CAccountInfo m_account; // Información de la cuenta COrderInfo m_order; // Órdenes pendientes
3. Código Principal
La estrategia de Lazy Bot consiste en eliminar todas las órdenes antiguas y calcular los puntos más altos y bajos de la barra diaria anterior para generar dos órdenes pendientes: BUY_STOP y SELL_STOP, sin tomar ganancias.
4. Función de Inicialización del Asistente
int OnInit()
{
// Detección de dígitos
if(_Digits % 2 == 1) {
Pips2Double = _Point * 10;
Pips2Points = 10;
slippage = 10 * Inpuser_SLippage;
} else {
Pips2Double = _Point;
Pips2Points = 1;
slippage = Inpuser_SLippage;
}
if (!m_symbol.Name(Symbol()))
return(INIT_FAILED);
RefreshRates();
m_trade.SetExpertMagicNumber(InpMagicNumber);
m_trade.SetMarginMode();
m_trade.SetTypeFillingBySymbol(m_symbol.Name());
m_trade.SetDeviationInPoints(slippage);
return(INIT_SUCCEEDED);
}
5. Función de Tick del Asistente
void OnTick()
{
if (TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) == false) {
Comment("LazyBot\nTrading no permitido.");
return;
}
// Verificación del tiempo de trading
MqlDateTime timeLocal;
MqlDateTime timeServer;
TimeLocal(timeLocal);
TimeCurrent(timeServer);
// No operar en festivos
if(timeServer.day_of_week == 0 || timeServer.day_of_week == 6)
return;
int hourLocal = timeLocal.hour;
int hourCurrent = timeServer.hour;
acSpread = SymbolInfoInteger(_Symbol, SYMBOL_SPREAD);
strComment = "\nHora Local = " + hourLocal;
strComment += "\nHora Actual = " + hourCurrent;
strComment += "\nSpread = " + (string)acSpread;
strComment += "\nTotal de Barras = " + (string)totalBars;
Comment(strComment);
// Chequear Trailing
TrailingSL();
if (last != iTime(m_symbol.Name(), PERIOD_D1, 0)) {
if (isTradingTime) {
if (hourCurrent >= InpStartHour) {
DeleteOldOrds();
OpenOrder();
last = iTime(m_symbol.Name(), PERIOD_D1, 0);
}
} else {
DeleteOldOrds();
OpenOrder();
last = iTime(m_symbol.Name(), PERIOD_D1, 0);
}
}
}
6. Video Tutorial
Para profundizar en el uso de MQL4 y MQL5, aquí tienes unos videos:
Publicaciones relacionadas
- Señales de Trading con Patrón Hammer/Hanging Man y Estocástico en MetaTrader 5
- Crea tu Asesor Experto con MQL5: Señales de Trading Basadas en Dark Cloud Cover y Piercing Line
- Crea tu Asesor Experto con MQL5: Señales de Trading Basadas en Estrellas de la Mañana/Atardecer y CCI
- Cómo Crear un Asesor Experto con MQL5: Señales de Trading Basadas en Estrellas y Estocástico
- Señales de Trading con MQL5: Patrones de Estrellas y MFI