Autor de la idea: vitaly
Autor del código MQL5: barabashkakvn
La estrategia de trading es bastante sencilla. Se abre una posición de COMPRA o VENTA y se protege con una orden de Stop pendiente a una distancia de Delta 1. Luego, se crea una cuadrícula compuesta por órdenes Limit o Stop pendientes a una distancia de Delta 2 entre sí. El número de órdenes pendientes en cada dirección se establece en Max Lines. Las órdenes pendientes (Buy Limit, Sell Limit, Buy Stop y Sell Stop) se configuran a través de una única función PendingOrder, a la que se le pasan el tipo de orden (order_type), volumen (volume), stop loss (sl) y take profit (tp).
//+------------------------------------------------------------------+ //| Orden pendiente | //+------------------------------------------------------------------+ void PendingOrder(ENUM_ORDER_TYPE order_type,double volume,double price,double sl,double tp) { sl=m_symbol.NormalizePrice(sl); tp=m_symbol.NormalizePrice(tp); if(m_trade.OrderOpen(m_symbol.Name(),order_type,volume,0.0, m_symbol.NormalizePrice(price),m_symbol.NormalizePrice(sl),m_symbol.NormalizePrice(tp))) { if(m_trade.ResultOrder()==0) { Print("#1 ",EnumToString(order_type)," -> false. Result Retcode: ",m_trade.ResultRetcode(), ", descripción del resultado: ",m_trade.ResultRetcodeDescription()); PrintResultTrade(m_trade,m_symbol); } else { Print("#2 ",EnumToString(order_type)," -> true. Result Retcode: ",m_trade.ResultRetcode(), ", descripción del resultado: ",m_trade.ResultRetcodeDescription()); PrintResultTrade(m_trade,m_symbol); } } else { Print("#3 ",EnumToString(order_type)," -> false. Result Retcode: ",m_trade.ResultRetcode(), ", descripción del resultado: ",m_trade.ResultRetcodeDescription()); PrintResultTrade(m_trade,m_symbol); } //--- }
Al alcanzar el objetivo de Cierre de Ganancia, se cierran todas las posiciones y se eliminan todas las órdenes pendientes. También puedes cerrar todas las posiciones y eliminar órdenes pendientes si pierdes más de Cierre de Pérdida (si configuras Cierre de Pérdida en 0.0, este parámetro se desactiva).
El funcionamiento del Asesor Experto (apertura de posiciones y configuración de órdenes pendientes protectoras) se lleva a cabo dentro del intervalo horario laboral, desde Hora de Inicio hasta Hora de Fin (la Hora de Inicio puede ser menor o mayor que la Hora de Fin).
Idea Principal
Analizando el valor del ADX en el marco de tiempo Work TimeFrame. Si el ADX está por debajo de 40, esto se considera una tendencia plana, y se colocan órdenes Limit pendientes. De lo contrario, se utilizan órdenes Stop pendientes;
Si DI+ es mayor que DI-, se compra; de lo contrario, se vende.
Los mejores resultados de optimización de los dos parámetros (ADX del Bar Actual de 0 a 2, paso de 1 y Work TimeFrame de M1 a H1).
EURUSD, ADX del Bar Actual 0, Work TimeFrame H1.

USDJPY, ADX del Bar Actual 2, Work TimeFrame M1.

En el caso de EURUSD, ADX del Bar Actual 0, Work TimeFrame H1, pero el parámetro Cierre de Pérdida está configurado a "0.0".

Y USDJPY, ADX del Bar Actual 2, Work TimeFrame M1, pero el parámetro Cierre de Pérdida está configurado a "0.0".

Comentarios 0