SISTEMA CON MEDIAS MOVILES DE 10 Y 35
Forums › ProRealTime foro Español › Soporte ProOrder › SISTEMA CON MEDIAS MOVILES DE 10 Y 35
- This topic has 5 replies, 2 voices, and was last updated 6 years ago by Nuria.
-
-
07/03/2018 at 8:28 AM #75117
Hola. Buenos dias. Estoy probando un sistema con medias móviles de 15 y 35. El sistema es sencillo. Es un sistema contratendencia, y consiste en comprar cuando el precio está por debajo de ambas medias y vender cuando está por encima. En la plataforma de prueba de pro-realtime va bastante bien. El problema está al usarla en IG, ya que los spreads se cargan la estrategia. Os voy a enviar mi código actual y a ver si alguien me puede ayudar a cambiar lo siguiente, que creo que solucionaría el problema: necesito que la orden de compra o venta no sea a mercado, sino en el mismo punto donde empieza la siguiente vela. De esta forma se perderán algunas ordenes, ya que con el spread habrá veces que no se comprará o venderá, pero serán solo algunas, ya que la mayoria de las veces el precio retrocede lo suficiente como para que la operación se dé. Os envío mi código actual. Gracias de antemano.
SISTEMA CON DOS MEDIAS MOVILES A CONTRATENDENCIA12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849// Definición de los parámetros del códigoDEFPARAM CumulateOrders = False // Acumulación de posiciones desactivada// Impide al sistema operar en días precisos de la semanadaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0// Condiciones para entrada de posiciones largasindicator1 = ExponentialAverage[14](close)c1 = (close < indicator1)indicator2 = ExponentialAverage[35](close)c2 = (close < indicator2)IF (c1 AND c2) AND not daysForbiddenEntry THENBUY 1 SHARES AT MARKETENDIF// Condiciones de salida de posiciones largasindicator3 = ExponentialAverage[14](close)c3 = (close > indicator3)indicator4 = ExponentialAverage[35](close)c4 = (close > indicator4)IF c3 AND c4 THENSELL AT MARKETENDIF// Condiciones de entrada de posiciones cortasindicator5 = ExponentialAverage[14](close)c5 = (close > indicator5)indicator6 = ExponentialAverage[35](close)c6 = (close > indicator6)IF (c5 AND c6) AND not daysForbiddenEntry THENSELLSHORT 1 SHARES AT MARKETENDIF// Condiciones de salida de posiciones cortasindicator7 = ExponentialAverage[14](close)c7 = (close < indicator7)indicator8 = ExponentialAverage[35](close)c8 = (close < indicator8)IF c7 AND c8 THENEXITSHORT AT MARKETENDIF// Stops y objetivosSET STOP pLOSS 10SET TARGET pPROFIT 1007/03/2018 at 8:55 AM #75120Hola Nuria,
Creo que no se puede abrir posición con el precio de inicio de vela puesto que en PRT el código se ejecuta al final de cada vela pero sí se puede hacer al precio de cierre de la vela anterior que normalmente será casi igual salvo en el caso de velas de 1 día o mayores que puede haber gaps.
Si quieres abrir posición con el precio de cierre de la vela debes sustituir el comando BUY/SELLSHORT AT MARKET por BUY/SELLSHORT AT CLOSE LIMIT.
Como bien dices con esta opción te ahorras el spread (y también el posible slippage) pero tiene la desventaja de que algunas operaciones no llegarán a ejecutarse, normalmente las mejores. Yo he hecho pruebas con esta opción en mis sistemas y mi conclusión es que merece la pena cuando son sistemas que realizan bastantes operaciones aunque te aviso que a veces te llevarás grandes disgustos por operaciones muy buenas que no se ejecutan.
Otra opinión personal es que si un sistema depende del spread para ser rentable no es muy interesante, en esta misma página encontrarás sistemas que tienen, al menos en backtest, una rentabilidad mucho mayor.
Buena suerte
1 user thanked author for this post.
07/03/2018 at 9:34 AM #7513407/05/2018 at 8:58 AM #75262A ver si alguien me puede ayudar con otro problema. Ahora mismo la estrategia funciona de la siguiente manera. Cuando el precio está por debajo de las dos medias, compra. Y cuando el precio está por encima de las dos medias, vende. Pero cuando hay una subida importante cada vez que salta el stop (10 p), vuelve a hacer otra compra u otra venta, y si sigue subiendo, otra. Esto se carga la estrategia. necesito poner una orden para que cuando salte el stop, no se vuelva a hacer otra compra hasta que el precio este por debajo de las dos medias. O sea, una vz que salte el stop, la siguiente operación tiene que ser en sentido contrario. Si salta el stop cuando estoy en compra, ya no vuelvo a entrar hasta que el precio esté por debajo de las dos medias, que sería en venta. Os mando el código tal y como está ahora mismo.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748// Definición de los parámetros del códigoDEFPARAM CumulateOrders = False // Acumulación de posiciones desactivada// Impide al sistema operar en días precisos de la semanadaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0// Condiciones para entrada de posiciones largasindicator1 = ExponentialAverage[14](close)c1 = (close < indicator1)indicator2 = ExponentialAverage[35](close)c2 = (close < indicator2)IF (c1 AND c2) AND not daysForbiddenEntry THENBUY 1 CONTRACT AT CLOSE LIMITENDIF// Condiciones de salida de posiciones largasindicator3 = ExponentialAverage[14](close)c3 = (close > indicator3)indicator4 = ExponentialAverage[35](close)c4 = (close > indicator4)IF c3 AND c4 THENSELL AT CLOSE LIMITENDIF// Condiciones de entrada de posiciones cortasindicator5 = ExponentialAverage[14](close)c5 = (close > indicator5)indicator6 = ExponentialAverage[35](close)c6 = (close > indicator6)IF (c5 AND c6) AND not daysForbiddenEntry THENSELLSHORT 1 CONTRACT AT CLOSE LIMITENDIF// Condiciones de salida de posiciones cortasindicator7 = ExponentialAverage[14](close)c7 = (close < indicator7)indicator8 = ExponentialAverage[35](close)c8 = (close < indicator8)IF c7 AND c8 THENEXITSHORT AT CLOSE LIMITENDIF// Stops y objetivosSET STOP pLOSS 1007/05/2018 at 9:51 AM #75270Hay varias formas de lidiar con el problema que tienes, la que me parece más sencilla es creando una variable para que no entre más de una vez seguida en un solo sentido. Quedaría así:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253// Definición de los parámetros del códigoDEFPARAM CumulateOrders = False // Acumulación de posiciones desactivada// Impide al sistema operar en días precisos de la semanadaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0//Variable para NO entrar mas de una vez seguida en el mismo sentidoONCE ULTIMAENTRADA=0// Condiciones para entrada de posiciones largasindicator1 = ExponentialAverage[14](close)c1 = (close < indicator1)indicator2 = ExponentialAverage[35](close)c2 = (close < indicator2)IF ULTIMAENTRADA<>1 AND c1 AND c2 AND not daysForbiddenEntry THENBUY 1 CONTRACT AT CLOSE LIMITULTIMAENTRADA=1ENDIF// Condiciones de salida de posiciones largasindicator3 = ExponentialAverage[14](close)c3 = (close > indicator3)indicator4 = ExponentialAverage[35](close)c4 = (close > indicator4)IF c3 AND c4 THENSELL AT CLOSE LIMITENDIF// Condiciones de entrada de posiciones cortasindicator5 = ExponentialAverage[14](close)c5 = (close > indicator5)indicator6 = ExponentialAverage[35](close)c6 = (close > indicator6)IF ULTIMAENTRADA<>-1 AND c5 AND c6 AND not daysForbiddenEntry THENSELLSHORT 1 CONTRACT AT CLOSE LIMITULTIMAENTRADA=-1ENDIF// Condiciones de salida de posiciones cortasindicator7 = ExponentialAverage[14](close)c7 = (close < indicator7)indicator8 = ExponentialAverage[35](close)c8 = (close < indicator8)IF c7 AND c8 THENEXITSHORT AT CLOSE LIMITENDIF// Stops y objetivosSET STOP pLOSS 101 user thanked author for this post.
07/05/2018 at 10:21 AM #75276 -
AuthorPosts
Find exclusive trading pro-tools on