A veces es necesario ver algún fragmento del historial de precios en forma de tabla. Esto se puede hacer mediante CTRL+U, seleccionando la pestaña Barras/Ticks. Introduciendo allí a mano el intervalo necesario. Es tedioso.
Es por eso que he creado una funcionalidad adicional, que se demuestra por el siguiente Asesor Experto.
#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/es/code/26132#include <fxsaber\Keyboard\Keyboard.mqh> // https://www.mql5.com/es/code/48393inputbool inTicks = true; // true - Ticks, false - Barsinputint inBefore = -60; // Antes en segundosinputint inAfter = 60; // Después en segundosinputENUM_TIMEFRAMES inPeriod = PERIOD_CURRENT; // Período (modo Barras)datetime GetTime( constint X )
{
int Window;
datetime Res;
double Price;
return(ChartXYToTimePrice(0, X, 0, Window, Res, Price) ? Res : 0);
}
voidOnChartEvent( const int32_t id, constlong &lparam, constdouble&, conststring& )
{
if ((id == CHARTEVENT_CLICK) && KEYBOARD::IsControl())
{
constdatetime Time = GetTime((int)lparam);
if (Time)
{
if (inTicks)
MTTESTER::CopyTicks(_Symbol, Time + inBefore, Time + inAfter);elseMTTESTER::CopyRates(_Symbol, inPeriod, Time + inBefore, Time + inAfter);
}
}
}
Usted hace clic (con CTRL presionado) en el lugar necesario del gráfico y automáticamente obtiene los datos tabulares correspondientes a la vez.
Las funciones seleccionadas simplemente rellenan ciertos campos de datos y los consultan. A continuación, a través de la interfaz gráfica de usuario se ve lo que le interesaba. Automatización, en general.
если бы время файлов в архиве совпадало со временем модификации в кодобазе. Не соответствует времени изменения конкретного файла. Я вижу корректную структуру после разархивирования а ведь сам редактор позволяет загрузить все эти файлы именно так
¡Buenos días, querido fxsaber! Por favor, ayúdame a resolver un problema. Mi script tiene una función de archivo, que he desarrollado con la ayuda de la gran biblioteca MTTESTER. Escribe Settin en la carpeta Tester en la siguiente línea: if(!kernel32::CopyFileW(SrcPath,DstPath,false)) // Sobrescribe Settin desde el sandbox Files a la carpeta Tester. Obtenemos un settin con el nombre: "After archiving". Pero no es apto para su posterior reescritura, aparentemente debido a la codificación. Sin embargo, si lo escribimos manualmente en el robot en el Probador de Estrategias y luego lo guardamos con el nombre "Después de escribir manualmente en el robot y guardar", este conjunto ya es adecuado. Y no es sólo cuestión de cambiar la cabecera, sino algo más. Pedí ayuda a los ironmen (Qwen, Deep Seek) y generaron un script "ReloadSetsFromCommonFixed". Tiene un montón de grandes características y funciona, excepto por esta línea: if(!FileCopy(source_path, FILE_COMMON, dest_path, FILE_COMMON)) El conjunto se copia, pero luego en la impresión de verificación la salida es abracadabrante, aparentemente debido a la codificación. Iron ofreció 4 soluciones, pero ninguna funcionó (el texto las tiene todas). Mi última esperanza son los de cuero. ¿Hay alguna forma de cambiar esta línea en la función de archivado: if(!kernel32::CopyFileW(SrcPath,DstPath,false)) para simular también la escritura manual en el robot con guardado posterior en el formato requerido "After manual writing to the robot and saving"? Saludos, Alexander
klycko #: ¿Hay alguna manera de cambiar esta línea en la función de archivo
Busqué aquí (en la ventana abierta pulse ENTER en la barra de direcciones) el registro establecido. Lo más probable es que se necesitan estas banderas.
prRead0 = MTTESTER::GetSettings(Control); // Lee la configuración del robot que se acaba de instalar
funciona correctamente y prRead0 = true después de su ejecución.
Pero en la red Control prMFI=true, ya que originalmente se cargó manualmente en el robot. Esto significa que la escritura en el robot no se produjo realmente, aunque el signo de escritura prWrite0 = true.
En la red original, prHEX=true
En la red original del robot, prMFI=true
El comando MTTESTER::SetSettings2(Settings) funciona, pero estos ajustes no aparecen en el robot.
Puedes guardar(inLoad = false) un set-file a través del script, luego cambiar algoen él a mano y cargarlo(inLoad = true) en el Tester a través del script.
Si funciona, tome las piezas correspondientes de la fuente para usted.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
A veces es necesario ver algún fragmento del historial de precios en forma de tabla. Esto se puede hacer mediante CTRL+U, seleccionando la pestaña Barras/Ticks. Introduciendo allí a mano el intervalo necesario. Es tedioso.
Es por eso que he creado una funcionalidad adicional, que se demuestra por el siguiente Asesor Experto.
Usted hace clic (con CTRL presionado) en el lugar necesario del gráfico y automáticamente obtiene los datos tabulares correspondientes a la vez.
Las funciones seleccionadas simplemente rellenan ciertos campos de datos y los consultan. A continuación, a través de la interfaz gráfica de usuario se ve lo que le interesaba. Automatización, en general.
5430 Las ventanas siguen parpadeando al preparar una tarea.
¿Cómo se arregla esto?
5430 Windows sigue parpadeando al preparar una tarea.
¿Cómo se soluciona?
Así.
Es un gran tema. Pero he descargado antes de que todo por separado todavía parpadea.
Vi que en el archivo MultiTester_Example.mq5
añadido líneas al archivo MultiTester_Example.mq5.
He comentado así o debo hacerlo de otra manera? ¿O puedo eliminar todas estas 4 líneas?
P.D. He visto que he cogido la antigua lista de tareas sin estas líneas y parpadeaba. Con las nuevas líneas no parpadea.
¿Pero he comentado correctamente sólo 1 línea?
Es un gran tema. Pero he descargado antes de que todo por separado todavía parpadea.
Vi que en el archivo MultiTester_Example.mq5
añadido líneas
¿Lo he comentado así o debo hacerlo de otra forma? ¿O puedo borrar estas 4 líneas en general?
P.D. He visto que he cogido la lista de tareas antigua sin estas líneas y parpadeaba. Con las nuevas líneas no parpadea.
¿Pero he comentado sólo 1 línea correctamente?
¿Hay alguna manera de cambiar esta línea en la función de archivo
Busqué aquí (en la ventana abierta pulse ENTER en la barra de direcciones) el registro establecido. Lo más probable es que se necesitan estas banderas.
Estas banderas ayudaron mucho y se resolvió el problema del archivo. Ahora el resultado está en el formato correcto.
Muchas gracias.
Pero en mi script Nocturne el comando no funciona correctamente :
prWrite0 = MTTESTER::SetSettings2(Settings); // Escribir configuración en el robot
Aunque prWrite0 = true después de su ejecución.
Probablemente es de nuevo una cuestión de banderas al leer el conjunto de Ajustes de la carpeta.
Esto se hace mediante la función GetKthFileContent, que tiene la línea:
int handle = FileOpen(full_path, FILE_READ | FILE_WRITE | FILE_UNICODE | FILE_TXT | FILE_COMMON);
Las variantes de la línea de abajo tampoco funcionan:
// int handle = FileOpen(full_path, FILE_READ | FILE_TXT | FILE_COMMON); // Fuente variante línea
// int handle = FileOpen(ruta_completa, FILE_READ | FILE_UNICODE | FILE_TXT | FILE_COMMON);
Siguiente comando:
prRead0 = MTTESTER::GetSettings(Control); // Lee la configuración del robot que se acaba de instalar
funciona correctamente y prRead0 = true después de su ejecución.
Pero en la red Control prMFI=true, ya que originalmente se cargó manualmente en el robot. Esto significa que la escritura en el robot no se produjo realmente, aunque el signo de escritura prWrite0 = true.
En la red original, prHEX=true
En la red original del robot, prMFI=true
El comando MTTESTER::SetSettings2(Settings) funciona, pero estos ajustes no aparecen en el robot.
¿Cuál es el problema?
Saludos, Alexander
¿Cuál es el problema?
No me molesté en estudiar las banderas y decidí escribir un código de trabajo para guardar y cargar set-files del Probador.
Puedes guardar(inLoad = false) un set-file a través del script, luego cambiar algoen él a mano y cargarlo(inLoad = true) en el Tester a través del script.
Si funciona, tome las piezas correspondientes de la fuente para usted.