En el mundo del trading, utilizar un sistema de trading automatizado puede ser un gran aliado. Hoy quiero compartir con ustedes un EA (sistema de trading automático) que he desarrollado utilizando el indicador DeMarker, el cual es uno de los más simples que he creado. Estoy ansioso por recibir sus comentarios después de que lo prueben.
Este EA está diseñado para operar en un solo par de divisas. En el menú de propiedades, se pueden ajustar todos los parámetros funcionales, como el marco temporal, el número de lotes, el stop loss y el take profit.

extern ENUM_TIMEFRAMES TF = PERIOD_CURRENT;// Seleccionar el marco temporal extern int period = 8;// Periodo DeMarker extern double lt = 0.01;// Lotes extern int sl = 100;// Stop Loss extern int tp = 100;// Take Profit extern double OB = 0.7;// Sobrevendido extern double OS = 0.3;// Sobrecomprado extern bool OPENBAR = false;// Trading en el precio de apertura de nueva barra
Aquí está el secreto: divido las variables en 3 partes:
- Datos | Marco temporal
- Órdenes
- Par de divisas
//+------------------------------------------------------------------+ //-- marco temporal|indicador double dmrk[5]; int signal = -1;//-- 0.comprar 1.vender int hold = 0; //-- orden int ticket = 0; double lot = 0.0; int typ = -1; //-- par datetime t1 = 0; bool newbar = false; bool entry = false; //+------------------------------------------------------------------+
En la función OnInit(), inicializo la variable de array del indicador DeMarker y también verifico el tamaño mínimo de lotes para cumplir con los requisitos específicos del corredor.
//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnInit() { ArrayInitialize(dmrk,0.0); //--- const double test_lot = SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN); if(lt < test_lot) lt = test_lot; }
En la función OnTick(), realizo los cálculos del indicador y determino las señales de compra y venta.
//--------------------------------------------------------------------------- signal = -1; //--------------------------------------------------------------------------- //---calcular for(int i = 0; i < ArraySize(dmrk); i++) { dmrk[i] = iDeMarker(Symbol(), TF, period, i); } //--- if(dmrk[1] > OB) { hold = 1;//establecer } else if(dmrk[1] < OS) { hold = -1;//establecer } else { hold = 0;//reiniciar } if(hold == 1) { if(dmrk[0] < OB && dmrk[1] > OB) { signal = OP_SELL; } } if(hold == -1) { if(dmrk[0] > OS && dmrk[1] < OS) { signal = OP_BUY; } }
Para abrir una señal de compra o venta...
//--------------------------------------------------------------------------- if(signal != -1) if(newbar == true) if(entry == false)//puerta abierta { //--- entry = true;//establecer //--- if(signal == OP_BUY) { ticket = OrderSend(Symbol(), OP_BUY, lt, Ask, (int)((Ask - Bid) / Point), sl > 0?Bid - sl * Point: 0.0, tp > 0?Bid + tp * Point: 0.0, EAName + ":signal= " + IntegerToString(signal) + ":hold= " + IntegerToString(hold), EANumber, 0, clrBlue); signal = -1; //hold =0; }//reiniciar }//reiniciar señal }
Y para el cierre...
if(entry == true) // cierre { if(OrderSelect(ticket, SELECT_BY_TICKET)) { if(OrderCloseTime() == 0)//-- orden de comercio activa { /* condición para cerrar */ //entry = false; } //else if(OrderCloseTime() != 0)//-- cierre por 1. manual 2. sl/tp 3. ea { entry = false;//reiniciar entrada } } }


Espero que esta guía sobre el uso del EA con el indicador DeMarker en MT4 les sea útil para mejorar su estrategia de trading automatizado. No duden en dejar sus comentarios y experiencias tras utilizar esta herramienta.
연관 포스트
- EA de Trading Manual Buy Sell Close para Nuevos Inversores en MetaTrader 4
- iTRADE – Sistema de Trading Automático para MetaTrader 4
- Trailing Stop Loss para Todos los Órdenes y Símbolos - Sistema de Trading para MetaTrader 4
- Manual Hedging: Sistema de Trading Avanzado para MT4
- Framework Validate Me - Sistema de Trading Automático para MetaTrader 4