Trabajo finalizado
Tarea técnica
Hola,
Quisiera un EA para MT5 que permita realizar operaciones en largo y en corto sobre distintos activos (especialmente futuros como el MES...), basándose en la Pendiente de una Media Móvil (Exponencial). Si la pendiente es positiva abre una posición de compra y la mantiene mientras la pendiente sea positiva, cuando la pendiente pase a ser negativa cierra la posición. Alternativamente, si la pendiente es negativa abre una posición corta y la mantiene mientras la pendiente siga siendo negativa. Cuando la pendiente pase a positiva cierra la posición corta.
Es decir, al cierre de cada vela, el algoritmo debería calcular la pendiente que tiene la media móvil en ese momento. Esa pendiente deberá ser calculada teniendo en cuenta el valor de la EMA al cierre de esa última vela, y las N velas anteriores. Siendo N un valor que yo deberé introducir (que podrá ser 1, 2, 3...).
Los parámetros de entrada que podrán ser seleccionados por mí serán: Instrumento financiero (MES, RTY, FDXSH23..., sin limitación de nº de caracteres) // Nº de contratos (1, 2,...) // Periodo de la Media Móvil Exponencial (1, 2, 3..., 10,...) // Nº de velas a tener en cuenta para calcular la pendiente de la EMA (1, 2.., 10..) // Nº mínimo de ticks de diferencia entre la EMA de la última vela y la EMA de la primera vela de la secuencia de N velas anteriores (1, 2, ..10,..) // Take Profit Sí/No y Nº ticks // Stop Loss Sí/No y Nº ticks // Trailing Stop Loss Sí/No y Nº de ticks.
Ejemplo: MES //2 contratos // Periodo EMA 10 // 5 velas // mínimo de 4 ticks de diferencia entre la ultima EMA y la EMA de la vela -5 (en este ejemplo) // Take profit SÍ con 20 ticks // Stop Loss SÍ con 10 ticks // Trailing Stop Loss SÍ con 5 ticks.
El funcionamiento sería el siguiente:
(Nota: voy a utilizar abreviaturas para algunas variables, son sólo abreviaturas, no funciones).
1.- Iniciar el algoritmo con los parámetros de entrada:- símbolo del instrumento financiero (INS)
- nº de contratos (NC)
- período de la media móvil (PER)
- nº de velas anteriores a la actual a tener en cuenta para calcular la pendiente de la EMA (N)
- nº mínimo de ticks de diferencia entre la EMA de la última vela y la EMA de la vela -N (MinDifEMA) para disparar la orden
- Take Profit Sí/No y nº de ticks
- Stop Loss Sí/No y nº de ticks
- TSL Sí/No y nº de ticks.
2.- Obtener el valor de la EMA según el periodo PER para la vela actual (EMA(0)) y las N velas anteriores. Es decir EMA(0), EMA(-1), EMA(-2),...EMA(-N).
3.- En caso de que (ambas condiciones):
A) EMA(0)>EMA(-1)>EMA(-2)>...>EMA(-N), y además
B) EMA(0)-EMA(-N)>=MinDifEMA, entonces:
- Abrir para el instrumento financiero INS una posición larga con NC unidades, con el Take Profit, Stop Loss y Trailing Stop Loss correspondientes según los parámetros introducidos.
- Actualizar el cálculo descrito en el paso 2 con cada nueva vela.
- Mantener la posición larga mientras se siga cumpliendo la condición A (sólo la condición A, no la B).
- Cerrar la posición cuando deje de cumplirse la condición A (salvo que haya saltado por TP, SL o TSL, por supuesto).
4.- En caso de que (ambas condiciones):
A) EMA(0)<EMA(-1)<EMA(-2)<...<EMA(-N), y además
B) EMA(-N)-EMA(0)>=MinDifEMA, entonces:
- Abrir para el instrumento financiero INS una posición corta con NC unidades, con el Take Profit, Stop Loss y Trailing Stop Loss correspondientes según los parámetros introducidos.
- Actualizar el cálculo descrito en el paso 2 con cada nueva vela.
- Mantener la posición corta mientras se siga cumpliendo la condición A (sólo la condición A, no la B).
- Cerrar la posición cuando deje de cumplirse la condición A (salvo que haya saltado por TP, SL o TSL, por supuesto).
5.- Mantener el EA activo hasta que yo lo interrumpa.