Thursday, 5 October 2017

Algoritmos Forex


Algoritmos de tiempo Advertencia Ejecutar cBots descargados de esta sección puede resultar en pérdida de fondos. Usélos bajo su propio riesgo. Notificación La publicación de material protegido por derechos de autor está estrictamente prohibida. Si cree que hay material con derechos de autor en esta sección, puede usar el formulario de notificación de infracción de derechos de autor para presentar una reclamación. Cómo instalar cBots amp Indicadores Descargue el Indicador o cBot. Haga doble clic en el archivo descargado. Esto instalará todos los archivos necesarios en cAlgo. Encuentra el indicador / cbot que desea utilizar en el menú de la izquierda. Agregue una instancia del indicador / cBot para ejecutar. Descargar el indicador Haga doble clic en el archivo descargado. Esto instalará todos los archivos necesarios en cTrader. Seleccione el indicador de Custom en el menú de funciones (f) en el centro superior del gráfico. Introduzca los parámetros y haga clic en OK. Descripción Submited by Date Categoría Preview Descargas Comentarios Rating utilizando System using cAlgo. API namespace cAlgo. Indicators Output (R1, LineStyle LineStyle (R3, LineStyle LineStyle. Lines, Color Colors. Blue) public IndicatorDataSeries R3 Salida (S1, LineStyle) IndicatorDataSeries R3 Salida (S1, LineStyle) LineStyle. Lines, Color Colors. Red) public IndicatorDataSeries S1 Output (S2, LineStyle LineStyle. Lines, Color Colors. Red) public IndicatorDataSeries S2 Output (S3, PlotType PlotType. Line, LineStyle LineStyle. Lines, Color Colors. Red) public IndicatorDataSeries S3 región de endregion Parámetros de entrada Parámetro (Número de Pivots, DefaultValue 3, MinValue 1, MaxValue 3) public int Parámetro NoPiv (DrawWidth, DefaultValue 50, MaxValue 100) public int DrawWidth endregion override público void Calculate (int index) // Calculate High amp Bajo del día anterior si ((currentOpenTime. Day ayer. Day ampamp today. DayOfWeek DayOfWeek. Monday) (today. DayOfWeek DayOfWeek. Monday ampamp currentOpenTime. DayOfYear today. AddDays (-3).Day)) if (MarketSeries. Lowindex lt lower ) // Set Close del día anterior - Close of Last Bar del día prevous if (previousOpenTime. Day ayer. Day ampamp currentOpenTime. Day today. Day) // Mostrar sólo la salida en el tiempo actual si (currentOpenTime. Date today. Date) return // Calcular la salida Pivotindex (mayor cierre inferior) / 3 R1index 2Pivotindex - lower S1index 2Pivotindex - higher // Mostrar pivotes adicionales según la entrada if (NoPiv gt 2) if (NoPiv gt 3) 8 Tipos de estrategias algoritmos de Forex Publicado 2 años atrás Como prometido, heres la siguiente parte de mi serie sobre algoritmos de los sistemas de comercio de divisas. Cerciórese de que usted echa un vistazo a la primera parte de Lo que usted necesita saber acerca de Algo FX Trading antes de leer Este enfoque comercial por lo general apela a aquellos que buscan eliminar o reducir la interferencia emocional humana en la toma de decisiones comerciales. Después de todo, las señales de compra o venta se pueden generar usando un conjunto programado de instrucciones y se puede ejecutar directamente en su plataforma de negociación. Amazeballs Heres mi dinero ¿Dónde puedo firmar Mantenga sus caballos, los jóvenes padawan Poner su dinero duramente ganado de nuevo en su billetera y pasar un poco más de tiempo comprensión de comercio algorítmico en primer lugar. Para empezar, vamos a echar un vistazo a las diferentes clasificaciones de este enfoque comercial. Estrategias de negociación algorítmica Hay ocho tipos principales de comercio de algo basado en las estrategias utilizadas. Bastante abrumador, huh Por supuesto, usted puede mezclar y combinar estas estrategias también, lo que produce tantas combinaciones posibles. Una de las estrategias más simples es simplemente seguir las tendencias del mercado, con órdenes de compra o venta generadas sobre la base de un conjunto de condiciones cumplidas por indicadores técnicos. Esta estrategia también puede comparar datos históricos y actuales para predecir si es probable que las tendencias continúen o retrocedan. Otro tipo básico de estrategia de comercio de algo es el sistema de reversión media, que opera bajo la suposición de que los mercados están variando 80 del tiempo. Las cajas negras que emplean esta estrategia suelen calcular un precio promedio de los activos utilizando datos históricos y toman las operaciones en previsión de que el precio actual vuelva al precio promedio. Nunca intente el comercio de las noticias. Un sistema de comercio algorítmico basado en noticias suele estar conectado a los cables de noticias, generando automáticamente señales comerciales dependiendo de cómo resulten los datos reales en comparación con el consenso del mercado o los datos anteriores. Como has aprendido en nuestra lección de la Escuela sobre el sentimiento del mercado. El posicionamiento comercial y no comercial también se puede utilizar para identificar las partes superiores y los fondos del mercado. Estrategias Forex algo basado en el sentimiento del mercado puede implicar el uso del informe COT o un sistema que detecta posiciones cortas o largas netas extremas. Los enfoques más modernos también son capaces de escanear las redes de medios sociales para medir los sesgos monetarios. Ahora heres donde se hace un poco más complicado de lo habitual. Hacer uso del arbitraje en el comercio algorítmico significa que el sistema busca los desequilibrios de precios en diferentes mercados y hace que los beneficios de ellos. Puesto que las diferencias de precio de la divisa están generalmente en micropips sin embargo, youd necesitan negociar posiciones realmente grandes para hacer beneficios considerables. El arbitraje triangular, que implica dos pares de divisas y un cruce de divisas entre los dos, también es una estrategia popular bajo esta clasificación. 6. El comercio de alta frecuencia Como su nombre indica, este tipo de sistema de comercio opera a velocidades rápidas, la ejecución de comprar o vender señales y operaciones de cierre en cuestión de milisegundos. Estos suelen utilizar estrategias de arbitraje o scalping basado en fluctuaciones rápidas de precios e implica altos volúmenes de negociación. Esta es una estrategia empleada por grandes instituciones financieras que son muy secretos acerca de sus posiciones de divisas. En lugar de colocar una gran posición larga o corta con sólo un corredor, que romper su comercio en posiciones más pequeñas y ejecutar estos bajo diferentes corredores. Su algoritmo puede incluso permitir que estas órdenes comerciales más pequeñas se colocan en diferentes momentos para evitar que otros participantes del mercado descubran de esta manera, las instituciones financieras son capaces de ejecutar operaciones en condiciones normales de mercado sin fluctuaciones repentinas de precios. Los comerciantes al por menor que hacen un seguimiento de los volúmenes de negociación son capaces de ver sólo la punta del iceberg cuando se trata de estos grandes oficios. Si usted piensa que iceberging es furtivo, entonces la estrategia del sigilo es incluso más furtivo Iceberging ha sido una práctica común en los últimos años que los vigilantes del mercado hardcore fueron capaces de hackear esta idea y llegar a un algoritmo para reunir estos pedidos más pequeños y Averiguar si un gran jugador del mercado está detrás de todo. Como youve probablemente adivinado, se necesita un fondo sólido en análisis de mercado financiero y programación de computadoras para poder diseñar tales sofisticados algoritmos comerciales. Los analistas o quants cuantitativos se entrenan típicamente en la programación de C, de C, o de Java antes de que sean capaces de subir con los sistemas de negociación algorítmicos. No dejes que te desanime aunque Los primeros tres o cuatro tipos de estrategias de negociación algorítmica ya debe ser muy familiar para usted si ha estado negociando durante bastante tiempo o si era un estudiante diligente en nuestra Escuela de Pipsology. Esté atento a la siguiente parte de esta serie, ya que pienso dejarle entrar en los últimos desarrollos y el futuro de la negociación algorítmica FX. Hasta la próxima semana SnowCron algoritmo genético en sistemas de comercio FOREX utilizando algoritmo genético para crear rentable FOREX Trading Strategy. Algoritmo Genético en Cortex Redes Neuronales Software Feedforward Backpropagation Neural Network Aplicación para cálculos genéticos basados ​​en comercio de Forex. Este ejemplo utiliza conceptos e ideas del artículo anterior, por lo que lea el Algoritmo Genético de redes neuronales en FOREX Trading Systems en primer lugar, aunque no es obligatorio. Acerca de este texto En primer lugar, lea la cláusula de exención de responsabilidad. Este es un ejemplo de usar la funcionalidad de algoritmo genético del Software de redes neuronales de Cortex, no un ejemplo de cómo hacer negocios rentables. Yo no soy tu gurú, tampoco debería ser responsable de tus pérdidas. Cortex Neural Networks Software tiene redes neurales en él, y FFBP hemos discutido antes es sólo una forma de elegir una estrategia de comercio de divisas. Es una buena técnica, potente y cuando se aplica correctamente, muy prometedor. Sin embargo, tiene un problema - enseñar a la Red Neural. Necesitamos saber la salida deseada. Es bastante fácil de hacer cuando hacemos la aproximación de función, simplemente tomamos el valor real de una función, porque sabemos lo que debería ser. Cuando hacemos predicciones de redes neuronales. Utilizamos la técnica (descrita en artículos anteriores) de enseñar la Red Neural sobre la historia, de nuevo, si predecimos, digamos, un tipo de cambio, sabemos (durante el entrenamiento) cuál es la predicción correcta. Sin embargo, cuando estamos construyendo un sistema comercial, no tenemos idea de cuál es la decisión comercial correcta, incluso si sabemos el tipo de cambio. Como cuestión de hecho, tenemos muchas estrategias de compraventa de divisas que podemos utilizar en cualquier momento, y Necesitamos encontrar una buena - cómo ¿Qué debemos alimentar como la salida deseada de nuestra red neuronal Si siguió nuestro artículo anterior, usted sabe, que hemos engañado para hacer frente a este problema. Enseñamos a la Red Neural para hacer la predicción del tipo de cambio (o indicador basado en el tipo de cambio) y luego utilizamos esta predicción para hacer el comercio. Luego, fuera de la parte de la Red Neural del programa, tomamos una decisión sobre qué Red Neural es la mejor. Algoritmos genéticos pueden hacer frente a este problema directamente, pueden resolver el problema declarado como encontrar las mejores señales comerciales. En este artículo vamos a utilizar Cortex Neural Networks Software para crear un programa de este tipo. Usando el Algoritmo Genético Los Algoritmos Genéticos están muy bien desarrollados, y muy diversos. Si quieres aprender todo sobre ellos, te sugiero que utilices Wikipedia, ya que este artículo trata solo de lo que puede hacer el software de Redes Neuronales Cortex. Tener software de redes neuronales de corteza. Podemos crear una Red Neural que toma algo de entrada, digamos, los valores de un indicador, y produce algo de salida, digamos, señales comerciales (comprar, vender, mantener) y detener la pérdida / tomar los niveles de beneficios para las posiciones que se abren. Por supuesto, si sembramos estos pesos de la Red Neural al azar, los resultados comerciales serán terribles. Sin embargo, digamos que creamos una docena de tales NN. Entonces podemos probar el rendimiento de cada uno de ellos, y elegir el mejor, el ganador. Esta fue la primera generación de NNs. Para continuar a la segunda generación, tenemos que permitir que nuestro ganador para procrear, pero para evitar copias idénticas, vamos a añadir algún ruido al azar a sus pesos descententes. En la segunda generación, tenemos a nuestro ganador de primera generación ya sus copias imperfectas (mutadas). Vamos a hacer las pruebas de nuevo. Tendremos otro ganador, que es MEJOR entonces cualquier otra Red Neural en la generación. Y así. Simplemente permitimos que los ganadores se reproduzcan y eliminen a los perdedores, al igual que en la evolución de la vida real, y obtendremos nuestra Red Neural de mejor comercio. Sin ningún conocimiento previo sobre qué debería ser el sistema comercial (algoritmo genético). Algoritmo Genético de Red Neural: Ejemplo 0 Este es el primer ejemplo de algoritmo genético. Y una muy simple. Vamos a caminar paso a paso para aprender todos los trucos que usarán los siguientes ejemplos. El código tiene comentarios en línea, así que solo debemos enfocar momentos clave. En primer lugar, hemos creado una red neuronal. Está utilizando pesos al azar, y todavía no se enseñó. Luego, en ciclo, hacemos 14 copias de ella, usando MUTATIONNN fumction. Esta función hace una copia de una red neuronal de origen. Añadiendo valores aleatorios de 0 a (en nuestro caso) 0,1 a todos los pesos. Mantenemos las manijas a 15 NNs resultantes en una matriz, podemos hacerlo, ya que handle es sólo un número entero. La razón por la que usamos 15 NNs no tiene nada que ver con el comercio: Cortex Neural Networks Software puede trazar hasta 15 líneas en un gráfico simultáneamente. Podemos utilizar diferentes enfoques para la prueba. En primer lugar, podemos utilizar el conjunto de aprendizaje, todo de una vez. En segundo lugar, podemos probar, por ejemplo, 12000 resordes (de 100000), y caminar a través del conjunto de aprendizaje, desde el principio hasta el final. Esto hará que los conocimientos sean diferentes, ya que buscaremos redes neuronales que sean rentables en cualquier parte de los datos, no sólo en el conjunto. El segundo enfoque puede darnos problemas, si los datos cambian, desde el principio hasta el final. A continuación, la red evolucionará, obteniendo la capacidad de negociar al final del conjunto de datos, y la pérdida de la capacidad de comercio en su inicio. Para resolver ese problema, vamos a tomar 12000 registros aleatorios fragmentos de datos, y lo alimentan a la Red Neural. Es simplemente un ciclo sin fin, ya que 100000 ciclos nunca serán alcanzados a nuestra velocidad. A continuación, agregamos un niño por cada red, con pesos ligeramente diferentes. Tenga en cuenta, que 0,1 para mutación tange no es la única opción, como cuestión de hecho, incluso este parámetro puede ser optimizado mediante el algoritmo genético. Los NNs recién creados se añaden después de los ya existentes. De esta manera tenemos 30 NNs en una matriz, 15 viejos y 15 nuevos. Entonces vamos a hacer el siguiente ciclo de pruebas, y matar a los perdedores, de ambas generaciones. Para hacer las pruebas, aplicamos la Red Neural a nuestros datos, para producir salidas, y luego llamar a la función de Prueba, que utiliza estas salidas para simular la negociación. Los resultados de la negociación se utilizan para deside, que NNs son los mejores. Utilizamos un intervalo de registros nLearn, desde nStart hasta nStart nLearn, donde nStart es un punto aleatorio dentro del conjunto de aprendizaje. El siguiente código es un truco. La razón por la que lo usamos es para ilustrar el hecho de que el algoritmo genético puede crear algoritmos genéticos. Pero no necesariamente será el mejor, y también, para sugerir, que podemos mejorar el resultado, si implicamos algunas limitaciones al proceso de aprendizaje. Es posible, que nuestro sistema de comercio funciona muy bien en los oficios largos, y muy pobre en corto, o viceversa. Si, por ejemplo, las operaciones largas son MUY buenas, este algoritmo genético puede ganar, incluso con grandes pérdidas en operaciones cortas. Para evitarlo, asignamos más peso a las operaciones largas en operaciones impares y cortas en ciclos pares. Esto es sólo un ejemplo, no hay garantía, que mejorará algo. Más abajo, en la discusión sobre correcciones. Técnicamente, usted no tiene que hacerlo, o puede hacerlo de manera diferente. Añada beneficios a una matriz ordenada. Devuelve una posición de inserción, entonces usamos esta posición para agregar el identificador de red neuronal, aprendiendo y probando beneficios a arrays no ordenados. Ahora tenemos datos para la red neuronal actual en el mismo índice de matriz que su beneficio. La idea es llegar a la matriz de NNs, ordenados por la rentabilidad. Dado que la matriz se clasifica por beneficios, para eliminar la mitad de las redes, que son menos rentables, sólo tenemos que quitar NNs 0 a 14 Las decisiones comerciales se basan en el valor de la señal de red neuronal, desde este punto de vista el programa es idéntico a Ejemplos del artículo anterior. FOREX Trading Strategy: Discusión del ejemplo 0 En primer lugar, echemos un vistazo a los gráficos. El primer gráfico de ganancia durante la primera iteración no es bueno en absoluto, como era de esperar, la Red Neural pierde dinero (image evolution00gen0.png copiada después de la primera iteración de la carpeta de imágenes): La imagen para obtener ganancias en el ciclo 15 es mejor, a veces , El algoritmo genético puede aprender muy rápido: Sin embargo, observe la saturación en una curva de beneficio. Es interesante también mirar la forma en que los beneficios individuales cambian, teniendo en cuenta, que el número de la curva, por ejemplo, 3 no es siempre para la misma Red Neural. Ya que están naciendo y terminó todo el tiempo: También tenga en cuenta, que poco forex sistema de comercio automatizado realiza pobres en operaciones cortas, y mucho mejor en largos, que pueden o no estar relacionados con el hecho de que el dólar estaba cayendo en comparación con Euros durante ese período. También puede tener algo que ver con los parámetros de nuestro indicador (tal vez, necesitamos período diferente para los cortos) o la elección de los indicadores. Aquí está la historia después de 92 y 248 ciclos: Para nuestra sorpresa, el algoritmo genético falló completamente. Vamos a tratar de averiguar por qué, y cómo ayudar a la situación. En primer lugar, no cada generación se supone que es mejor que el previuos La respuesta es no, al menos no dentro del modelo que utilizamos. Si tomamos ENTIRE el aprendizaje fijado de una vez, y lo usamos repetidamente para enseñar a nuestros NNs, entonces sí, ellos mejorarán en cada generación. Pero en su lugar, tomamos fragmentos aleatorios (12000 registros en el tiempo), y los usamos. Dos preguntas: ¿por qué el sistema fracasó en fragmentos aleatorios del conjunto de aprendizaje, y por qué no hemos utilizado conjunto de aprendizaje conjunto Bueno. Para responder a la segunda pregunta, lo hice. NNs se desempeñó mucho - en el conjunto de aprendizaje. Y no en el conjunto de pruebas, por la misma razón que falla cuando utilizamos FFPB aprendizaje. Para decirlo de otra manera, nuestros NNs se sobre-especializados, aprendieron a sobrevivir en el ambiente al que están acostumbrados, pero no fuera de él. Esto sucede mucho en la naturaleza. El enfoque que tomamos en su lugar fue la intención de compensar eso, al obligar a NNs a realizar buenos en cualquier fragmento al azar del conjunto de datos, por lo que esperamos, también podría realizar en un conjunto de pruebas desconocido. En su lugar, fallaron en las pruebas y en el conjunto de aprendizaje. Imagínense animales, viviendo en un desierto. Un montón de sol, no hay nieve en absoluto. Este es un metafor para rizing mercado, como para nuestros datos NNs desempeñar el papel del medio ambiente. Los animales aprendieron a vivir en un desierto. Imagínense animales, que viven en un clima frío. Nieve y no hay sol. Bueno, se ajustaron. Sin embargo, en nuestro experimento, colocamos aleatoriamente nuestras NN en un desierto, en la nieve, en el agua, en los árboles. Presentándolos con diferentes fragmentos de datos (aleatoriamente subiendo, bajando, planos). Los animales murieron. O, para decirlo de otra manera, hemos seleccionado la mejor red neuronal para el conjunto de datos aleatorios 1, que, digamos, era para el mercado en alza. Luego presentamos, a los ganadores ya sus hijos, una caída de los datos de los mercados. NNs se desempeñó mal, que tomó mejor de los artistas pobres, tal vez, uno de los niños mutantes, que perdió la capacidad de comercio en el mercado en alza, pero tiene cierta capacidad para hacer frente a la caída de uno. Entonces volvimos la mesa otra vez, y otra vez, conseguimos el mejor ejecutante - pero el mejor entre los ejecutantes pobres. Simplemente no dimos a nuestros NNs ninguna posibilidad de convertirse en universal. Hay técnicas que permiten que el algoritmo genético aprenda nueva información sin perder el rendimiento en la información antigua (después de todo, los animales pueden vivir en verano y en invierno, así que la evolución es capaz de manejar los cambios repetitivos). Podemos discutir estas técnicas más adelante, aunque este artículo es más sobre el uso de Cortex Neural Networks Software. Que sobre la construcción de un exitoso sistema de comercio automatizado forex. Algoritmo Genético de la Red Neural: Ejemplo 1 Ahora es el momento de hablar sobre las correcciones. Un algoritmo genético simple que creamos durante el paso anterior tiene dos defectos importantes. En primer lugar, fracasó en el comercio con el beneficio. Está bien, podemos intentar utilizar un sistema parcialmente entrenado (fue rentable al principio). El segundo defecto es más grave: no tenemos control sobre las cosas, que este sistema hace. Por ejemplo, puede aprender a ser rentable, pero con grandes reducciones. Es un hecho bien conocido, que en la vida real, la evolución puede optimizar más de un parámetro simultáneamente. Por ejemplo, podemos obtener un animal, que puede correr rápido y ser resistente al frío. ¿Por qué no intentar hacer lo mismo en nuestro sistema de comercio automatizado forex. Eso es cuando usamos correcciones, que no son más que el conjunto de castigos adicionales. Digamos, nuestro sistema negocia con drawdown 0.5, mientras que queremos confirmarlo a 0 - 0.3 intervalo. Para decirle al sistema que cometió un error, disminuimos su beneficio (uno usado para determinar, que algoritmo genético ganó) hasta el grado, que es proporcional al tamaño de DD. Entonces, el algoritmo de evolución cuida el resto. Hay pocos factores más, que queremos tener en cuenta: podemos querer tener más o menos el mismo número de operaciones de compra y venta, queremos tener más operaciones rentables, luego de fracasos, tal vez queramos que el gráfico de ganancias Ser lineal y así sucesivamente. En evolution01.tsc implementamos un conjunto simple de correcciones. En primer lugar, utilizamos un gran número para un valor de corrección inicial. Lo multiplicamos a un valor pequeño (usualmente, entre 0 y 1), dependiendo del castigo que queramos aplicar. Entonces multiplicamos nuestro beneficio a esta corrección. Como resultado, el beneficio es corregido, para reflejar cuánto el algoritmo genético corresponde a nuestros otros criterios. Luego usamos el resultado para encontrar una red neuronal ganadora. FOREX Trading Strategy: Discutir el ejemplo 1 El ejemplo 1 funciona mucho mejor que el ejemplo 0. Durante los primeros 100 ciclos, aprendió mucho y los gráficos de beneficios parecen tranquilizadores. Sin embargo, como en el ejemplo 0, las operaciones largas son mucho más rentables, lo que probablemente significa que hay un problema en nuestro enfoque. Sin embargo, el sistema encontró un equilibrio entre un par de condiciones iniciales contradictorias: Hay una dinámica positiva tanto en el conjunto de aprendizaje y, más importante, en el conjunto de pruebas. En cuanto al aprendizaje adicional, en el ciclo 278 podemos ver, que nuestro sistema se sobreentrenó. Significa, todavía tenemos progreso en el conjunto de aprendizaje: Pero el conjunto de pruebas muestra debilidad: Este es un problema común con NNs: cuando lo enseñamos en el conjunto de aprendizaje, aprende a tratar con él, ya veces, aprende demasiado bien - a la Grado, cuando pierde el rendimiento en el conjunto de pruebas. Para hacer frente a ese problema, se utiliza una solución tradicional: seguimos buscando la Red Neural. Que funciona mejor en el conjunto de pruebas, y guardarlo, sobrescribiendo el anterior mejor, cada vez que se alcanza un nuevo pico. Este es el mismo enfoque, que usamos en el entrenamiento FFBP, excepto, esta vez tenemos que hacerlo nosotros mismos (añadir código, que busca una mejor red neuronal en un conjunto de pruebas, y llamando a SAVENN, o la exportación de pesos de la red neuronal a un archivo). De esta manera, cuando deje de entrenar, tendrá el mejor intérprete en el juego de prueba guardado y esperando por usted. Tenga en cuenta también, que no es el máx. Beneficio que buscas, pero el rendimiento óptimo, por lo que considerar el uso de correcciones, cuando se busca un mejor desempeño en un conjunto de pruebas. Algoritmo genético para FOREX Análisis técnico: ¿Dónde ahora? Después de obtener su ganador Neural Network. Puede seguir los pasos, descritos en el artículo anterior, para exportar pesos de esa Red Neural. Y luego utilizarlos en su plataforma de comercio en tiempo real, como Meta Trader, Trade Station y así sucesivamente. Alternativamente, puede centrarse en otras formas de optimizar la Red Neural. A diferencia del algoritmo FFBP, aquí puede obtener avay de usar conjuntos de aprendizaje y pruebas y mover el aprendizaje secuencial. Descargar Cortex Order Cortex Ver lista de precios La visibilidad es muy importante para este sitio. Si te gusta, puedes acceder a esta URL.

No comments:

Post a Comment