Friday, December 23, 2016

Vbscript Promedio Móvil


CSIs Ventaja injusta Guía práctica: Cómo uso UA para el comercio / desarrollo de un sistema Desde el ejemplo de Bollinger Bands, ahora sabemos agregar un estudio a un gráfico, pero qué pasa con los estudios que tienen señales de comercio Esta página nos lleva a través de tales un ejemplo. 1. Siga las instrucciones para aplicar las Bandas de Bollinger a un gráfico, pero elija Medias móviles, luego MACross en lugar de BollingerBands. Aquí he elegido un contrato corto de maíz con ajuste de espalda. 2. Si abrimos la cruz con el botón de retícula:. Y mover el ratón a algún lugar donde hay una línea roja El indicador en sí está en ese color azul-verde que se puede ver mirando en la caja de los retículos. La línea azul es el patrimonio abierto, y la línea gris es el patrimonio cerrado. Los errores azules son puntos de entrada. La línea roja muestra el precio de entrada para que pueda medir si está adelante o atrás (sin contar la comisión y el deslizamiento.) La flecha roja muestra el punto de salida del comercio. 3. Para simplificar las cosas, podemos eliminar las líneas de equidad. Esto se hace haciendo clic derecho en el gráfico y eligiendo la equidad del sistema de visualización para desmarcarlo. 4. Ahora que podemos ver el indicador y los oficios gráficamente, nos gustaría saber las estadísticas de rendimiento. Para empezar, vamos a cerrar el cuadro de crosshairs haciendo clic en el botón de la barra de herramientas de crosshairs. . A continuación, haga clic con el botón secundario en el gráfico y seleccione Ver estadísticas de rendimiento del sistema. Tenga en cuenta que si la serie que ha seleccionado, no tiene ninguna operación, esta opción estará en gris. 5. La ventana View System Performance se abre a la página CurrentStatus. Esta página muestra qué sistemas están en el gráfico, si son largos o cortos y qué órdenes están pendientes. En la parte inferior de la tabla, muestra cuántos sistemas son largos y cuántos son cortos. Si hacemos clic en la pestaña Resumen, podemos ver la estadística sobre cada sistema en este gráfico. 6. Las estadísticas de cada sistema se informan una tras otra. Para obtener descripciones de los diversos campos, consulte el manual de UA. Si hacemos clic en la ficha Trade-By-Trade para el estudio 1, podemos ver lo que pasó. 7. Esto muestra para cada comercio, la entrada y salida y si está abierto o cerrado. La ganancia o pérdida depende del tamaño del contrato. Esta vista y la vista gráfica son las vistas clave para el desarrollo del sistema. (No lo hagas ahora, pero uno puede hacer doble clic en un oficio para ocultar la tabla y ver el centro del gráfico en el comercio elegido.) Si ves un comercio que no encaja con tus expectativas, siempre puedes mirar la lista de pedidos por Haciendo clic en la pestaña Lista de pedidos. 8. Ahora que tenemos un sistema aplicado a un gráfico y sabemos cómo ver las órdenes, cómo mejoramos el rendimiento Primero, veamos cómo optimizar los parámetros. Cierre la tabla de rendimiento haciendo clic en el botón Aceptar. Esto debería traer de vuelta a la tabla. Necesitamos editar el estudio, por lo que abrimos la barra de herramientas de estudio haciendo clic en el botón de la barra de herramientas de estudio:. 9. Ahora queremos hacer clic en el botón e junto a MACross en el gráfico:. Los botones de control del estudio pueden estar ocultos detrás de la barra de herramientas de estudio, así que intenta mover la barra de herramientas de estudio a la izquierda si no puedes encontrar el botón e. 10. Ahora hacemos clic en el botón Optimizar en la parte inferior izquierda. 11. Supongamos que queremos optimizar ambos parámetros, la media móvil de 3 días y la media móvil de 5 días. Luego, en el cuadro de edición de Expression, entraríamos MACross (1,2) donde 1 y 2 son variables que vamos a cambiar. A continuación, presione la tecla de tabulación en el teclado, o haga clic en la tabla en el centro de la gráfica. 12. Ahora llene la tabla para describir el rango de valores aceptables de los parámetros. Por ejemplo, 13. Para cambiar la base de comparación, abra el menú desplegable de la izquierda y cámbielo para leer No vamos a usar Smart Optimize en este ejemplo, porque es una opción peligrosa. Smart Optimize encontrará el mejor conjunto de parámetros mucho más rápidamente, pero lo hace por renunciar a las combinaciones improductivas muy fácilmente. Para sistemas complejos con mucha historia, es para Smart Optimize perderse en algunas combinaciones de parámetros mediocres, ya que no intenta impulsar a través de avenidas que no son inmediatamente más rentables. El Smart Optimize es bueno para encontrar parámetros razonables rápidamente que es útil cuando se le da un sistema sobre el que no está familiarizado o que tiene tantos parámetros que incluso encontrar un punto de partida es difícil. 14. En su lugar, vamos a presionar el botón Ejecutar. 15. UA ejecutará ahora el sistema con cada combinación de 1 y 2 que estén dentro del rango especificado. Si este proceso está tomando un tiempo excesivamente largo, trate de hacer el rango de parámetros más pequeño o el tamaño del paso más grande. Si los parámetros optimizados salen cerca de los límites reducidos, vuelva a ejecutar la optimización con el optimium anterior en el centro de la segunda ejecución. También puede optimizar primero un conjunto de parámetros de disparo, por ejemplo, un conjunto de parámetros de parada, y luego volver a los parámetros de disparo hasta que esté satisfecho de haber encontrado la mejor combinación. Cuando se hace, se le debe preguntar: 16. Normalmente usted responderá a esta pregunta con No, porque aún no sabemos, si estos parámetros optimizados son buenos, pero a veces usted querrá cambiar los parámetros en la barra de herramientas de estudio para que coincida Los valores optimizados. Por ahora, presione el botón No. 17. Ahora cierre la barra de herramientas del estudio, haga clic con el botón derecho en el gráfico y elija la opción de menú Ver informe de optimización del sistema. 18. Esto abre el formulario View Optimization Performance que tiene una tabla con una combinación de parámetros por fila y todas las estadísticas de rendimiento tienen una columna. De forma predeterminada, está ordenada por el parámetro de optimización, pero puede ordenar cualquier columna haciendo clic en el encabezado de la columna. Lo que nos interesa es si parámetros similares 2,6 producen aproximadamente los mismos resultados que 1,6, que debería ser aproximadamente igual a 1,7. Lo que vemos es que 1,6 hizo 1600, mientras que 1,7 sólo hizo 275. Esto nos dice que el optimium encontrado no es robusto. La historia nunca se repite exactamente así que si un sistema sólo produce buenos resultados para la situación exacta ofrecida, y falla miserablemente en una situación ligeramente diferente, entonces es más probable que si cambie este sistema en el futuro, producirá resultados mucho peores que en El conjunto de optimización. Dado que no encontramos ninguna combinación de parámetros que nos gustó, tal vez tenemos que cambiar el código. Cierre el formulario Ver rendimiento de optimización y abra la barra de herramientas de estudio. Pulse de nuevo el botón e:. 19. Para editar el código, debemos poder verlo, así que presione el botón More gtgt. 20. Ya que no nos gusta la combinación de parámetros de todos modos, vuelva a seleccionar Moving Average - gt MACross haciendo clic con el botón derecho en el cuadro de expresión memo (el cuadro blanco superior). 21. UA automáticamente le lleva al inicio del código para su selección en el cuadro de memo de la biblioteca (el cuadro blanco inferior.) Permite revisar el código por un momento: función MACross (p1, p2) Esta línea declara el estudio a la VBScript InterpreterDIAdem Media móvil en DIAdem Im tratando de implementar un cálculo del promedio móvil en DIAdem. La función de suavizado no funcionará para mi aplicación, ya que no se retrasan los cambios en los datos como lo hace un promedio móvil. Alguien puede recomendar la mejor manera de hacer esto realmente no conozco ningún VBS. Tengo un VI para hacer la media móvil, pero no sé cómo pasar todos los datos de un canal a la VI. Debo guardar los datos del canal en un archivo. tdm, llamar al VI y pasar la ruta al archivo. tdm, hacer mis calcs en el VI, guardar los resultados en un nuevo archivo. tdm e importar el archivo. tdm Volver a un nuevo canal Es realmente la mejor manera de hacerlo Si es así, cualquier puntero sobre cómo crear un diálogo para seleccionar el canal que se pasa sería útil. Puede llamar a su VI con el objeto LVRuntime en un DIAdem VBScript. En general, el mejor enfoque para la matriz que pasa entre DIAdem y LabVIEW es I / O de archivos con archivos TDMS. Puede llamar DataFileSaveSel () y especificar el TDMS DataPlugin y el canal o canales para salvar del portal de datos, a continuación, pasar a la ruta del archivo TDMS a la entrada VI utilizando el objeto VI se obtiene a partir del objeto LVRuntime (ver el ejemplo de la función de Bessel En DIAdem). En realidad, sin embargo, la función Suavizado en ANÁLISIS DIAdem es un promedio de funcionamiento. No estoy seguro de lo que quiere decir con retraso, está usted quizás particularmente interesado en una función de la diadema media móvil de un solo lado siempre es simétrica a la mitad de la matriz y, pueden alojarse simétrica o utilizar todos los puntos que cabe en el tamaño de la ventana en movimiento Al principio y al final de la matriz. DIAdem Ingeniero de Soporte de Producto Mensaje 2 de 11 (1,545 Visitas) Re: Media móvil en DIAdem 12-16-2011 12:26 PM Sí, necesito una media móvil unilateral. Estoy tratando de replicar un proceso en el que un monitor de temperatura está calculando un promedio de funcionamiento continuo de los últimos 30 minutos. Hasta ahora puedo abrir un cuadro de diálogo para seleccionar el canal y luego guardar este canal como un archivo. tdm. Mi vi abrirá este archivo y hará su cosa y luego escribirá los nuevos datos en un nuevo archivo. tdm. Me puede dar algunas indicaciones sobre cómo abrir un archivo. tdm y cargarlo en el portal de datos a través de una secuencia de comandos Además, es TDMS preferidas sobre TDM para este Mensaje 3 de 11 (1.543 Visitas) Re: Media móvil en DIAdem 12-16-2011 Has echado un vistazo al documento Cómo puedo calcular una media móvil en DIAdem? Si no, definitivamente sugeriría echar un vistazo aquí. Aunque utiliza el suavizado para calcular el promedio móvil, creo que lo encontrará adecuado para su aplicación ya que, como explica el artículo, el ancho de suavizado se ve en puntos de ambos lados del punto de interés. Si esto no es una opción para su aplicación, a continuación, si usted podría proporcionar más detalles sobre lo que necesita el promedio móvil para lograr que la función de suavizado no puede proporcionar, podría ser capaz de ofrecer sugerencias adicionales. Edit: Lo siento, escribí esto antes de ver su respuesta Erik. Mensaje 4 de 11 (1.542 Visitas) Re: Media móvil en DIAdem 12-16-2011 14:37 Otro de los recursos que puede utilizar para comprender los pasos necesarios para llamar a un subVI LabVIEW de diadema se describen en este documento: Llamar a un LabVIEW SubVI De DIAdem. Este documento le guiará paso a paso a través del proceso y también proporciona un script de ejemplo para su uso y aprendizaje. Stephanie O. DIAdem Gerente de Producto National Instruments Mensaje 5 de 11 (1,523 Visto) Re: Media móvil en DIAdem 12-16-2011 02:48 PM - editado 12-16-2011 02:53 PM También puede usar este comando para cargar Datos en el portal de datos desde un script. Puede ingresar una ruta de acceso a su archivo aquí. Este es un artículo de ayuda si desea más información sobre esta función. Stephanie O. DIAdem Gerente de Producto National Instruments Mensaje 6 de 11 (1,517 Visitas) Re: Media móvil en DIAdem 12-16-2011 04:00 PM Im capaz de llamar a mi vi sin ningún problema. El vi calcula el promedio móvil, escribe un nuevo archivo tdms y pasa la ruta de acceso a este nuevo archivo al script DIAdem. En el script de DIAdem utilizo This all works ok. Pero cuando ejecuto el script por segunda vez, pasando un nuevo canal al vi, el vi escribe al mismo nuevo archivo tdms pero con un nuevo nombre de canal. Llamar a DataFileLoad de nuevo abre el nuevo archivo tdms pero carga el antiguo canal de nuevo (bajo un nuevo grupo), aunque los canales ya no están en el archivo. Tengo los mismos resultados al cargar el archivo desde Navigator. Si elimino el grupo antes de ejecutar el script la segunda vez que el nuevo canal carga ok. Parece que el almacén de datos no está siendo actualizado por lo que Call DataFileLoad no está realmente leyendo el nuevo archivo. Llamar a DataFileSelDlg (PathTo2ndFile, TDMS) funciona bien, pero luego tengo que seleccionar el canal cada vez, aunque sólo hay 1 canal en el archivo. Yo podría estar divagando. Aquí está la versión concisa. Cargar el mismo archivo. tdms varias veces carga el mismo canal en un nuevo grupo cada vez, aunque el nombre del canal y los datos en ese archivo cambian antes de abrirlo cada vez. Aquí está mi script: Dim PathtoVI, VI, PathTo1stFile, PathTo2ndFile, Tamaño Configurar las variables Si SUDDlgShow (Selección, C: NIDIAdemScriptsSelec tion. sud) IDOK Entonces PathtoVI CurrentScriptPath MovingAverageTDMS. vi Conjunto VI LVRuntime. LoadVI (PathtoVI) VI. SetControlValue 1stFile, Tamaño PathTo1stFile VI. SetControlValue, NumPoints PathTo2ndFile VI. GetControlValue (2ndFile) Cuál es su comportamiento deseado aquí está tratando de sobrescribir el archivo TDMS / canal cada vez, o anexar al archivo TDMS cada vez está tratando de cargar sólo el conjunto más reciente De datos, o todo el conjunto de datos adjuntos Si la limpieza interactiva del Portal de Datos funciona para usted, entonces puede hacer por programación lo mismo (Call Data. Root. Clear ()). Si cargar un canal de forma selectiva funciona para usted, entonces puede utilizar el comando DataFileLoadSel () en lugar de DataFileSelDlg () para cargar selectivamente un canal sin el uso del diálogo. Para un consejo más personalizado, siéntase libre de publicar sus archivos (guión, VI) y su comportamiento deseado y trataré de identificar donde las cosas van mal. Tengo problemas para seguir junto con el comportamiento deseado vs. real usando la descripción proporcionada. Derrick S. Gerente de Productos de NI DIAdem de National Instruments Esta era la secuencia: VI crea un archivo TDMS: Nombre de archivo, MyFile. tdms Grupo MvgAvg, la escritura de Canal Channel1Data diadema carga del canal de MyFile. tdms. Portal de Datos de muestra: Grupo MvgAvg, Canal Channel1Data VI crea otro archivo TDMS: Nombre de archivo (MyFile. tdms mismo nombre de archivo), Grupo MvgAvg (mismo nombre de grupo), Canal Channel2Data (nuevo canal) guión diadema carga del canal de MyFile. tdms. Data Portal muestra: Group MvgAvg, Channel Channel1Data1 (los mismos datos, sólo el nombre agregado) Hoy estoy viendo resultados ligeramente diferentes. Los nuevos datos de canal se cargan pero DIAdem crea un nuevo grupo cada vez. 1ª importación: Grupo MvgAvg, Canal Channel1Data 2ª importación: Grupo MvgAvg2, Canal Channel2Data 3ª importación: Grupo MvgAvg3, Canal ChannelxData. Esto todavía no es exactamente lo que estoy esperando, pero creo que puedo arreglarlo. El tema que estaba teniendo el viernes fue que no estaba cargando el nuevo archivo. Parecía como si estuviera recargando los datos anteriores. Si alguien tiene alguna idea, Id amor a entender lo que es exactamente / estaba sucediendo. De lo contrario trabajo malo en tener mi VI escribir varios canales a un archivo y luego importar sólo un archivo. No estoy seguro de la solución correcta aunque ya que la suma del promedio de cada muestra introduciría una cantidad justa de error de redondeo. Hmm. Me pregunto si separar la parte fraccionaria de la parte entera ayudaría. Divida la parte entera de cada número por el recuento. Mantenga tres cantidades corrientes: 1) El promedio de las partes enteras, 2) El resto de cada división, y 3) La parte fraccional de cada número. Cada vez que se divide la parte entera de un número, el resultado de la parte entera se añade a la suma corriente de funcionamiento y el resto se añade a la suma corriente restante. Cuando la suma corriente restante obtiene un valor mayor o igual que el recuento, se divide por el recuento con el resultado de la parte entera añadido a la suma corriente de funcionamiento y el resto se agrega a la suma corriente restante. Además, en cada cálculo, la parte fraccionaria se añade a la suma de ejecución fraccionaria. Cuando se termina el promedio, la suma corriente restante se divide por el recuento y el resultado se añade a la suma corriente de ejecución como un número flotante. Por ejemplo: Ahora qué hacer con la suma de ejecución fraccionaria. El peligro de desbordamiento es mucho menos probable aquí, aunque todavía es posible, así que una manera de manejarlo sería dividir la suma de ejecución fraccional por el recuento al final y agregarlo a nuestro resultado: Una alternativa sería comprobar el funcionamiento fraccionario Suma en cada cálculo para ver si es mayor o igual que count. Cuando eso sucede, haz lo mismo que hacemos con la suma restante.

No comments:

Post a Comment