Cómo Backtest Su Sistema Comercial


Usted pregunta cómo crear un sistema de comercio en NinjaTrader (NT) y volver a probarlo. Se puede hacer, pero no es fácil. Sin entrar en la codificación y la arquitectura de software / diseño, sólo puedo darle una idea general de cómo uno podría ir sobre él. El primer paso es escribir un sistema comercial. De forma simplista, esto consta de varias partes: (i) escribir un módulo que contendrá todos los ajustes para los oficios que desea ejecutar (Identifique las condiciones que constituyen la oportunidad óptima para entrar en un comercio. (Ii) escribir un módulo que buscará esos conjuntos en sus datos en tiempo real, (iii) escribir un módulo que catalogará y guardará los ajustes encontrados en Los datos en tiempo real, y (iv) escribir un módulo que ejecutará un comercio basado en cualquiera de esos conjuntos. Esto en sí mismo es un reto, ya que esto debe hacerse en tiempo real. Además, debe manejar los casos en los que encuentre varias configuraciones que pueden estar indicando operaciones en las mismas direcciones u opuestas (es decir, largas y cortas). También es necesario considerar los objetivos, los criterios de rentabilidad para sus ajustes, stop loss y los criterios finales. Por último, pero no menos importante, es necesario pensar en la escala de entrada y salida de las estrategias con su comercio configurar los criterios. Como aparte, ni siquiera he mencionado la verificación y el manejo de errores componentes del código, que tendrá que abordar también. Para hacer esto eficientemente, necesitará roscar este código. El problema con escribir esto en NT es que NT sólo soporta un subconjunto del lenguaje C y actualmente sólo proporciona soporte para el marco. Net 3.5. Esto significa que necesitará escribirlo en C como un dll y referenciarlo en su código NT. Ahora que ha escrito su DLL para identificar un comercio, tendrá que escribir código para ejecutar el comercio. NT ofrece un Managed y un enfoque no gestionado para hacer esto. Actualmente utilizo y codifico NT, y diré que esta parte de NT no está bien documentada, al menos no lo he encontrado, pero con toda justicia, puedes obtener ayuda del personal de NT en su foro de soporte. Usted querrá utilizar el enfoque no administrado para obtener la mayor flexibilidad. Por supuesto, querrá implementar alguna estructura de base de datos en su código para registrar sus operaciones. Esta parte del programa será un desafío también, porque hay algunos problemas que se encontrará aquí. Cada operación tendrá que ser verificada, las órdenes tendrán que ser secuenciadas y monitoreadas extremadamente bien, y su posición tendrá que ser observado cuidadosamente, especialmente si también planea entrar en operaciones cambiando posiciones. Ahora que has llegado tan lejos, puedes escribir una estrategia NT para volver a probar tu sistema. Una vez más, el enfoque no gestionado será de mayor valor aquí, ya que ofrece la mayor flexibilidad para usted. Una vez más, este código es difícil y no documentado particularmente bien. Sin embargo, se puede hacer. Enhorabuena, ahora ha terminado de codificar y puede comenzar a probar su código en vivo. Tal vez necesite modificar su código para tratar las condiciones en tiempo real en los datos en vivo. Dependiendo de los mercados que usted planea operar, tendrá que pensar cómo manejará el comercio durante los informes, la celebración de posiciones durante la noche, límites de negociación, así como cuando el comercio se suspende por el intercambio. Asumiendo que usted ha hecho todo esto, ahora tiene un sistema de comercio probado de nuevo en NT. Como he dicho, no es fácil, pero es ciertamente factible. Una vez hecho esto, esté preparado para horas y horas (y horas) de trabajo y pruebas. Cuando empecé, subestimé groseramente el esfuerzo requerido. 1.3k Vistas middot Ver Upvotes middot No para ReproducciónMe preguntan frecuentemente cuánto tiempo uno debe backtest un sistema de comercio. Aunque no hay una respuesta fácil, te daré algunas pautas. Hay algunos factores que usted necesita considerar al determinar el período para backtesting su sistema de comercio: Frecuencia de comercio ¿Cuántas operaciones por día hace su sistema de comercio de generar Itrsquos no es importante cuánto tiempo backtest un sistema de comercio itrsquos importante que recibe suficientes oficios para Hacer suposiciones estadísticamente válidas: Si su sistema de comercio genera tres operaciones al día, es decir, 600 operaciones al año, un año de pruebas le proporciona datos suficientes para hacer suposiciones fiables. Pero si su sistema de comercio genera sólo tres operaciones al mes, es decir, 36 operaciones al año, entonces usted debe backtest un par de años para recibir datos fiables. Contrato subyacente Usted debe considerar las características del contrato subyacente. La siguiente tabla muestra el volumen diario promedio de la e-mini SampP: No tiene sentido retroprobar un sistema de comercio para el e-mini SampP antes de 1999, porque el contrato simplemente no existía En mi opnion no tiene sentido retroceder un e - mini sistema de comercio antes de 2002 porque en ese momento el mercado era completamente diferente menos liquidez y los participantes del mercado diferente. Creo que un período de prueba fiable para el e-mini SampP son los años 2002 ndash 2004. Lo que es quotstatistically validquot Recientemente recibí un artículo de un doctorado en statiscs. Explicó la correlación entre el tamaño de la muestra y el quotmargin del error en la tabla abajo. Cuanto mayor sea la muestra, menor será el margen de error, pero normalmente una fecha de muestra de 200 operaciones debe ser suficiente. Si su sistema de comercio genera suficientes operaciones, entonces usted debe utilizar 500 - 600 trades. Top Razones por las que debe utilizar QuantShare: Trabaja con los mercados de Estados Unidos e internacionales (stock, divisas, opciones, futuros, ETF.) Ofrece las herramientas que ayudarán Usted se convierte en un comerciante rentable Le permite implementar cualquier intercambio de ideas Artículos de intercambio e ideas con otros usuarios de QuantShare Nuestro equipo de soporte es muy sensible y responderá a cualquiera de sus preguntas Vamos a implementar las características que usted sugiere Muy bajo precio y mucho más características que la mayoría De otros programas de trading Gratis - No requiere tarjeta de crédito Principales razones por las que debe utilizar QuantShare: Advanced Charting Descargar EOD, intradía, fundamental, noticias y datos de sentimiento para cada mercado Potente Herramientas de análisis cuantitativo Backtest cualquier estrategia y generar diariamente comprar y vender señales Create Compósitos e indicadores de mercado Descargar indicadores, sistemas de negociación, descargadores, pantallas. Compartido por otros usuarios Actualizado en 2013-03-13 Algunos sistemas comerciales. Particularmente los fundamentales, pueden funcionar muy bien en acciones que pertenecen a ciertas industrias en particular y desempeñan mal en otras industrias. Al igual que backtesting un sistema de comercio para cada activo individualmente, puede utilizar QuantShare para implementar un sistema a continuación, realizar un backtest para cada industria. El sistema se optimizará y cada optimización mostrará el resultado de un backtest sobre las existencias pertenecientes a una industria en particular. ¿Su base de datos de QuantShare está poblada con datos de la industria? Para asegurarse de que lo es, seleccione Símbolo - Administrar automáticamente símbolos, marque uno o varios intercambios que le interesan, haga clic en Forzar la actualización de la información de símbolo y haga clic en Guardar. Después de unos segundos, QuantShare actualizará su lista de símbolos y agregará información de la industria si es necesario (Industria de cada acción en su base de datos) A continuación se muestra la descripción del sistema de comercio que se utiliza como ejemplo en este artículo. Comprar cuando el precio cruza por encima del promedio móvil simple de 25 bar Vender cuando el precio cruza por debajo de la media móvil sencilla de 25 bar Cómo implementar este sistema de comercio: - Seleccione Análisis - Simulador - Haga clic en Nuevo para crear un nuevo sistema comercial. (Sma (25), close) Close obtiene la serie de precios de las existencias SMA calcula el promedio móvil simple La función Cross detecta cuando el primer array se cruza Por encima de la segunda matriz - Haga clic en Crear sistema de comercio para guardar su estrategia Cuente el número de industrias En primer lugar, vamos a contar el número de industrias que tenemos en la base de datos. Seleccione Símbolo - Categorías, haga clic en la pestaña Industria para mostrar todas las industrias. Probablemente hay varios cientos de industrias allí por lo que tenemos que usar el editor de secuencias de comandos para contar estos. Abra el editor de secuencias de comandos (Tools - Script Editor), cree una nueva secuencia de comandos y luego escriba la siguiente fórmula: MessageBox. Show (Industry Count: Symbols. GetIndustryList (). Length. ToString ()) Haga clic en Execute the display the number of industries. Seleccione el sistema de comercio creado anteriormente y haga clic en Actualizar. Tenemos que usar una función personalizada (IndustryPosition) para obtener la posición del índice basada en su nombre. La función se puede descargar aquí: Posición de la industria de valores. En el editor de fórmulas, escriba las líneas siguientes: Optimizar (a, 0, 256, 1) b IndustriaPosición (industria ()) regla1 ab comprar cruz (cerrar, sma (25)) y regla1 vender cruzar (sma (25), cerrar ) La primera línea ordena a QuantShare para optimizar el sistema comercial variando la variable a de 0 al número total de industrias (usamos 256 aquí). La segunda línea obtiene la posición de la industria dentro de la lista de la industria. La tercera línea compara la variable optimizable con la posición de la industria. Esto significa que el sistema comercial comprará solamente acciones que pertenecen a la industria que están en la posición definida por la variable a. Después de actualizar su sistema de comercio, haga clic en Optimizar para iniciar el proceso de optimización. Adición de nombre de la industria al informe Como se puede ver en el backtesting anterior, el informe sólo muestra la posición de la industria dentro de la lista. No muestra el nombre de la industria directamente en la tabla de informes. No hay manera de ver para qué industria se basó una simulación a menos que abra el informe y luego seleccione S. I.M. I - Prom. Ficha Rendimiento comercial. Para agregar el nombre de la industria al informe, tenemos que usar el script de gestión del dinero. - Seleccione el sistema de negociación y luego haga clic en Actualizar - Seleccione la pestaña Administración de dinero - Haga clic en Agregar una nueva secuencia de comandos de gestión de dinero - Seleccione Evento OnStartSimulation y luego escriba la línea siguiente: - Seleccione Evento OnEndSimulation y luego escriba las siguientes líneas: MMPosition pos Portfolio. GetAllPositions () If (pos. Length 0) Símbolo sym Data. GetSymbolInfo (pos0.Symbol) Variables. SetVariable (Industry, sym. Industry) Vuelva a ejecutar la optimización para mostrar el nombre del sector en una columna aparte en el informe de backtesting.

Comments