Asesores Expertos: Ejemplos del libro "Redes neuronales en el trading algorítmico en MQL5" - página 2
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Buenas tardes,
Estoy intentando ejecutar el primer script del libro, que genera un archivo csv.
Se llama datos_iniciales.mq5.
Al ejecutar el script en el primer paso:
If(CopyClose(_Symbol, PERIOD_M5, Start, End, close) <= 0 ||
CopyOpen(_Símbolo, PERIOD_M5, Inicio, Fin, abrir) <= 0 ||
CopyHigh(_Símbolo, PERIOD_M5, Inicio, Fin, high) <= 0 ||| CopyLow(_Símbolo, PERIOD_M5, Inicio, Fin, close) <= 0
CopyLow(_Símbolo, PERIOD_M5, Inicio, Fin, low) <= 0)
devolver;
CopyClose es siempre igual a -1
y el script se bloquea, las repeticiones no ayudan y según leo en los comentarios
esto es una situación normal y significa que no hay datos del servidor.
Sin embargo, no entiendo muy bien cómo se escribe la ruta a los archivos de datos en este script.
Está escrito en la documentación de MQL5:
Por ejemplo, los datos de los símbolos EURUSD del servidor de comercio MetaQuotes-Demo estarán ubicados en la carpetaterminal_directory\bases\MetaQuotes-Demo\history\EURUSD\.
Y tengo archivos con resolución .hcc y un subdirectorio \cache con archivos como H4.hc en él
Pero en el script initial_data.mq5, sólo hay un lugar donde se escribe la ruta.
PrintFormat("Coeficientes de correlación guardados en el archivo %s\\\\Files\\\\%s",
TerminalInfoString(TERMINAL_DATA_PATH), FileName);
I salida TERMINAL_DATA_PATH
2024.06.16 22:53:39.982 ruta (EURUSD,M5) dataPath =C:\Users\HPAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
¿Qué debo hacer para especificar correctamente la ruta a estos archivos o debe engancharlos automáticamente desde el directorio del terminal según la lógica MQL5?
¿Cómo descargar datos a un archivo csv?
Foro sobre negociación, sistemas automatizados de negociación y ensayo de estrategias de negociación
Cualquier pregunta de principiantes sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos
Aleksey Vyazmikin, 2024.06.18 06:28 pm
FileOpenParámetros
banderas_abrir
[in] combinación de banderas que definen el modo de trabajo con el archivo. Las banderas se definen como sigue:
FILE_READ archivo se abre para lectura
FILE_WRITEarchivo se abre para escritura
FILE_BINbinario modo lectura-escritura (sin conversión de y a cadena)
FILE_CSVarchivo de tipo csv (todos los elementos escritos se convierten en cadenas del tipo apropiado, unicode o ansi, y se separan por un delimitador )
FILE_TXTarchivo de texto plano (igual que csv, pero no se tiene en cuenta el separador)
FILE_ANSIcadenas de tipo ANSI (caracteres de un byte)
FILE_UNICODEcadenas de tipo UNICODE (caracteres de doble byte)
FILE_SHARE_READacceso de lectura compartido por varios programas
FILE_SHARE_WRITEacceso de escritura compartido por varios programas
FILE_COMMONubicación del archivo en la carpeta común de todos los terminales cliente \Terminal\Common\Files.
Nota
Por razones de seguridad, el trabajo con archivos está estrictamente controlado en el lenguaje MQL5. Los archivos, que se utilizan para las operaciones de archivo utilizando herramientas de lenguaje MQL5, no pueden ser localizados fuera de la "caja de arena" de archivos.
Si es necesario leer un archivo en una determinada codificación (se especifica el parámetro codepage con el valor codepage), se debe establecer la bandera FILE_ANSI. Sin especificar la bandera FILE_ANSI, el archivo de texto se leerá en Unicode sin ninguna conversión.
El archivo se abre en la carpeta del terminal cliente en la subcarpeta MQL5\Files (o en el directorio agent_agent\MQL5\Files en caso de pruebas). Si se especifica FILE_COMMON entre las banderas, el archivo se abre en la carpeta común de todos los terminales cliente \Terminal\Common\Files.
Puede abrir "canales con nombre" de acuerdo con las siguientes reglas:
En las lineas anteriores se utiliza el caracter especial de barra invertida '\', por lo que al escribir el nombre en el programa MQL5 se debe duplicar '\', es decir, el ejemplo anterior se debe escribir en el codigo como "\\\\servername\pipe\\\pipename".
Para más detalles sobre el trabajo con canales con nombre, por favor lea el artículo "Comunicación con MetaTrader 5 a través de canales con nombre sin DLL"
Sinceramente, no he entendido nada de la respuesta, como si escribiera un robot. Se donde se escribe el archivo a crear, pero no se crea.
Tengo una pregunta concreta, ¿cómo tomar los datos de los archivos .hcc y .hc para escribirlos en .csv?
Ejecutando el script initial_data.mq5 del libro como resultado:
CopyClose es siempre -1. ¿Cómo solucionarlo?
Tengo la sospecha de que no ve estos archivos porque la ruta a los archivos de datos no está escrita correctamente.
¿Cómo escribo correctamente la ruta a los archivos de datos?
En mi caso, los archivos de datos están en la carpeta terminal_directory\bases\MetaQuotes-Demo\history\EURUSD\ dentro de la caja de arena.
Llevo una semana luchando con esto, he leído de todo, pero no he encontrado una solución. Por favor, ayúdenme.
Sinceramente, no he entendido nada de la respuesta, como si escribiera un robot. Sé donde se escribe el archivo a crear, pero no se crea.
Tengo una pregunta específica, ¿cómo tomar los datos de los archivos .hcc y .hc para escribir en .csv?
Ejecutando el script initial_data.mq5 del libro como resultado:
CopyClose es siempre -1. ¿Cómo arreglar esto?
Tengo la sospecha de que simplemente no ve estos archivos, porque la ruta a los archivos de datos no está escrita correctamente.
¿Cómo especificar correctamente la ruta a los archivos de datos?
En mi caso, los archivos de datos se encuentran en el terminal_terminal_directory\bases\MetaQuotes-Demo\history\EURUSD\ carpeta dentro de la caja de arena.
Llevo una semana luchando con esto, he leído de todo, pero no he encontrado una solución. Por favor, ayúdenme.
Todos los datos se toman de la plataforma, al usuario no le importa de dónde los obtiene el terminal, de qué archivo.
El script trabaja con los datos que se reflejan en el gráfico.
Comprueba si en el gráfico hay fechas para las que solicitas cotizaciones.
Todos los datos se toman de la plataforma, al usuario no le importa de dónde los obtiene el terminal, de qué archivo.
El script trabaja con los datos reflejados en el gráfico.
Compruebe si en el gráfico hay fechas para las que solicita cotizaciones.
Por favor, explique qué significa esto.
En el script hay un rango
input datetime Start = D'2015.01.01.01 00:00:00'; // Comienzo del periodo
input datetime End = D'2020.12.31 23:59:00'; // Fin del periodo
en M5
¿Debo tomar el gráfico EURUSD en M5, desplácese hasta 2015.01.01 y luego ejecutar la secuencia de comandos en él?
¿O puedo ejecutar el script en MN? ¿Y con nuevos ticks vuelve al principio?¿Puede explicar qué significa eso?
En el script hay un rango
input datetime Start = D'2015.01.01.01 00:00:00'; // Comienzo del periodo
input datetime End = D'2020.12.31 23:59:00'; // Fin del periodo
en M5
¿Tengo que tomar el gráfico EURUSD en M5, desplácese hasta 2015.01.01 y luego ejecutar la secuencia de comandos en él?
¿O puedo ejecutar el script en MN? ¿Y con nuevos ticks se desplaza al principio de nuevo?Lee la ayuda del terminal. Y aquí hay otra cosa.
Usted encontrará que hay un ajuste de la profundidad de la historia a través del número máximo de barras en la ventana. Es necesario recargar el terminal para que los cambios surtan efecto.
Por lo tanto, es necesario establecer la profundidad máxima de la historia para todos los TFs a la vez por el TF más pequeño que se requiere para el trabajo.
Está claro que 100 barras para días y 100 barras para minutos darán la misma profundidad en barras, pero no en fechas.
Cuando establezca el valor requerido o "Ilimitado" y recargue el terminal, si el historial está disponible para el periodo requerido, podrá ejecutar el script en el TF mensual.
Lee la ayuda del terminal. Y aquí hay otra.
Usted aprenderá que hay un ajuste de la profundidad de la historia a través del número máximo de barras en la ventana. Para que los cambios surtan efecto, necesitas recargar la terminal.
Por lo tanto, es necesario establecer la profundidad máxima de la historia para todos los TF a la vez por el TF más pequeño, que se requiere para el trabajo.
Está claro que 100 barras para días y 100 barras para minutos darán la misma profundidad en barras, pero no en fechas.
Cuando establezca el valor requerido o "Ilimitado" y recargue el terminal, si el historial está disponible para el periodo requerido, puede ejecutar el script en el TF mensual.
Gracias. Funcionó.
De nada.
Gracias Dmitry por todos tus esfuerzos en este libro. Es realmente útil.
En neuronbase.mqh implementas el método de Regularización de ElasticNet como sigue sin explicación en tu libro.
m_cWeights.m_mMatrix -= m_cWeights.m_mMatrix * Lambda[1] + Lambda[0]
Pero es diferente de la fórmula básica (+) o del código fuente de Keras (+) por ejemplo.
Por favor, explique acerca de su método de implementación. Por qué sólo usas lambdas en lugar de la fórmula completa y por qué multiplicas pesos con una de ellas y sumas con otra.