Tuesday 21 November 2017

Forex Trading Php Script


Forex Trading FXCM Un corredor de Forex líder Forex Forex es el mercado donde operan todas las divisas del mundo. El mercado de divisas es el mercado más grande y más líquido del mundo con un volumen diario de operaciones promedio superior a 5,3 billones de dólares. No hay intercambio central ya que se negocia sobre el mostrador. El comercio de divisas le permite comprar y vender divisas, similar al comercio de acciones, excepto que usted puede hacerlo las 24 horas del día, cinco días a la semana, tiene acceso a márgenes de comercio, y ganar exposición a los mercados internacionales. FXCM es una agencia de corretaje forex líder. Ejecución Justa y Transparente Desde 1999, FXCM se ha propuesto crear la mejor experiencia de trading en línea en el mercado. Hemos sido pioneros en el modelo de ejecución forex No Dealing Desk, proporcionando una ejecución competitiva y transparente para nuestros operadores. Servicio de atención al cliente galardonado Con una educación comercial de alto nivel y herramientas poderosas, guiamos a miles de comerciantes a través del mercado de divisas, con un servicio al cliente las 24 horas del día, los 7 días de la semana. Descubre la ventaja de FXCM. Promedio de los diferenciales: Los diferenciales medios ponderados en función del tiempo se derivan de los precios negociables en FXCM desde el 1 de julio de 2016 hasta el 30 de septiembre de 2016. Las cifras del spread son sólo informativas. FXCM no se hace responsable de errores, omisiones o demoras o de acciones basadas en esta información. Live Spreads Widget: Los spreads dinámicos en vivo son los mejores precios disponibles de la ejecución de FXCMs No Dealing Desk. Cuando se muestran los diferenciales estáticos, las cifras son medias ponderadas en función del tiempo derivadas de los precios negociables en FXCM desde el 1 de julio de 2016 hasta el 30 de septiembre de 2016. Los diferenciales mostrados están disponibles en las cuentas basadas en comisiones Standard y Active Trader. Las cifras de propagación son sólo con fines informativos. FXCM no se hace responsable de errores, omisiones o demoras, ni de acciones basadas en esta información. Mini cuentas: Las cuentas Mini ofrecen 21 pares de divisas y predeterminan la ejecución de la mesa de negociación donde están prohibidas las estrategias de arbitraje de precios. FXCM determina, a su entera discreción, lo que abarca una estrategia de arbitraje de precios. Las cuentas de Mini ofrecen spreads más margen de precios. Las cuentas Mini que utilizan estrategias prohibidas o con un patrimonio superior a 20.000 CCY pueden cambiarse a ninguna ejecución de Dealing Desk. Consulte Riesgos de ejecución. Atención al cliente: La negociación de divisas y / o contratos por diferencias en el margen conlleva un alto nivel de riesgo y puede no ser adecuado para todos los inversores. Existe la posibilidad de que usted podría sostener una pérdida en exceso de sus fondos depositados y por lo tanto, no debe especular con el capital que no puede permitirse el lujo de perder. Antes de decidir negociar los productos ofrecidos por FXCM usted debe considerar cuidadosamente sus objetivos, situación financiera, necesidades y nivel de experiencia. Usted debe ser consciente de todos los riesgos asociados con el comercio en margen. FXCM proporciona asesoramiento general que no tiene en cuenta sus objetivos, situación financiera o necesidades. El contenido de este sitio web no debe interpretarse como un consejo personal. FXCM recomienda consultar con un asesor financiero independiente. Haga clic aquí para leer la advertencia de riesgo completo. FXCM es un Comerciante de la Comisión de Futuros registrado y Comerciante de Divisas al por menor con la Commodity Futures Trading Commission y es miembro de la National Futures Association. NFA 0308179 Forex Capital Markets, LLC (FXCM LLC) es una subsidiaria operativa dentro del grupo de compañías FXCM (colectivamente, el Grupo FXCM). Todas las referencias en este sitio a FXCM se refieren al Grupo FXCM. Tenga en cuenta que la información de este sitio web está dirigida únicamente a clientes minoristas y que algunas de las representaciones aquí contenidas pueden no ser aplicables a los participantes elegibles del contrato (es decir, clientes institucionales) según se define en la secta1 (a) (12). Copia de Copyright 2016 Forex Capital Markets. Todos los derechos reservados. Los datos de Dukascopy están disponibles en la web en su forma cruda como archivos que abarcan sólo 1 hora, por lo que se hace evidente que algunas herramientas son Necesario para descargarlo y analizarlo. Antes de que fuera posible obtener los datos a través de cualquiera de los otros métodos, hice una serie de secuencias de comandos que todavía uso hoy en día para descargar los datos de tick libre disponibles de Dukascopy. I8217m un fan de la simplicidad de PHP, así que elegí que para escribir los scripts. No son código de calidad comercial, pero funcionan. Puede obtener el archivo de secuencias de comandos PHP desde la página de descargas de datos de ticks. Encontrará 4 scripts dentro: Un script para descargar los datos de Dukascopy, sugerentemente llamado 8220downloaddukascopydata. php8221. Como cortesía de Dukascopy, que está brindando graciosamente datos gratuitos, el script no intenta descargar archivos que ya están en su disco duro. Sin embargo, todavía solicita archivos perdidos, por lo que para evitar hacer hincapié en su servidor por favor, establezca las fechas en la matriz de monedas al principio de la secuencia de comandos a la fecha de su última descarga they8217re utilizando el estándar unix timestamps (época fecha, que es en esencia el Número de segundos desde 01.01.1970). Si desea convertir fácilmente de una fecha regular a una estampa de unix, puede utilizar Epoch Converter. Una herramienta muy fácil de usar en línea. Un script para procesar los datos descargados, que asume que se encuentra en el mismo directorio que el script anterior y que los datos se descargaron allí (processdukascopydata. php) éste necesita algunos parámetros, ejecutarlo sin ningún tipo de descripción o check out El siguiente guión. Un pequeño script de shell que procesará todos los datos descargados disponibles en formato. bat para windows y. sh form para linux. Windows descargar amp convertir a CSV how-to Comience por visitar la sección de descarga de Windows PHP y obtener la última versión binaria como un archivo zip. Una vez hecho eso, descomprímalo en c: php y descomprima los scripts del archivo de comandos que descargaste en el mismo directorio. Cambie el nombre de c: phpphp. ini-development a c: phpphp. ini. Si su carpeta no contiene un archivo llamado php. ini-development, use php. ini-dist o cualquier otro archivo php. ini-algo que encuentre. Editar c: phpphp. ini, buscar extensionphpcurl. dll y quitar el punto y coma delante de la línea y agregar un 8220ext / 8221 delante de 8220phpcurl. dll8221 para que se vea así: extensionext / phpcurl. dll Guarde el archivo y salga . Si se ejecuta en un error de cierre y su instalación de PHP tiene un archivo ext / phpzip. dll, también aplique el método anterior para extensionext / phpzip. dll. Vaya a la página de descarga de 7-Zip y obtenga la versión de línea de comandos. Descomprimirlo y poner 7za. exe en el mismo directorio (c: php). Haga clic en start-gtrun y escriba cmd y luego haga clic en ok (o escriba cmd y pulse enter en el cuadro de diálogo windows 7 / vista 8220search programas y archivos8221 en el menú Inicio). Escriba cd php en la ventana de comandos. Tipo php downloaddukascopydata. php Tome un café. Toma otro café. Ir a dormir. Ve a trabajar. Ir al gimnasio. Ir a un club. Espera un poco más. No estoy bromeando, se tarda siglos. Puede comprobar el progreso viendo cómo los directorios de los pares de divisas se llenan. Si obtienes algún error extraño, vuelve a ejecutar el proceso cuando 8282 termina con 8211, sólo descargará los archivos que se perdieron en el primer paso debido a errores de red. Si sólo desea descargar algunos de los pares de divisas disponibles, puede editar downloaddukascopydata. php y cambiar la matriz al principio del archivo. Puede cambiar el orden de descarga de los pares de divisas o eliminar por completo los pares que no desea. El número al lado de cada par es la marca de tiempo unix en la que se inicia la descarga si se desea iniciar en un momento posterior (el valor predeterminado es la fecha más temprana disponible), puede utilizar epochconverter para obtener la marca de tiempo para la fecha elegida. Cuando la descarga haya finalizado, asumiendo que quería obtener los datos EURUSD hasta 01.01.2012, you8217d tipo php processdukascopydata. php EURUSD 200702 201201 EURUSD. csv y la salida se colocará en EURUSD. csv. Como alternativa, puede escribir process. bat que procesará por lotes todos los datos de moneda. It8217s sobre todo seguro para ignorar el error de spam en este paso. Nota: si utiliza process. bat o process. sh, puede que tenga que actualizar las fechas de finalización en ellos para obtener el rango completo de datos Esto debería serlo, si todo iba bien debería tener sus archivos CSV en el mismo archivo c: php Carpeta y usted debe estar listo para proceder con la preparación de sus datos de tick para Metatrader 4. Advertencia: asegúrese de tener suficiente espacio en su disco duro. A partir de 2012, los archivos de tick descargados tienen más de 20 GB y si sumas el tamaño de los archivos CSV obtenidos, superarás los 100 GB. En primer lugar, tenga en cuenta que mi sitio web trata con backtesting de datos de tick, no con la importación de archivos CSV en HST. La secuencia de comandos CSV2FXT que procesa los archivos CSV en archivos FXT de datos de anotación generará automáticamente los archivos HST correctos. Si desea más información acerca de eso, sugiero obtener un ensayo TDS y leer Cómo preparar sus datos de tick para Metatrader 4 En cuanto a la mayor duración de backtest, probablemente tenía mucho menos datos en sus archivos HST antes de la importación. I8217d también apostar you8217re backtesting un EA con código virtualizado, that8217s por qué toma tanto tiempo. Es probable que tarde más tiempo con los datos de las garrapatas. Sólo para tener una idea si es su EA o algo más, pruebe backtesting el MACD EA en el mismo par de divisas y el tiempo y compare la duración. Finalmente, los datos se almacenan en la carpeta de datos MT4, en la historia. Para llegar allí, diríjase a File - Open Data Folder. Parte 3: El script robot de 100 pips por día El curso de trading automatizado terminó finalmente Las dos primeras partes ya han sido publicadas aquí hace algún tiempo: La última parte contiene dos lecciones. En primer lugar se explica cómo utilizar algoritmos de aprendizaje de máquina para detectar patrones de precios rentables para el comercio automatizado de acción de precios. La última lección es acerca de la programación de un robot de comercio comercial de calidad con algunas cifras de rendimiento impresionante: - 95 tasa de ganancias. - promedio 100 pips beneficio por día - garantizado. - alrededor de 1000 retorno anual sobre el capital. - verificado por MyFXBook con 1 año de comercio en vivo en una cuenta real. Todo el código está incluido. El método de negociación utilizado por este script robot hasta ahora nunca ha sido publicado en mi conocimiento. Para entender las lecciones que necesitarás conocer las dos primeras partes del curso. Si algo no está claro en ellos, por favor pregunte. Mal post las lecciones finales aquí paso a paso en los próximos días. Miembro Comercial Se unió Sep 2012 141 Posts Bob: Rápido, cierre la puerta Tal vez he sido sombreado. Alice: Lo que pasó Bob: Alguien acaba de revelar el secreto comercial final para mí. Alice: Realmente Bob: Sí. Es un método de acción precio acción. Necesito que lo programes inmediatamente. Alice: Acción de precios ¿Qué es eso Bob: No usas ningún indicador. Usted comercio justo cuando el patrón de vela de precio es la derecha. Se compara el abierto, alto, bajo y cierre de la última vela con el abierto, alto, bajo y cierre de las velas anteriores - ese es el patrón. Es todo lo que necesitas. Alice: Hmm. He leído que los japoneses utilizan los patrones de velas para el comercio del mercado del arroz. Algunos patrones tienen nombres graciosos como quotThree Little Bearsquot o algo así. Pero eso fue hace 300 años. Bob: Por supuesto que usted no comercio hoy con patrones de vela de arroz japonés si desea mantener su dinero. Pero conozco a un tipo llamado Bert en McDuck Capital. Encontró algunos nuevos patrones de velas que funcionan para el mercado Forex. Dijo que es como una máquina tragaperras que siempre gana. El patrón aparece y sale efectivo. Bert tiene un bono loco y McDuck es desde entonces la acción de precio de la negociación con sus patrones. Alice: Así que quieres que escriba un script que compruebe esos patrones y luego dispara una señal de comercio No debería ser un problema. Bob: Bueno, hay un problema. No conozco los patrones. Sólo sé que están hechos de tres velas diarias. Cómo se ven es muy secreto. Bert dijo que tenía que matarme cuando me contó los patrones. McDuck es muy serio en esa materia. Alice: Hmm. Bob: No puedes encontrar los patrones a ti mismo Alice: Si un tipo de McDuck los encontró, supongo que yo también los puedo encontrar. Pero ¿por qué trabajan en todo lo que quiero decir, ¿por qué un movimiento de precios debe ser precedido por un patrón de vela cierto Bob: No idea. Pero este método funcionó para el mercado de arroz japonés. Tal vez algunos grandes comerciantes se despiertan en la mañana, comparar los precios de hoy, ayer y el día anterior, y luego decidir si comprar o vender en siempre de la misma manera. Alice: Si esto establece un patrón, puedo aplicar una función de aprendizaje automático. Pasa por precios históricos y comprueba que los patrones de las velas usualmente preceden a un movimiento de precios hacia arriba o hacia abajo. Bob: ¿Será caro Alice: La búsqueda de patrones de velas No. Aún así, tengo miedo de que tengo que cargar más que la última vez. Bob: ¿Por qué es Alice? Me podría matar al programar este script. Commercial Member Se unió Sep 2012 141 mensajes Esta es la primera versión de Alices script que utiliza la inteligencia de la máquina para el comercio de acciones de precio. Puede detectar un sistema en los patrones de la vela, y después utilizar los patrones más provechosos para una señal comercial. Para esta secuencia de comandos necesitará la versión Zorro más reciente, 1.10. Puedes descargarlo en zorro-trader. Si tiene una versión anterior, actualícela descargando la nueva en el mismo enlace de descarga e instalándola en la misma carpeta. Cuando hiciste las primeras partes del curso, muchas líneas en este código ya deberían ser familiares, pero también hay algunos nuevos conceptos, especialmente las funciones adviseLong y adviseShort. Bueno, vaya a través de ellos en detalle mañana. Commercial Member Se unió Sep 2012 141 Posts La función de asesoramiento es el algoritmo de aprendizaje automático. Parece una condición de entrada extraña para un comercio largo: if (adviseLong (PATTERN2,0, priceHigh (2), priceLow (2), priceClose (2), priceHigh (1), priceLow (1), priceClose (1) PriceHigh (1), priceLow (1), priceClose (1), priceHigh (0), priceLow (0), priceClose (0)) gt 30) enterLong () Alice llama adviseLong con el método PATTERN y High, Low y Cerrar precios de las últimas 3 velas. Si adviseLong devuelve un valor superior a 30, se introduce una operación larga. Pero cuando sucede esto en el modo de entrenamiento, la función adviseLong devuelve siempre 100. Así que siempre se introduce un comercio. La función almacena una instantánea de sus parámetros de señal - en este caso, 12 señales de los precios Alto, Bajo y Cerrar de las últimas 3 velas - en una lista interna. A continuación, espera el resultado del comercio y almacena la ganancia o pérdida del negocio junto con la instantánea de la señal. Así, después del entrenamiento, Zorro tiene una larga lista interna que contiene todas las instantáneas de señales y sus ganancias o pérdidas comerciales correspondientes. Las señales se clasifican en patrones. Alice utiliza el método de clasificación PATTERN2. Divide las señales en dos grupos iguales, cada uno con 6 señales. El primer grupo contiene los precios de las primeras dos velas de la secuencia de 3 velas: Y el segundo grupo contiene los precios de las dos últimas velas: Observe que la vela media, con el offset 1, aparece en ambos grupos. El precio abierto no se utiliza en las señales porque las monedas se negocian las 24 horas del día, por lo que el cierre de una barra diaria es normalmente idéntico al abierto de la siguiente barra. El uso del precio de Open haría hincapié en los valores atípicos y los patrones de fin de semana, lo que no se desea. Dentro de cada grupo de señales, Zorro ahora compara cada señal con cada otra señal. Esto genera un conjunto enorme de resultados mayores, menores o iguales. Este conjunto de resultados de comparación clasifica un patrón. No importa si priceHigh (2) es mucho menor o sólo un poco menor que priceHigh (1) - el patrón resultante es el mismo. Los patrones de los dos grupos ahora están pegados juntos para formar un solo patrón. Contiene toda la información sobre todas las comparaciones de precios dentro de la primera y la segunda y dentro de la segunda y tercera vela, pero el patrón no contiene ninguna información acerca de cómo la primera vela se compara con la tercera. Bert había dicho a Bob que su mejor para el comercio de acciones de precio para comparar sólo velas adyacentes - por lo tanto, los dos grupos de patrones independientes. Si Alice había buscado patrones de 4 velas, utilizó tres grupos. Después de que el patrón fue generado, Zorro verifica la frecuencia con que aparece en la lista, y resume todas sus ganancias o pérdidas. Si un patrón aparece con frecuencia y con un beneficio, se considera un patrón provechoso. Zorro elimina todos los patrones no rentables o insignificantes de la lista - patrones que no tienen una suma de beneficio positivo o aparecen menos de 4 veces. Los patrones restantes se almacenan en los archivos workshop7EURUSD. rul en la carpeta Datos - un archivo por ciclo de avance. Tal archivo tiene este aspecto: Podemos ver que cualquier línea en la lista comienza con una combinación de letras extrañas, como FCDEABFACEBD. Esta combinación es el nombre de patrón único que representa el conjunto de resultados de comparación. El número al lado del nombre es la frecuencia de patrón - FCDEABFACEBD apareció 25 veces en el período de entrenamiento. Su beneficio medio por comercio fue 4.334. Y la desviación estándar de los beneficios fue de 11.562. La frecuencia, la ganancia media y la desviación estándar son utilizadas posteriormente por Zorro para calcular la relación de información de patrones. Esto ocurre cuando se prueba o se negocia la estrategia. La función adviseLong genera un patrón de las señales actuales y lo compara con los patrones almacenados en el archivo. rul. Si ningún patrón almacenado coincide con el actual, la función devuelve 0. De lo contrario, devuelve la proporción de información de patrones multiplicada por 100. Cuanto mayor es la relación de información, más rentable es el patrón. Por supuesto, los patrones con alta relación de información son menos frecuentes. Por lo tanto, el umbral de entrada comercial debe ser un compromiso entre la rentabilidad del patrón y la frecuencia. Alicia utilizó un umbral de 30 aquí, lo que significa que un comercio se introduce para cualquier patrón con información por encima de 0,3. El comercio corto funciona de la misma manera: if (adviseShort (PATTERN2,0) gt 30) enterShort () La llamada adviseShort no tiene parámetros de señal. En ese caso, la función utiliza las mismas señales que la última llamada de aviso, que fue la anterior aconsejarLong. De esta manera las listas de señales largas no tienen que ser escritas dos veces. Mañana bien pasar por el resto del guión. El reconocimiento de patrones es una de las pocas funciones de aprendizaje de máquina que funcionan para el comercio con una configuración relativamente simple. No dude en preguntar aquí si algo no está claro con este método. Miembro Comercial Se unió Sep 2012 141 Posts Hay algunos requisitos previos para el comercio con los patrones de velas - vamos a mirar el resto del código: StartDate 2002 BarPeriod 2460 NumWFOCycles 5 NumWFOCycles o algún método de prueba fuera de muestra similar es obligatorio para este tipo de estrategia . Todos los sistemas de aprendizaje de máquinas tienden a un gran ajuste, por lo que cualquier resultado en la muestra de los patrones de precios, árboles de decisión o preceptrones carece de sentido. El análisis de patrones también necesita tantas barras como sea posible para encontrar patrones significativos. El sobreamuestreo no puede usarse aquí porque los precios Alto, Bajo y Cierre dependen de la barra de inicio y fin de tiempo - las barras re-muestreadas producirían patrones muy diferentes. Por lo tanto, Alicia tiene que utilizar el período de simulación máximo posible, que es a partir de 2002, cuando el euro se introdujo como reemplazo de las monedas europeas. (Si los datos de precios de un determinado año no están incluidos en el programa Zorro, se puede descargar de forma automática desde el servidor intermediario o con el paquete histórico de precios de la página de descarga de Zorro). Por la misma razón, Alice utiliza pocos ciclos de WFO para obtener grandes períodos de entrenamiento. El indicador REGLAS es necesario para generar patrones de precios con la función de asesoramiento. TESTNOW ejecuta una prueba automáticamente después del entrenamiento - esto guarda un clic de botón al experimentar con diferentes métodos de búsqueda de patrones. La siguiente parte del código se comporta diferente en el entrenamiento y en el modo de prueba o de comercio: El tren es verdadero en el modo de tren. En este modo se establece el indicador HEDGING, lo que permite abrir posiciones largas y cortas al mismo tiempo. Esto normalmente no tiene sentido, pero se requiere aquí para entrenar los patrones. De lo contrario, las entradas de comercio después de AdvisLong / adviseShort cerrarían anticipadamente las posiciones opuestas y, por lo tanto, asignarían valores erróneos de ganancias / pérdidas a los patrones. TimeExit limita la duración de una operación, en este caso a 5 barras. Así que la ganancia o pérdida de un comercio siempre se determina después de 5 barras y se asigna al patrón que existía cuando se introdujo el comercio. La siguiente parte del código se ejecuta cuando Train no es verdadero, es decir, en Test o en modo Trade: El sistema normalmente cierra su posición cuando se produce un patrón de vela opuesto. Hay otras dos condiciones de salida: una Parada relativamente distante - sólo por estar en el lado seguro en caso de un choque de precios - y una salida programada después de 10 bares. La salida temporizada se utiliza debido al método de predicción. Utiliza operaciones de 5 barras, por lo que su horizonte de predicción es de una semana. Algún tiempo después del horizonte de predicción, en este caso después de dos semanas, el precio probablemente habrá perdido cualquier correlación con el patrón de precios desde hace 10 bares. Mantener el comercio abierto ya no tiene sentido. Es a menudo mejor limitar el tiempo de comercio con un método de arrastrar, por ejemplo con TrailStep. Pero aquí una salida temporizada se utiliza para el bien de la simplicidad. Ahora qué beneficio podemos lograr con la máquina de comercio aprendido patrones Haga clic en Tren. Dependiendo de la velocidad de la PC, Zorro necesitará unos segundos para ejecutar los cinco ciclos de WFO y encontrar alrededor de 100 patrones rentables en cada ciclo. Haga clic en Resultado de la curva de equidad: Aunque el beneficio anual de alrededor de 90 no parece demasiado impresionante, los patrones de precios nos dan una curva de renta variable relativamente constante y resultados muy simétricos para el comercio largo y corto. Sin embargo theres un método para más del doble de la ganancia anual de acción de precio de comercio - y este método lleva un peligro. Bueno, trata con eso mañana. Miembro Comercial Se unió Sep 2012 141 Posts Bueno, ahora veamos lo que podemos hacer para que este rentable precio acción comercio sistema aún más rentable. Una manera podría estar eliminando la brecha del fin de semana. Cuando un patrón de precio rentable aparece durante la semana y conduce a un comercio que se introducirá el viernes, el fin de semana está entre el patrón y el resultado comercial. Eso podría estropear el poder predictivo del patrón, o hacerlo al menos menos predictivo que los patrones que inmediatamente preceden a los oficios. Permite modificar el script y evitar los intercambios de viernes: if (adviseLong (PATTERN2,0, priceHigh (2), priceLow (2), priceClose (2), priceHigh (1), priceLow (1), priceClose (1), priceHigh (1) ), PriceLow (1), priceClose (1), priceHigh (0), priceLow (0), priceClose (0)) gt 30 and dow () VIERNES) enterLong () if (adviseShort (PATTERN2,0) gt 30 y dow () VIERNES) enterShort () La función dow devuelve el día de la semana y puede utilizarse para establecer diferentes comportamientos comerciales antes y después de los fines de semana. Tren, prueba, resultado: La curva de equidad ahora parece definitivamente más agradable, y también es más agradable es la ganancia anual 200. La mejora de un sistema de esta manera conlleva un peligro, especialmente cuando se utilizan horas, fechas o criterios ad hoc similares para condiciones de entrada adicionales. ¿Quién puede decir que el mejor beneficio no es sólo por casualidad, un resultado de overfitting Claro, hemos dado una razón racional para no entrar en operaciones el viernes. Sin embargo, tal razón se encuentra rápidamente en retrospectiva. El guión de acción de precio sólo funciona mejor cuando el comercio de viernes se evita, y supusimos que esto se debe a la brecha del fin de semana. Pero podríamos usar un argumento similar para no operar el lunes. Evitar los intercambios del lunes sin embargo no mejora la curva de la equidad. ¿Por qué no? Nadie puede realmente decir. Algunos comerciantes creen que un activo determinado debe ser negociado solamente durante sus horas principales del mercado, porque entonces el volumen que negocia es más alto y hay menos outliers. Por lo tanto, el comercio de la GBP / USD sólo durante el horario comercial de Londres Stock Exchange. Otros comerciantes creen que un activo debe ser negociado solamente fuera de sus horas principales del mercado, porque entonces los mercados son menos eficaces. El comercio de la GBP / USD sólo cuando su noche en Londres. Algunas estrategias funcionan mejor con el primer método, algunas con el otro - y, en consecuencia, sus autores a veces daban la primera ya veces la otra explicación. ¿Cuál es la razón? Cuanto más desarrollas estrategias, más te darás cuenta de que teorizar sobre el comportamiento del mercado es inútil. Sólo la prueba de perfomance importa. Pero hay muchas trampas que conducen a overfitting y resultados demasiado optimistas. No siempre puedes evitar esas trampas. Pero usted debe ser consciente de que están allí. Ahora un breve resumen de lo que hemos aprendido en esta lección: 9658 Los patrones diarios de velas pueden tener poder predictivo bajo ciertas circunstancias. 9658 La función de asesoramiento genera reglas comerciales con algoritmos de aprendizaje automático. 9658 Las pruebas de muestra son obligatorias para las estrategias basadas en la IA. 9658 HEDGING permite abrir posiciones largas y cortas al mismo tiempo. 9658 TimeExit limita la duración de una operación. 9658 La función dow devuelve el día de la semana. 9658 Tenga cuidado al mejorar un sistema con condiciones de entrada adicionales. Mañana bien empezar con la lección final sobre la programación de un robot de alto rendimiento constante que supera prácticamente todos los otros robots comerciales que se discuten en foros de comerciantes. Un scam robot script funciona de una manera muy diferente a una estrategia comercial normal. La parte menos importante del script es el algoritmo de señal comercial. La mayoría de los robots usan aquí alguna estrategia basada en indicadores sencilla como los sistemas que se encuentran publicados en foros de comerciantes. El desarrollador de robots por lo general sabe que no generará ganancias, pero esto no importa por razones que pronto se harán claras. Alice decidió por un enfoque aún más simple - esta es su primera versión (cuota: 44.000): La estrategia entra en un comercio al azar en cualquier barra. La función aleatoria en 50 de todos los casos devolverá un número que es mayor que 0, por lo tanto, desencadenar un comercio largo de lo contrario se disparará un comercio corto. Si la negociación no tenía costo, esta estrategia tenía una expectativa de cero. Un clic en prueba sin embargo revela una pérdida media de aproximadamente 3 pips por comercio. 3 pips son sólo la propagación de los corredores simulados, la diferencia de precio Ask-Bid que siempre se pierde. Así que no hay sorpresa aquí. Este script de comercio al azar, obviamente, no es rentable. Alice tiene que proxeneta. El primer paso es configurar algunos parámetros del sistema y satisfacer la demanda Bobs de la tasa de ganancia de 95: El robot debe operar una vez al día, por lo que Alice necesita un período de 1440 minutos bar. Backtest se restringe a simular el año 2012 - el robot debe trabajar por un año solamente, por lo que no es necesario un backtest más largo. También no utiliza período de retroceso, ya que no hay ningún indicador u otra función que necesite cualquier historial de precios. Por lo tanto, esta es la configuración de parámetros: BarPeriod 1440 StartDate 2012 NumYears 1 LookBack 0 Las siguientes líneas establecer una pérdida de parada a 200 pips distancia del precio actual, y un objetivo de beneficio a 10 pips distancia: Stop 200PIP TakeProfit 10PIP De esta manera, Será golpeado 20 veces antes que la pérdida de stop - lo que significa que normalmente se golpeará 20 veces más a menudo. De 20 operaciones, 19 se ganará y sólo se perderá uno - esta es la precisión de 95 que el robot necesita para el anuncio de Bobs coincidentes. Sin embargo, para esto Alice debe asegurarse de que cualquier comercio termina con golpear la pérdida de stop o el objetivo de beneficio. Cualquier otra salida estropearía el 95. Otra salida sucede al entrar en un comercio en sentido inverso, que cierra automáticamente el comercio actual. Un método para evitar esto sería establecer Zorros HEDGING bandera. Sin embargo, la cobertura no está permitida a los ciudadanos estadounidenses, que son los principales compradores de robots. Para no perder el mercado de los EE. UU., Alice impide la inversión comercial al entrar sólo en un nuevo comercio cuando no hay comercio abierto: if (NumOpenTotal 0) if (random () gt 0) enterLong () else enterShort () La variable predefinida NumOpenTotal es la actual Número de operaciones abiertas. Un clic en la prueba revela que la versión actual de la secuencia de comandos tiene en efecto alrededor de 95 victorias. Por supuesto, esto no mejora su rentabilidad. Aunque 19 de 20 operaciones son ganadas, la pérdida desde el 20 coma todas las ganancias de los 19 ganadores antes. El único efecto de la alta tasa de ganancias es ahora un patrón de diente de sierra extraño en la curva de equidad: Podemos ver que las secuencias de operaciones ganadoras de 1 día hacen que partes de la curva de equidad aumenten linealmente hasta el punto donde un comercio no está En el mismo día. Este comercio permanecerá abierto por un tiempo más largo, posiblemente golpeó su pérdida de parada, y estropear la curva de equidad. En cuanto al beneficio, el sistema no es mejor que la versión anterior. Pero Bob quiere 100 pips de ganancia por día. Suponiendo 250 días de negociación al año, eso significa un retorno anual de al menos 25.000 pips - suficiente para despertar la expectativa de gran riqueza y vender un montón de robots. ¿Puede Alice ajustar el guión para generar 100 pips diarios - beneficio real, de comercio en vivo - y esto con una estrategia obviamente no rentable Sí, ella puede. Es la magia de la estadística, en la que bien mirar mañana. Commercial Member Se unió Sep 2012 141 Posts Bueno, vamos a averiguar cómo hacer un beneficio con el comercio al azar. La pérdida promedio de un comercio al azar es el spread o la comisión. Por lo tanto, un comercio por día y 3 pips spread producirá una pérdida promedio de 750 pips por año. Esto no significa que cada comerciante al azar tendrá una pérdida de 750 pips para el final del año. Algunos podrían terminar con una pérdida mayor, algunos incluso con un beneficio. Permite dar 3000 comerciantes de capital inicial y la tarea de entrar al azar oficios, un comercio por día, durante un año. Al final del año bien juntos sus resultados en un gráfico estadístico. Se verá así: Este gráfico de distribución de beneficios se puede generar con el script descrito a continuación. Ejecuta 3000 ciclos de simulación de 1 año de Alices primera estrategia de comercio al azar. El eje x de la tabla muestra la ganancia o pérdida en pips al final del año. El eje y muestra el número de comerciantes que obtuvieron esa ganancia o pérdida en particular. Podemos ver que el grupo más grande - unos 130 comerciantes - tuvo pérdidas de 500 pips después de un año. También hay algunos comerciantes desafortunados con más de 7000 pérdidas de pips, pero por otro lado, lejos en el lado derecho de la tabla, unos pocos ganó más de 7000 pips Sin duda, esos chicos se están considerando a sí mismos los comerciantes de genio y se jactan con Su éxito en foros de comerciantes. Esta distribución de beneficios es una distribución normal de Gauss - la famosa Curva de Curva. Parece un poco inestable porque 3000 muestras no son suficientes para una campana perfecta. Al ejecutar la simulación con muchos más operadores, la curva se hará más regular, pero el script necesitará más tiempo para ejecutarse. El pico de la curva de campana está en -750 - la pérdida promedio que se espera con 3 pips spread por comercio. Puede generar estos gráficos de distribución de beneficios con la siguiente secuencia de comandos: La estrategia de Alices se denomina ahora como una estrategia de función externa1 - eso no es realmente necesario, pero hace más fácil experimentar con diferentes estrategias. Algunos comandos en el script son nuevos. Utilizaban el sobremuestreo para ejecutar la simulación de un año muchas veces: El sobre-muestreo se utiliza normalmente para aumentar el número de operaciones en una simulación. Aquí el propósito es simplemente repetir la simulación 3000 veces, un ciclo de simulación por comerciante. EXITRUN es una bandera de estado Zorro que se fija en la última carrera de cada ciclo, al final del año. Es (EXITRUN) entonces se convierte en true y se ejecutan las siguientes líneas: int Paso 250 int Resultado floor ((WinLongWinShort-LossLong-LossShort) / PIPCost / Step) WinLongWinShort-LossLong-LossShor t es el resultado del ciclo de simulación actual. No podemos usar WinTotal-LossTotal como en el taller 6, porque los valores ..Total se resumen en todos los ciclos. Dividimos el resultado por PIPCost para convertirlo en pips. Lo dividimos por 250 (la variable Step) para distribuir los resultados entre barras de 250 pips. Si un resultado es 1 pip o 249 pips no importa - ambos contribuyen a la misma barra. La función floor convierte el valor resultante en un entero que podemos trazar en un gráfico. Para esto se usa la función plotBar: Esto dibuja una barra en un gráfico llamado quotProfit en la posición de gráfico Result40. El gráfico siempre comienza en la posición 0, por lo que el 40 tiene el efecto de desplazarlo hacia la derecha y permitir que los resultados negativos también sean visibles. El valor del eje x que pertenece a esa barra es StepResult. Hemos dividido el resultado por 250 para la distribución entre barras, por lo que esta multiplicación permite que las barras pip valor aparecen en el eje x debajo de la barra. El 1 es la altura de la barra. La altura se suma (SUM), por lo que la altura de la barra se incrementa en 1 para cada ciclo cuyo resultado coincide con el valor de pip de las barras. BARS indica a la función plotBar que traza barras en lugar de una línea, y LBL2 le dice que imprima sólo cada segundo valor en el eje x - de lo contrario sería difícil de leer. El último parámetro, ROJO. Da el color de la barra. Usted puede ver que el gráfico resultante también desmiente un mito generalizado en la escena del comerciante. Es un hecho conocido que 95 de todos los comerciantes privados pierden todo su dinero ya en el primer año. No es cierto - al menos no con el comercio al azar. Se puede estimar a partir de la distribución de beneficios que sólo unos 55 pierden dinero en absoluto (la suma de las barras rojas con ganancias negativas), mientras que 45 terminan su primer año con un beneficio. Por supuesto, la mayoría de esos 45 afortunados perderán en uno de los años siguientes cuando continúen el comercio - pero tardaría 5 años hasta que 95 hayan perdido su dinero Mañana verá bien cómo Alice puede manipular esta distribución de ganancias para terminar el año con 25,000 Pips beneficio. ¿Qué sucede con la distribución de beneficios cuando Alice usa sus objetivos de stop y ganancias para obtener la tasa de ganancia de 95? Simplemente edite el script que se ha publicado anteriormente y reemplace la llamada a strategy1 () con strategy2 (). Que es la versión stop / takeprofit: La distribución de ganancias resultante: El pico de la campana está todavía a -750 pips, pero la distribución es ahora mucho más estrecho y un poco distorsionado hacia el lado izquierdo. Restringir operaciones con objetivos de stop y beneficios elimina grandes ganancias y grandes pérdidas. Esto pone límites superiores e inferiores al resultado anual, presionando así la campana de ambos lados. Con 10 pips beneficio objetivo, ningún comerciante puede ganar más de 1750 pips por año, incluso en el caso poco probable que todos los oficios se ganan. Sin embargo, Alice necesita un resultado anual de al menos 25,000 pips. Ella no puede hacer nada sobre la pérdida promedio de 750 pips. Pero ella puede manipular la curva de distribución de beneficios de una manera que un gran número de comerciantes terminan con 25.000 pips. Para esto, Alice acaba de añadir 3 líneas más a su estrategia: var ProfitGoal 100BarPIPCost var ProfitCurrent WinLongWinShort-LossLong-LossShort Lotes clamp ((ProfitGoal-ProfitCurrent) / (7PIPCost), 1, 200) Este es un sistema de martingala. Estos sistemas se utilizan, más o menos ocultos, en la mayoría de los robots. Al principio Alice determina una meta de ganancia. Ella necesita 100 pips por día. Un día equivale a una barra, así que en cualquier barra el beneficio acumulado debe ser 100 pips veces el número de barra. This is multiplied with PIPCost for getting the result in account currency instead of pips, and stored in the ProfitGoal variable. The current profit is then calculated in the next line and stored in the ProfitCurrent variable. The third line is the martingale. The lot size is set dependent on how much the current profit deviates from the profit goal. If were far below our goal, we need a huge lot size to catch up. The number of Lots is calculated just so that the next winning trade reaches the profit goal. For this, the profit difference is divided by the expected profit per lot. The profit per lot of a winning trade is 10 pips profit target minus 3 pips spread. The result, 7 pips, is again multiplied with PIPCost for converting it to account currency. The clamp function limits Lots between 1 and 200. We need at least 1 lot per trade, and we dont want to exceed 200 lots for not being too obvious or risking crazy losses. When analyzing robot strategies, one can notice such a martingale system from telltale peaks in the lot size. For this reason, robots or signal providers often increase not the number of lots, but the number of trades, which is less suspicious. If you select the modified strategy script and click Test repeatedly, every click will now generate a different equity curve. Most look like this: But surprisingly many look like this: This is just the perfect equity curve that Bob wanted for his robot. Its even a little too perfect - its straight slope comes from the ProfitGoal variable that just linearly increases with the bar number. For really selling the robot, Alice had to modify the profit goal formula for letting the curve appear more bumpy and realistic. We leave that as an exercise to the reader. Lets now copy the modified strategy in our profit distribution script, for determining the profit distribution (change Step to 2500 for getting a larger scale): This distribution does not resemble a bell curve anymore. Although the average loss is still at -750 pips, the distribution got an extremely long left tail (the high bar at the left end just represents the sum of all bars that dont fit on the chart) and a sharp peak at the right in the 25,000..30,000 pips profit area. From our 3000 traders, about 1100 will earn more than 25,000 pips with this robot Sadly, about 1600 traders will suffer losses, some even extreme losses in excess of 200,000 pips. But we hope a merciful margin call saves them early. The profit distribution chart is a little misleading. In fact the year wont end with 1100 lucky traders. Many of them will have bitten the dust before, because their equity curves, although reaching the 25,000 pips goal at the end, would go through extreme drawdowns inbetween and wipe out their account. Lets see how many traders will encounter no margin call and reach the end goal smoothly. For this, edit the script again and modify the trade entry condition from if(NumOpenTotal 0 and ProfitCurrent gt -250) Every trader will now refrain from further trading when his loss exceeds 250. This changes the profit distribution remarkably: About 500 traders now gave up on the way, visible in the high peak of the -5000 pips bar that represents the 250 loss on the simulated micro lot account. The loss can be of course higher when the last losing trade had a high lot size - thats why many bars are even beyond -5000 pips. Anyway, 600 traders still reached the 25,000 pips end goal - and this with totally random trading So Alice now has a script that indeed generates more than 25,000 pips per year. Theres a slight problem though - it only works for 20 (600 out of 3000) of its users. Most of the remaining 80 will also earn profits in the first months due to the martingale system and the high win rate, but will have lost all their money by the end of the year. Bob will mercifully not mention this in his robot advertisement - but he needs something else instead. For selling the robot, at least one of those 600 profitable equity curves has to be verified on a real account by a trade verification service. For this purpose Bob will invest 10,000. Not, as you might think, for bribing the service to confirm a fake curve. No, they are certainly honest guys and wont accept bribes. The 10,000 are used in a different way, which well describe tomorrow.

No comments:

Post a Comment