Al final de la mejor pasada se toman los datos y a partir de ellos se forman (se establecen rangos de parámetros de entrada) varias tareas para la optimización.
Se realizan todas las optimizaciones a partir del punto 3.
Se toman los mejores pases de todas las optimizaciones del punto 4 y se guardan como conjuntos para la negociación de la cartera.
Resultó ser un escáner de mercado y ajustador de TS muy potente. No se necesitan fuentes de TC para estas manipulaciones.
Resultó ser un escáner de mercado y ajustador de TS muy potente.
#property script_show_inputs#include <fxsaber\MultiTester\MultiTester.mqh> // https://www.mql5.com/es/code/26132#include <fxsaber\MultiTester\Task.mqh>
inputbool OnlyCustomSymbols = true; // Sólo caracteres personalizadosinputbool AllSymbols = false; // Todos los caracteres o corrientevoid Add( conststring SymbName )
{
TesterSettings.Add(NULL, SymbName, 0, 0, 0, TASK::InitBase, TASK::DeinitBase);
for (int i = 0; i < ::inAmount; i++)
TesterSettings.Add(NULL, NULL, 0, 0, 0, TASK::InitSub, TASK::DeinitSub);
}
// Esta función se encarga de generar la lista de tareas.void SetTesterSettings()
{
if (AllSymbols)
// Buscar todos los símbolos de la Observación del Mercado.for (int i = SymbolsTotal(true) - 1; i >= 0; i--)
{
conststring Name = SymbolName(i, true);
if (!OnlyCustomSymbols || SymbolInfoInteger(Name, SYMBOL_CUSTOM))
Add(Name);
}
elseif (!OnlyCustomSymbols || SymbolInfoInteger(_Symbol, SYMBOL_CUSTOM))
Add(_Symbol);
}
El Asesor Experto debe tener
sinputint inMinTrades = 500; // Número mínimo de operaciones (posiciones).sinputint inMaxTrades = 90000; // Número máximo de operaciones (posiciones).doubleOnTester()
{
return(((TesterStatistics(STAT_TRADES) >= inMinTrades) && (TesterStatistics(STAT_TRADES) <= inMaxTrades)) ? TesterStatistics(STAT_PROFIT) : 0);
}
Desconozco las versiones anteriores. Pero la última versión puede ejecutar una prueba para el mismo instrumento varias veces.
Done aparece en el registro, luego vacío (Start no aparece), y el terminal ha iniciado una nueva pasada al mismo tiempo. Parece ser que else if (IsRun = (Init = TesterSettings.Init(Pos)) && TesterSettings.Run(Pos)) devuelve false, porque TesterSettings.Run(Pos) ha devuelto false. Y en la siguiente pasada del temporizador else if (MTTESTER::IsReady()) devolverá false, con lo que se hará un bucle de espera. El propio TesterSettings.Run(Pos)) devuelve false, parece ser trivial debido al timeout, es decir, simplemente no espera y sale.
Sí, eso es lo que he hecho yo, aumentarlo a 50. Pero sólo en caso de que alguien más va a tener un problema similar o desea ajustar en la versión general.
traveller00: Sí, eso es lo que he hecho yo, aumentarlo a 50. Pero por si alguien más tiene un problema similar o quiere modificarlo en la versión general.
Puse registro del número de intentos que tardaba en cambiar el estado del botón. Resultados interesantes.
Ahora total libertad para automatizar el Comprobador.
Uno de los ejemplos de aplicación real (todo se hace automáticamente)
Resultó ser un escáner de mercado y ajustador de TS muy potente. No se necesitan fuentes de TC para estas manipulaciones.
Resultó ser un escáner de mercado y ajustador de TS muy potente.
El Asesor Experto debe tener
Desconozco las versiones anteriores. Pero la última versión puede ejecutar una prueba para el mismo instrumento varias veces.
Done aparece en el registro, luego vacío (Start no aparece), y el terminal ha iniciado una nueva pasada al mismo tiempo. Parece ser que else if (IsRun = (Init = TesterSettings.Init(Pos)) && TesterSettings.Run(Pos)) devuelve false, porque TesterSettings.Run(Pos) ha devuelto false. Y en la siguiente pasada del temporizador else if (MTTESTER::IsReady()) devolverá false, con lo que se hará un bucle de espera. El propio TesterSettings.Run(Pos)) devuelve false, parece ser trivial debido al timeout, es decir, simplemente no espera y sale.
traveller00:
TesterSettings.Run(Pos)) devuelve false parece ser trivial debido al tiempo de espera, es decir, simplemente no espera y sale.
Si es así, prueba a aumentar este número
Nunca he tenido un caso en el que el botón Start no se convirtiera en un botón Stop durante mucho tiempo después de ser pulsado.
Ejecuté Example3 durante cien caracteres y todo funcionó bien.
Sí, eso es lo que he hecho yo, aumentarlo a 50. Pero por si alguien más tiene un problema similar o quiere modificarlo en la versión general.
Puse registro del número de intentos que tardaba en cambiar el estado del botón. Resultados interesantes.
ZY Tal vez este error sigue afectando.