hola a todos, alguien me puede ayudar a crear un sistema automático con dicha media. He intentado hacer un sistema pero luego no ejecuta las òrdenes en el momento justo y no entiendo el porqué.
Hola josemi, eso es porque ProOrder no reconoce la Media Móvil de Hull a la hora de construir una estrategia con el asistente y la trata como una Media Móvil Simple. Por lo tanto, tienes que cambiar el código haciendo una llamada al indicador de la Media Movil de Hull que debes de instalar en tu librería de indicadores.
Te dejo el enlace al indicador que ya publicó un usuario en la Libreria: https://www.prorealcode.com/prorealtime-indicators/hull-moving-average/
ya instalé esa media de Hull y estoy estancado…me puedes ayudar con la programacion, o qué orden en concreto tengo que escribir, si no es mucho pedir…
Proporcione una descripción completa (con capturas de pantalla si es posible) de la estrategia que desea codificar. De lo contrario, sería difícil saber exactamente qué hacer. 🙂
Hola Josemi, te voy a dejar el indicador de la Media Móvil de Hull (MMH) modificado para que puedas configurar el color cuando indica compra o cuando indica venta. También te dejo un ejemplo de lo que sería un código simple con la MMH. Compra cuando el precio cruza al alza la MMH y venta cuando el precio cruza a la baja la MMH.
En la imagen que te adjunto verás como efectivamente se ejecutan las ordenes cuando el precio cruza con la MMH.
Un saludo.
// Definición de los parámetros del código
DEFPARAM CumulateOrders = False // Acumulación de posiciones desactivada
// Condiciones para entrada de posiciones largas
indicator1 = CALL "Hull Moving Average"[16]
c1 = (close CROSSES OVER indicator1)
IF c1 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Condiciones de entrada de posiciones cortas
indicator2 = CALL "Hull Moving Average"[16]
c2 = (close CROSSES UNDER indicator2)
IF c2 THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
Si tu estrategia de trading lo que busca es un cruce entre dos MMH con diferentes periodos, debes de configurar dos indicadores MMH con periodos distintos. Te dejo un ejemplo donde puedes observar que efectivamente se abre una operación de compra después de un cruce al alza de la MMH de periodo corto con respecto a la MMH con periodo largo, y esta operación se cierra cuando el cruce de la MMH de periodo corto es a la baja con respecto a la MMH de periodo largo.
Un saludo.
Hola Jesús, yo simplemente quiero crear un sistema en donde me compre cuando la media de hull sea positiva(verde) y salga de dicha posicion cuando sea negativa (roja) respecto al periodo anterior. He probado lo que me has pasado y no me deja validarlo, y no sé lo que es. Y luego si creo un sistema en grafico diario, tengo que activar la casilla de tick por tick para el backtest??
me he dado cuenta de que el ejemplo que me mandaste consistía en que compraba (largos) cuando el precio cruza la media Hull al alza y vendía (cortos) cuando la cruza a la baja y la idea es que compre cuando la media sea positiva respecto a su periodo anterior y venda cuando la media sea negativa respecto a su periodo anterior. Y no soy capaz de escribir el código. Por favor ayudaaaaa :)))
Para lo que pides creo que el código correcto sería lo siguiente:
// Definición de los parámetros del código
DEFPARAM CumulateOrders = False // Acumulación de posiciones desactivada
// Condiciones para entrada de posiciones largas
MMH = CALL "Hull Moving Average"[16]
Verde = (MMH > MMH[1])
Rojo = (MMH < MMH[1])
IF Verde THEN
BUY 1 CONTRACT AT MARKET
ENDIF
IF Rojo THEN
SELL 1 CONTRACT AT MARKET
ENDIF
El único problema que veo a lo que propones es que con el lanzamiento de orden por el cambio de color, la orden entra una vela más tarde que con el cruce del precio al cierre, porque la MMH reacciona al movimiento de precio algo más tarde.
Debes de instalarte previamente el indicador “Hull Moving Average” que te adjunté, para que el backtest funcione, porque hace una llamada CALL al indicador, si no lo tienes instalado con el mismo nombre, la llamada no lo reconoce.
hola de nuevo Jesús, instalo el indicador como me dijiste (le llamo igual que dice el indicador: Hull Moving Average) y cuando escribo el sistema no reconoce la llamada CALL. Me dice esto:
error de sintaxis: la funcion “Hull Moving Average” llamada desde mi sistema es llamada con un parametro(s) en lugar de 0 esperados.
Me puedes ayudar Jesús. por cierto. parece que funciona mejor el sistema con el cruce del precio a la media como tu decías. Gracias.
ya he encontrado el fallo, resulta que en el codigo ponía además del indicador de la media de Hull, el numero de periodos y al borrar el número (16) se pudo validar el sistema.
hola Jesús, el código último que me enviaste de la media Hull :
|
|
// Definición de los parámetros del código
DEFPARAM CumulateOrders = False // Acumulación de posiciones desactivada
// Condiciones para entrada de posiciones largas
MMH = CALL “Hull Moving Average”
Verde = (MMH > MMH[1])
Rojo = (MMH < MMH[1])
IF Verde THEN
BUY 1 CONTRACT AT MARKET
ENDIF
IF Rojo THEN
SELL 1 CONTRACT AT MARKET
ENDIF
|
solamente entra en largos y no entiendo el porqué, si me puedes ayudar te lo agradezco