Grid Detrended Price Oscillator EA
- Asesores Expertos
-
AL MOOSAWI ABDULLAH JAFFER BAQER
To trade successfully we need to go through the proven path that others had gone and reached!
Here are 17 quotes from such successful investors:
1- Limit your size in any position so that fear does not become the prevailing instinct guiding your judgment.
Joe Vidich - Versión: 3.16
- Activaciones: 5
Pruébalo antes de decidirte: carga el EA «Grid Detrended Price Oscillator» en el Probador de estrategias de MetaTrader 5, activa el modo visual y observa cada oscilación que acepta y cada oscilación que deja pasar.
LA TENDENCIA OCULTA LA OSCILACIÓN. ELIMINA LA TENDENCIA Y LA OSCILACIÓN SE MANIFIESTA.
La mayoría de las herramientas de entrada mezclan dos cosas: hacia dónde se dirige el mercado y cuánto se ha desviado de esa dirección. El oscilador de precios sin tendencia (Detrended Price Oscillator) las separa. Resta una media móvil del precio, de modo que lo que queda es la propia oscilación, medida con respecto a su propio centro reciente. El EA «Grid Detrended Price Oscillator» abre un ciclo solo cuando esa oscilación gira, en una barra completada, en la dirección de la tendencia principal, y luego pasa el relevo a un motor de gestión completo que agrupa los cierres y reduce las órdenes antiguas y pesadas paso a paso.
De un vistazo
• Un ciclo comienza cuando el DPO cruza su propia línea de señal en una barra cerrada. La vela en formación se ignora por defecto, por lo que una señal aceptada nunca se repinta.
• El DPO se calcula dentro del EA a partir de los cierres del gráfico y se expresa en ATR, por lo que un mismo ajuste se interpreta igual tanto en un par de divisas como en el oro. Sin archivo de indicador, sin DLL.
• El cálculo es causal: compara el cierre de hoy con una media que finalizó medio período antes, por lo que nunca se utiliza ninguna barra futura.
• Cuatro filtros se interponen entre un cruce y una orden: Climb, Gap, Stretch y Range, además de un filtro lateral EMA 200 lento.
• Novedad de este producto: el «Settle Guard», que puede rechazar un cruce que se produzca inmediatamente después de un cruce en sentido contrario. Viene desactivado de fábrica, y el motivo se explica a continuación.
• Los cruces anteriores se marcan en el gráfico en tiempo real: una pequeña flecha cuando se aceptan, un punto gris cuando un filtro los ha rechazado.
• Las ganancias se acumulan emparejando las órdenes más antiguas con las más recientes; una orden antigua de gran volumen puede retirarse por partes.
• Sin stop loss ni cierre forzado de todas las posiciones. Un límite detiene los nuevos niveles; las órdenes abiertas permanecen bajo gestión.
----------
Cómo utilizarlo
1. Asócialo al EURUSD H1 con los valores predeterminados: lote inicial de 0,01, escalera aditiva.
2. Configura RunMode en «Scan only» para la primera sesión. El panel muestra todos los planes y no se envía ninguna orden.
3. Cuando los planes te parezcan adecuados, pulsa «ARMED» en el panel.
4. Antes de pasar a operar en vivo, repite las pruebas que se indican a continuación con los datos de tu propio bróker, ya que el spread, el swap y la comisión influyen en el resultado.
5. Asigna a cada gráfico sus propios números mágicos si ejecutas varias copias.
----------
Resultados de las pruebas
Todas las cifras proceden del Strategy Tester con los parámetros predeterminados: datos OHLC de 1 minuto, apalancamiento 1:100, del 1 de enero de 2025 al 30 de septiembre de 2026, con datos de demostración de un bróker. Utiliza la misma configuración y podrás repetir los resultados.
• EURUSD H1, 10 000 $: resultado neto +912,98; caída máxima del capital: 351,06 (3,40 %); 404 operaciones. Sin stop-out ni denegación de margen.
• EURUSD H1, 1 000 000 $: resultado neto +912,98; caída máxima del capital de 351,06 (0,04 %); 404 operaciones. Sin stop-out ni denegación de margen.
• XAUUSD D1, 10 000 $: resultado neto +26,03, caída máxima del capital de 9,50 (0,09 %), 8 operaciones. Sin stop-out ni denegación de margen.
• XAUUSD D1, 1 000 000 $: resultado neto +26,03; caída máxima del capital: 9,50 (0,00 %); 8 operaciones. Sin stop-out ni denegación de margen.
Considera estos datos como un registro de un periodo pasado, no como una previsión. Ocho operaciones con oro son muy pocas para demostrar nada. La caída del capital es la misma en ambos depósitos porque los lotes no aumentan con el saldo, por lo que 351,06 supone una proporción mucho mayor en una cuenta pequeña; no se han probado depósitos inferiores a 10 000 $ . Los valores predeterminados de protección se seleccionaron en este mismo periodo, lo que favorece las cifras. No se verificaron las cuentas con compensación de saldos, así que considera que tu tipo de cuenta no ha sido probado hasta que lo hayas comprobado tú mismo.
----------
El Settle Guard: por qué está desactivado
La idea es sencilla. Cuando el DPO oscila alrededor de su línea, cruzándola al alza y a la baja en las barras adyacentes, un cruce no aporta mucha información. El «Settle Guard» exige que el DPO se mantenga al otro lado de su línea durante un número determinado de barras antes de que el cruce cuente. Hemos realizado una comparación con todos los demás parámetros en sus valores por defecto. EURUSD H1, 10 000 $, Settle Guard a 3 barras: resultado neto +805,34, drawdown 351,06 (3,42 %), 359 operaciones. Desactivado: beneficio neto +912,98, caída máxima del 351,06 (3,40 %), 404 operaciones. En el XAUUSD D1 no supuso ninguna diferencia (8 operaciones, +26,03 en ambos casos). Redujo las ganancias en aproximadamente un 12 % y no disminuyó la caída máxima, por lo que la decisión más sensata fue descartarlo. Está ahí para los símbolos o marcos temporales en los que se observe un parpadeo irregular; configura InpDPOSettleBars en 3 y compáralo con tus propios datos. Una prueba, un periodo: esto tampoco es prueba de que sea inútil.
----------
¿Por qué eliminar la tendencia?
Una media móvil sigue al precio; el DPO mide la distancia entre ambos, tomando como referencia una media centrada medio periodo atrás. Lo que queda es el ritmo de las oscilaciones en torno a la tendencia. Dividirlo por el ATR sitúa ese ritmo en una escala común, de modo que 2,5 significa dos barras y media típicas de extensión en cualquier símbolo. Esa escala permite que el Stretch Guard descarte un cruce que se produzca cuando la oscilación ya se ha agotado. El coste: el DPO se basa en una media, por lo que describe el pasado reciente y se retrasará ante giros repentinos.
----------
Qué ocurre en un ciclo
1. Lectura. En cada nueva barra, el DPO y su línea de señal se recalculan a partir de las barras completadas.
2. Cruce. El DPO se sitúa por encima de su línea para COMPRAR, y por debajo para VENDER.
3. Climb Guard. El DPO debe haber subido lo suficiente en esa dirección durante las últimas barras.
4. Protección contra brechas. La distancia respecto a la línea debe ser algo más que mínima.
5. Protección de extensión. El DPO no debe haberse alejado demasiado hacia el lado de la señal.
6. Protección de estabilización, opcional. El DPO debe haberse mantenido primero al otro lado de su línea.
7. Protección de rango. La ventana reciente debe ser lo suficientemente amplia en ATR; se omiten los rangos estrechos.
8. Filtro de tendencia. Por defecto, el cierre debe situarse en el lado correspondiente de la EMA 200. También puede alejarse de ese lado o desactivarse.
9. Sincronización. Las señales aceptadas se mantienen separadas por un intervalo de barras, y una señal puede esperar unas cuantas barras si el nivel no se puede colocar de inmediato.
10. Escalera. Los niveles siguen el ATR o puntos fijos, con un límite mínimo, un límite máximo de espaciado y una congelación opcional. Las rejillas de COMPRA y VENTA pueden ejecutarse juntas o por separado.
11. Gestión de posiciones. Los grupos de órdenes más antiguas y más recientes se cierran cuando su resultado conjunto, tras aplicar el swap y la comisión, alcanza el objetivo. Si la orden más antigua es demasiado voluminosa, se cierra una parte de la misma en su lugar.
12. Comprobaciones de seguridad. Se bloquea cualquier cierre que reabriría un nivel de inmediato; cada tramo se confirma en el historial de operaciones; los tramos fallidos se vuelven a intentar; y se descarta un plan si el libro de órdenes ha cambiado antes del envío.
13. Ciclo de cobertura, opcional. Desactivado por defecto y no se ha utilizado en nuestras pruebas. Cuando está activado, mantiene un par equilibrado en un símbolo elegido y lo retira en partes iguales, pagadas mediante un pequeño recargo sobre los cierres que la red ya realiza.
----------
Lo que se ve en el gráfico
El panel se sitúa a la izquierda y mantiene despejados el lado derecho y la escala de precios. Muestra el símbolo, el número mágico, un indicador de estado, el modo de rejilla, el paso de lotes, el espaciado, el resultado acumulado, el libro de órdenes, el plan de cierre de cada lado y la lista de órdenes. La fila DPO PULSE indica el periodo y la longitud de la señal, el DPO actual y la línea de señal en ATR, así como las barras transcurridas desde el último cruce. La fila SETTLE GUARD muestra el lado preferido, seguido de Settle, Gap, Stretch y Range, cada uno con las opciones OPEN, HOLD o desactivado, y, por último, el lado EMA. Los botones permiten alternar entre «Armed» (Armado) y «Scan only» (Solo escaneo), «Pause» (Pausa) y «Resume» (Reanudar), así como gestionar las marcas del gráfico y el «slicing». La tarjeta «Hedge Vault» está diseñada para acoplarse debajo del panel principal; al estar desactivada la cobertura, no aparecía en nuestras capturas de pantalla, por lo que no se comprobó su acoplamiento en tiempo real. No se dibuja nada en una prueba retrospectiva no visual.
----------
Tus límites
Ningún ajuste aquí cierra la operación por ti; los límites solo detienen nuevos niveles.
Cada orden pasa una comprobación de margen libre con un margen de seguridad antes de enviarse.
Los límites en los niveles por cuadrícula, las órdenes por lado y los lotes por orden mantienen la escalera finita. MinMarginLevelPercent y MaxAccountRiskPercent están desactivados por defecto; decídete por ellos para tu propia cuenta.
Una medida de seguridad opcional relacionada con el marco temporal del nivel de margen traslada la señal y el espaciado a un marco temporal superior a medida que desciende el margen. Está desactivada por defecto y no se aplicó en nuestras pruebas.
Las copias se mantienen separadas por símbolo y número mágico.
La función «Scan» solo muestra cada decisión sin enviar órdenes.
----------
A quién va dirigido
Te conviene si prefieres esperar a que una oscilación cambie de tendencia en lugar de perseguirla, como ocurre con muchas pequeñas empresas, y ajustará el tamaño de los lotes a tu saldo. No te conviene si necesitas un stop loss en cada orden, esperas una rentabilidad mensual fija o quieres dejar lotes grandes sin supervisión con un depósito reducido.
----------
Preguntas
¿Se repintan los datos? Las señales aceptadas, las marcas en el gráfico y ambas filas del panel utilizan únicamente barras completas.
¿El DPO mira hacia el futuro? No. La versión clásica del gráfico desplaza la media hacia el pasado; este EA compara cada cierre únicamente con una media de cierres anteriores.
¿En qué mercados se ha probado? EURUSD H1 y XAUUSD D1. El resto lo debes probar tú.
¿Qué debo ajustar primero? InpDPOStretchMax y, a continuación, InpDPOClimbMin. Cambia un parámetro cada vez y evalúa la caída máxima junto con el resultado neto.
¿Por qué hay tan pocas operaciones con oro? Los filtros y el margen de 30 barras dejan pocas oportunidades en un gráfico diario. Unos filtros menos estrictos dan lugar a más operaciones y a un mayor riesgo.
¿Puedo cambiar el periodo? Sí. Un periodo más corto reacciona antes y se cruzan las líneas con más frecuencia, así que revisa de nuevo los límites después.
¿Cuentas de compensación? Existe un límite de margen independiente para ellas, pero el comportamiento de la compensación no está verificado.
----------
Explicación de cada parámetro
Niveles de la rejilla
TradeMode: dos cuadrículas, COMPRA y VENTA, por defecto, o solo en una dirección.
GridSpacePoints: distancia entre niveles en el modo de espaciado fijo (25).
GridSpaceMultiplier: un valor superior a 1,0 amplía los niveles más profundos (1,0 = par).
MaxGridLevels: número máximo de niveles en una rejilla (1000).
UpDirectionIsBuy: en qué sentido se activa un movimiento alcista.
EAMagicNumber: número de las órdenes de rejilla (9754420).
GridOrderComment: texto de las órdenes de rejilla (GDPO).
OneOrderPerBar: como máximo un nuevo nivel por barra.
Lotes
InitialLotSize: volumen del primer nivel (0,01).
LotSizingMode: aditivo por defecto; multiplicativo como alternativa.
LotMultiplier: factor por nivel en modo multiplicativo (1,25).
LotAddStep: incremento por nivel en modo aditivo (0,01; 0 utiliza el lote inicial).
MaxOrderVolume: orden única más grande (1,0).
UseAutoLot: vincula el lote inicial al saldo (desactivado).
AutoLotBaseBalance: saldo que coincide con el lote inicial (1000).
AutoLotAllowDecrease: permite que el lote automático sea inferior al lote inicial (desactivado).
Espaciado ATR
GridSpacingMode: ATR por defecto; puntos fijos como alternativa.
ATRTimeframe: marco temporal del ATR (gráfico actual).
ATRPeriod: duración del ATR (14).
ATRSpacingFactor: espaciado como múltiplo del ATR (1,0).
ATRBarShift: barra ATR; 1 es la última barra completada.
ATRMinSpacingPts: espaciado mínimo en puntos (50; 0 = ninguno).
ATRMaxSpacingPts: espaciado máximo en puntos (5000; 0 = ninguno).
ATRFreezeOnStart: mantiene un único espaciado durante todo el ciclo (desactivado).
Objetivo de beneficio
DesiredProfitPerClosure: objetivo base en la divisa de la cuenta (2,0).
ProfitMultiplier: escala final, de 1,00 a 2,00.
ProfitTargetMode: escalado por defecto: los libros de órdenes más grandes y profundos apuntan a objetivos más altos.
ProfitVolumePower: cómo el volumen de cierre eleva el objetivo (1,0; 0 desactivado).
ProfitDepthBonus: objetivo adicional por cada nivel abierto adicional (0,10).
ProfitMaxMultiple: límite máximo del objetivo escalado en múltiplos de la base (50).
ProfitMaxReachFraction: mantiene el objetivo dentro de esta fracción de un paso de la cuadrícula (0,50).
Escáner de fragmentos
UseMultiLegScan: comprueba los grupos de órdenes múltiples antes que el par simple (activado).
MaxOldestLegs: el número máximo de órdenes antiguas en un cierre (3).
MaxNewestLegs: el número máximo de órdenes más recientes en un cierre (6).
ScanPriority: clasificación de los grupos que cumplen los requisitos; por defecto, el grupo más grande primero.
NeverBankLessThanPair: un grupo también debe superar el objetivo del par (activado).
RequireCloseVolumeExceedsTarget: el volumen más reciente debe ser superior al volumen más antiguo (activado).
MinCloseVolumeRatio: ratio requerido entre esos volúmenes (1,5).
División del objetivo
EnableTargetSlicing: permite el cierre parcial de la orden más antigua (activado).
FragProfitWeightPower: peso de las ganancias por lote cerrado (1,5).
FragMinSlicePercent: porción mínima, porcentaje de la orden objetivo (20).
FragAllowMultiCloser: varias órdenes nuevas pueden financiar una porción (activado).
FragPreferFullClosure: se da prioridad al cierre completo cuando ambas opciones son posibles (activado).
Protección contra reapertura
ReopenGuard: bloquea los cierres que reabrirían un nivel de una sola vez (basado en pasos).
ReopenGuardCushion: distancia de seguridad como porcentaje de un paso (0,90).
Protección de la cuenta
MinMarginLevelPercent: no se abren nuevos niveles por debajo de este nivel de margen (0, desactivado).
MaxAccountRiskPercent: no se establecen nuevos niveles más allá de esta pérdida flotante, expresada en porcentaje del saldo (0, desactivado).
NetMaxMarginPercent: solo para compensación; límite máximo del margen de la posición neta, porcentaje del capital propio (5,0).
MaxTotalOrders: límite absoluto de órdenes por lado (1000).
Ejecución y comprobaciones
RunMode: «Armed» (activado) o «Scan» (solo escaneo).
CloseSequence: orden en el que se envían las partes; por defecto, la más antigua primero.
MaxSlippagePoints: deslizamiento permitido (30).
MaxSpreadPoints: no se opera por encima de este spread (7500).
MinSecondsBetweenClosures: pausa entre cierres por cada lado (5).
CloseAttemptsPerLeg: intentos antes de pasar a la cola de reintentos (3).
VerifyTimeoutSeconds: tiempo durante el que se supervisa un tramo bloqueado (90).
DeferWhenMarketClosed: espera a que comience la sesión en lugar de detenerse (activado).
MarketClosedRetrySeconds: intervalo entre reintentos mientras se rechazan las órdenes (30).
AutoResumeAfterSeconds: una interrupción se restablece automáticamente tras este número de segundos (300; 0 espera a que actúes).
NoPartialRetryMinutes: los cierres parciales se vuelven a intentar tras este número de minutos tras un rechazo del bróker (15; 0: nunca).
AbortIfBookChanged: descarta un plan si cambia una parte de la operación (activado).
UseFullCommission: contabiliza la comisión en ambas partes (activado).
CommissionPerLot: valor por defecto (0: consulta el historial).
CloseOrderComment: texto al cerrar operaciones.
Ciclo de cobertura
EnableHedgeCycle: interruptor principal (desactivado).
Símbolos de cobertura: lista separada por comas; repite un símbolo para más turnos (XAGUSD).
Rotación de símbolos de cobertura: cómo se selecciona el siguiente símbolo (por ciclo).
HedgeMaxSymbolsInTester: límite de rotación solo en el simulador (2; 0 = ninguno).
HedgeCycleLots: lotes en cada lado del par (0,01).
HedgeSliceLots: lotes retirados por cada lado en cada tramo (0,01).
HedgeFragmentBonus: bonificación sobre el coste del tramo (100).
HedgeBonusIsPercent: la bonificación es un porcentaje; «false» significa dinero (activado).
HedgeMaxSurcharge: límite de dinero por cierre (0, ninguno).
HedgeMaxSurchargePercent: aumento máximo de cualquier objetivo de cierre, en porcentaje (50).
HedgeMagicNumber: número de las posiciones de cobertura; debe ser distinto de la cuadrícula (9754421).
HedgeReopenOnFinish: abre un nuevo ciclo cuando finaliza uno (activado).
HedgeStartRequiresTrade: el primer ciclo espera a una orden de la cuadrícula (activado).
HedgeIntegritySeconds: intervalo de comprobación del saldo de las posiciones (5).
HedgeAutoRepair: repara automáticamente una posición aislada (activado).
HedgeNakedAction: qué hacer con una posición aislada; por defecto, volver a cubrirla.
HedgeMaxSpreadPoints: límite del spread de cobertura (0: desactivado).
HedgeSlippagePoints: margen de deslizamiento de la cobertura (30).
HedgeAttemptsPerLeg: intentos por tramo de cobertura (3).
HedgeVerifyTimeout: tiempo de espera para una posición de cobertura bloqueada (90).
HedgeCommissionPerLot: comisión de cobertura por defecto (0: consulta el historial).
HedgeOrderComment: texto en las operaciones de cobertura.
Día de liquidación semanal
WeeklyCashDay: pausa los nuevos ciclos y franjas en torno a las retiradas (desactivado).
CashDayOfWeek: 0 para domingo, 1 para lunes, y así sucesivamente (1).
CashCutoffHour: hora del servidor a partir de la cual no se activan nuevas particiones (21).
Panel y gráfico
ShowPanel: panel activado o desactivado.
PanelX y PanelY: distancia desde el borde del gráfico (12, 15).
PanelFontSize: tamaño base del texto (9).
ShowArabic: línea de segundo idioma (activada).
ShowChartMarks: planos y niveles dibujados en el gráfico (activado).
MaxTableRows: número de filas por cuadrícula (13).
PanelCorner: esquina a la que está anclado el panel.
Desencadenante de entrada
EntryTriggerMode: la estrategia DPO por defecto.
SignalBarShift: 1 corresponde a la última barra completada.
SignalBarsDelay: barras entre señales aceptadas (30; 0 cada una).
SignalValidBars: barras durante las que una señal sigue siendo válida (3).
SignalAllowBuy y SignalAllowSell: activan o desactivan cada lado.
SignalReverse: invierte la dirección (desactivado).
Oscilador de precios sin tendencia
InpDPOPeriod: duración de la media eliminada del precio (20).
InpDPOSignal: longitud de la línea de señal EMA (9).
InpDPOClimbMin: Climb Guard: ganancia mínima del DPO en el ATR (0,2; 0 desactivado).
InpDPOClimbBars: Climb Guard: número de barras sobre las que se mide la ganancia (3).
InpDPOGapMin: protección contra brechas: distancia mínima respecto a la línea de señal en ATR (0,05; 0 desactivado).
InpDPOStretchMax - Stretch Guard: distancia máxima a la que el DPO puede encontrarse ya en el lado de la señal, en ATR (2,5; 0 desactivado).
InpDPOSettleBars - Protector de estabilización: barras en las que el DPO debe haberse mantenido en el otro lado antes del cruce (0 desactivado; prueba con 3).
InpDPORangeMinATR - Rango de protección: ancho mínimo de la ventana en ATR (5; 0 desactivado).
InpDPORangeBars - Protector de rango: longitud de la ventana en barras (20).
InpDPOATRPeriod - Duración del ATR para los filtros y la escala del DPO (14).
InpDPOTrendFilter - 1 a favor de la EMA, 2 en contra, 0 desactivado (1).
InpDPOTrendMAPeriod: duración de la EMA de tendencia (200).
InpShowSignalArrows: flecha que indica dónde se ha activado un ciclo (activado).
InpShowDPOOnChart: cruces anteriores en el gráfico en tiempo real (activado).
Depuración
DebugMode: detalles adicionales en el diario (desactivado).
Seguridad del margen en el marco temporal
UseMarginTFSafety: interruptor principal (desactivado).
Level1MarginPct y Level1TF: al alcanzar el 6000 %, el sistema pasa a M15.
Level2MarginPct y Level2TF: al alcanzar el 5000 %, la operación pasa a H1.
MarginTFHysteresisPct: recuperación necesaria antes de retroceder (500).
----------
Términos básicos sobre el riesgo
El trading en rejilla conlleva riesgos. Aumenta las posiciones perdedoras, no hay stop loss y una tendencia alcista puede mantener la posición abierta durante mucho tiempo o, con lotes demasiado grandes para el saldo, acabar en un stop-out y una pérdida considerable. El DPO se basa en una media y no puede predecir la siguiente barra. No se garantiza ningún beneficio. Utiliza lotes que puedan soportar una racha negativa, pruébalo con tu propio bróker y arriesga solo el dinero que puedas permitirte perder. No se necesitan DLL ni archivos adicionales.
Si lo utilizas, una reseña sincera sobre cómo te ha funcionado, ya sea positiva o negativa, ayudará al siguiente operador a tomar una buena decisión.
