Documentación
Aplicaciones
Última actualización el 15. 4. 2020 by Mark Fric
Indicadores externos
Page contents
Esta funcionalidad está disponible a partir de la versión 127. Tenga en cuenta también que esta funcionalidad ha pasado de llamarse Indicadores de datos personalizados a Indicadores externos en las últimas versiones.
Si usted tiene un indicador que desea utilizar en StrategyQuant, pero todavía no está soportado allí, usted tiene dos opciones:
- Implementar el indicador personalizado en Java en StrategyQuant CodeEditor - esto requiere algunos conocimientos de programación. Indicador añadido de esta manera va a funcionar como cualquier otro indicador que soporta SQ
- Importar el indicador personalizado como dato - de esta manera StrategyQuant puede utilizar el indicador sin saber exactamente cómo calculó sus valores.
Esto es más sencillo, pero tiene algunas limitaciones: debe exportar los valores del indicador desde su plataforma de negociación utilizando un script especial y, a continuación, importarlos a SQ. Por ejemplo, si calcula su indicador personalizado en EURUSD / H1 y desea utilizarlo para GBPUSD / H1 o incluso EURUSD / M30, tendrá que volver a exportar los datos desde su plataforma de negociación.
Esta documentación trata sobre la opción 2. - importar indicadores como datos.
¡Atención!
Los indicadores personalizados importados como datos se calculan en MetaTrader, Tradestation o su otra plataforma de negociación, no en SQ. Para obtener los resultados correctos debe utilizar los mismos datos históricos tanto en StrategyQuant como en MT4.
No funcionará calcular su indicador personalizado en MetaTrader con los datos de su corredor y luego utilizarlos en StrategyQuant en los datos de otra fuente. Antes de utilizar indicadores personalizados, sincronice los datos de su historial para que tanto SQ como MT4 utilicen el mismo historial
En este ejemplo implementaremos el indicador RVI que es un indicador de ejemplo estándar en la plataforma MT5:
Paso 1: Defina su nuevo indicador externo en StrategyQuant
Ir a Gestor de datos -> Indicadores externos y haga clic en Añadir nuevo.
Se abrirá un cuadro de diálogo de nuevo indicador en el que especificará las propiedades del indicador que está añadiendo:
Nombre
es el nombre del indicador que verá en SQ. Debe ser único y no puede contener ningún
personajes.
Debido a que el indicador personalizado se calcula específicamente para un símbolo y un marco de tiempo, es una buena práctica para establecer el símbolo de uso y TF también en su nombre, como en nuestro caso: RVI_EURUSD_H1.
Tipo de devolución
es un tipo de valor de retorno que el indicador calcula, es utilizado por StrategyQuant para hacer coincidir correctamente este indicador personalizado con otros bloques de construcción en el programa, de modo que compara el precio con el precio, y no por ejemplo el precio con el valor CCI. Puede ser:
- Número - si se trata de indicadores como CCI, RSI, MACD, etc.
- Precio - si el valor del indicador es el precio, como la media móvil o las Bandas de Bollinger.
- Precios - si el valor del indicador es rango de precios (diferencia entre dos precios), como ATR o Rango de Bandas de Bollinger.
- Señal - si desea utilizar el indicador como un bloque de señal personalizado, utilice esta opción. Puede utilizar el indicador de señal, por ejemplo, para reconocer patrones de velas o para implementar sus propias reglas de negociación simples.
Cómo decidir el tipo de devolución adecuado
Generalmente, si el indicador dibuja sus líneas en el mismo gráfico que el precio, entonces su tipo de retorno es precio. Si dibuja sus líneas en una ventana separada debajo del gráfico principal, entonces es Número, excepto para indicadores especiales como ATR que calculan la diferencia de precios o el rango.
Valores de los indicadores (líneas)
Estos son los valores de salida del indicador. Si nos fijamos en la captura de pantalla del indicador RVI a continuación se puede ver que las salidas de dos valores en la ventana de datos, y que corresponden a RVI (verde) y la línea de señal (rojo) en el gráfico.
Los valores deben definirse en el mismo orden en que se crearon en el indicador.
Luego hay una parte interesante - se puede definir el código fuente para cada plataforma de negociación para cada línea. Esto no es necesario para que el indicador funcione en SQ, pero es necesario para que SQ sepa cómo generar el código fuente de la estrategia para cada plataforma.
No es necesario definir fuentes para las tres plataformas (MT4, MT5, EasyLanguage). Si está utilizando sólo MT5, es suficiente especificar sólo ese código.
El código es la forma en que utilizaría este indicador en el código de su plataforma de negociación, para MetaTrader suele ser algo como:
iCustom(NULL, 0, "RVI", 10, 0, #Shift#)
Tenga en cuenta que puede utilizar #Shift# constante para el código MT4 - será reemplazado por el Shift real del building block durante la generación del código.
Shift en MetaTrader5 se utiliza de una manera diferente y no necesita ser calculado.
Haga clic en OK y se creará el nuevo indicador:
Todavía no se puede utilizar, porque se trata sólo de una definición - tenemos que importar datos a este indicador para que SQ pueda utilizarlo.
Paso 2: Obtener los valores de MetaTrader
Los indicadores personalizados funcionan de forma que StrategyQuant utiliza sus valores calculados en otro programa, por ejemplo en MetaTrader. Esto significa que debemos calcular el indicador en MetaTrader y luego importar su(s) valor(es) a SQ.
Esto es un poco complicado, pero por otro lado nos permite utilizar prácticamente cualquier indicador disponible para MetaTrader, incluso si no sabemos cómo se calcula exactamente.
Para calcular los valores de los indicadores usaremos un EA simple llamado SqIndicatorValuesExportEA.
Esta es la costumbre EA de StrategyQuant que se puede utilizar para exportar los valores del indicador de MetaTrader. Usted puede encontrar este archivo en la carpeta {StrategyQuant}indicadores_personalizadosMetaTrader5Expertos
Para utilizarlo en su MetaTrader debe copiarlo allí. Inicie su MetaTrader 5, vaya a Archivo ->Abrir carpeta de datos. Esto abrirá la carpeta de datos de MT5. Allí vaya a MQL5Experts copie este EA allí.
A continuación, reinicie su MetaTrader y el nuevo EA estará disponible.
Antes de poder utilizarlo, debemos modificarlo para que exporte valores del indicador RVI como queremos.
Abrir MT5 -> Herramientas -> Editor de idiomas MetaQuotes y busque y abra este nuevo EA desde la carpeta Expertos.
El código es relativamente sencillo de usar, hay que hacer cambios en unos pocos sitios:
- En OnInit debe especificar el nombre del archivo de exportación y el código iCustom:
int OnInit() { ... // este es el nombre del fichero de exportación. Es una buena práctica incluir también símbolo y timeframe fileName = "EURUSD_H1_RVI_10.csv"; // función para obtener el indicador indicatorHandle = iCustom(NULL, 0, "ExamplesRVI", 10);
- En OnTick debe actualizar qué valores (líneas del indicador) se calcularán y exportarán:
void OnTick() ... indicatorBufferIndex = 0; if(!FillArraysFromBuffers(IndicatorBuffer, indicatorHandle, 2)) return; indicatorBufferIndex = 1; if(!FillArraysFromBuffers(SignalBuffer, indicatorHandle, 2)) return;
Si el indicador tiene varias líneas, como en el caso de RVI, debe repetir las líneas:
indicatorBufferIndex = NUMBER; if(!FillArraysFromBuffers(BUFFER_NAME, indicatorHandle, 2)) return;
para cada línea.
Donde NUMBER es el número de línea empezando por 0 y BUFFER_NAME es el nombre de la matriz del buffer.
Hay dos matrices de memoria intermedia definidas al principio del archivo:
double IndicatorBuffer[]; doble SignalBuffer[];
puede añadir más si el indicador tiene más de dos líneas.
- Además en OnTick debes actualizar que método FileWrite y añadir los buffers a exportar al final:
FileWrite(handle, currentTime, rt[0].open, rt[0].high, rt[0].low, rt[0].close, rt[0].tick_volume, IndicatorBuffer[0], SignalBuffer[0]);
Esto es todo, ahora puede compilar el EA, está listo para ser utilizado.
Ejecutar el EA de exportación en MetaTrader
Una vez modificado el fichero SqIndicatorValuesExportEA y compilado sin problemas podemos ejecutarlo para exportar los valores.
Vaya a MT5 Strategy Tester, elija este Experto y seleccione el símbolo y el marco temporal para el que desea exportar los datos del indicador.
Debe elegir el símbolo y el marco temporal para los que debe calcularse el indicador, así como el intervalo de fechas apropiado.
A continuación, pulse Inicio y espere a que finalice la exportación.
Una vez finalizada la prueba EA, el archivo de exportación debería estar disponible en Carpeta de datos MT5pero hay un truco. El archivo generado no está en la carpeta Terminal, sino en la carpeta Tester.
Cuando abra Data Folder desde MT5, le mostrará su carpeta Terminal:
Pero el archivo no está allí. Tienes que subir a Tester, y allí ir a tu agente de pruebas/MQL5/Archivos para encontrar el archivo exportado:
Ahora puedes copiar y pegar el archivo en algún destino más conveniente cuando lo encuentres.
Paso 3: Importar los valores de los indicadores a StrategyQuant
Cuando tengamos los datos del indicador listos, podemos importarlos a nuestro indicador personalizado en StrategyQuant.
Ir a Gestor de datos -> Indicadores externos seleccione su nuevo indicador y haga clic en Importar datos de indicadores.
Allí busque el archivo y especifique las columnas de importación.
Si revisas el EA, los datos del indicador se exportaron como los dos últimos valores:
FileWrite(handle, currentTime, rt[0].open, rt[0].high, rt[0].low, rt[0].close, rt[0].tick_volume, IndicatorBuffer[0], SignalBuffer[0]);
Así que elige las dos últimas columnas como Valor1 y Valor2.
Haga clic en Iniciar importación y el indicador debería importarse correctamente.
Ahora el indicador está listo para ser utilizado en SQ.
Paso 4: Utilizar el indicador externo
Una vez importado, el indicador puede utilizarse como cualquier otro building block. Ir a Constructor -> Ajustes -> Bloques de construcción y debería ver nuestro nuevo RVI indicador allí:
Si no lo ves, por favor compruebe si tiene el plazo correcto en Ajustes -> Datos.
Recuerde que los datos de los indicadores siempre se calculan para un marco temporal específico, y no pueden utilizarse en otro marco temporal. Si cambia el marco temporal, por ejemplo, a M30, sólo verá los indicadores externos que se importaron para los datos de M30.
Una vez configurados los bloques de construcción, podemos iniciar la compilación.
Al cabo de un rato llenará la base de datos con nuevas estrategias que utilicen nuestro nuevo indicador externo.
Cuando abramos alguna estrategia, podremos comprobar el pseudocódigo:
Podemos ver que esta comparación de estrategias de nuestros indicadores RVI_EURUSD_H1.
Cuando cambiemos el código fuente a MetaTrader 5 generará código MT5 válido que podrá ser compilado y ejecutado en MT5:
También puede consultar el vídeo paso a paso en el que nuestro programador senior muestra cómo codificar su indicador personalizado. Enlace del vídeo: https://www.youtube.com/watch?v=veiqIh0BS10&t=26s&ab_channel=StrategyQuant
¿Le ha resultado útil este artículo? El artículo era útil El artículo no era útil
Valores de los indicadores (líneas):está mal explicado. ¿Y para TradeStation? ¿Cómo se utiliza el nombre? ¿Qué valores deben ir en el campo "Código" para TradeStation?