Si conoce los nombres de las entradas, la segunda opción es mejor. Le permite no pensar en el orden de las entradas en el Asesor Experto. Y técnicamente está mejor implementada.
A pesar de que inpFirst es el segundo en el orden, se puede establecer a cualquier cosa (en este caso se establece para ser el primero y el único). Los que no se establecen será por defecto.
Surge la tarea de reiniciar una docena de Asesores Expertos diferentes en más de un Terminal. En general, una gran rutina.
Por ejemplo, corregimos algo. A continuación, la compilación por lotes en ME y reiniciar. Yo uso un script para ello.
// Recarga EAs en todos los gráficos.inputint inInterval = 5; // Intervalo en segundos entre reinicios del gráficobool ReloadChart( constlong Chart )
{
return (ChartSaveTemplate(Chart, "\\Files\\" + __FILE__ + ".tpl") &&
ChartApplyTemplate(Chart, "\\Files\\" + __FILE__ + ".tpl") && // Poner la tarea en la cola de gráficos.ChartGetInteger(Chart, CHART_WINDOW_HANDLE)); // Haz que la cola se mueva.
}
voidOnStart()
{
constlong chartID = ::ChartID();
for (long Chart = ChartFirst(); (Chart != -1) && !IsStopped(); Chart = ChartNext(Chart))
if ((Chart != chartID) && (ChartGetString(Chart, CHART_EXPERT_NAME) != NULL) && (ReloadChart(Chart)))
Sleep(inInterval * 1000);
}
// Hace que la variable de entrada del fichero sea igual al fichero seleccionado.bool FileDialogToInput( conststring InputName, constlong Chart = 0 )
{
string FileNames[];
constbool Res = (FileSelectDialog(MQLInfoString(MQL_PROGRAM_NAME) + " " + _Symbol + " " + EnumToString(_Period) +
": input string " + InputName + " = ",
NULL, NULL, FSD_FILE_MUST_EXIST, FileNames, NULL) > 0);
if (Res)
{
MqlParam Params[];
string Names[];
constint ExpertMode = EXPERT::Parameters(Chart, Params, Names);
constint Size = ArraySize(Params);
if (Size)
{
Params[0].string_value += "\nexpertmode=" + (string)ExpertMode;
for (int i = 1; i < Size; i++)
{
if (Names[i - 1] == InputName)
Params[i].string_value = FileNames[0];
EXPERT::AddInputName(Params[i], (Names[i - 1] == NULL) ? " " : Names[i - 1]);
}
EXPERT::Run(Chart, Params);
}
}
return(Res);
}
Esta función permite seleccionar un fichero como variable de entrada. Esta implementación.
inputstring inFileName = NULL; // Fichero seleccionado#define TOSTRING(A) #A
intOnInit()
{
if (!FileIsExist(inFileName))
return(FileDialogToInput(TOSTRING(inFileName)) || INIT_FAILED);// Código si se especifica un archivo válido en la variable de entrada.return(INIT_SUCCEEDED);
}
Inicio.
Haga clic en Aceptar y seleccione.
Haga clic en Abrir y vea las propiedades (F7) del EA en ejecución.
Lo mismo funcionará con cualquier número de archivos.
inputstring inFileName1 = NULL; // Fichero1 seleccionadoinputstring inFileName2 = NULL; // Fichero2 seleccionado#define TOSTRING(A) #A
intOnInit()
{
if (!FileIsExist(inFileName1))
return(FileDialogToInput(TOSTRING(inFileName1)) || INIT_FAILED);
if (!FileIsExist(inFileName2))
return(FileDialogToInput(TOSTRING(inFileName2)) || INIT_FAILED);
// Código si se especifica un archivo válido en la variable de entrada.return(INIT_SUCCEEDED);
}
A pesar de que inpFirst es el segundo en el orden, se puede establecer a cualquier cosa (en este caso se establece para ser el primero y el único). Los que no se establecen será por defecto.
La utilicé así.
Surge la tarea de reiniciar una docena de Asesores Expertos diferentes en más de un Terminal. En general, una gran rutina.
Por ejemplo, corregimos algo. A continuación, la compilación por lotes en ME y reiniciar. Yo uso un script para ello.
He marcado un lugar importante en el código. Sin ella, la aplicación de la plantilla no será hasta el final de la secuencia de comandos. Por analogía, puede resolver el lanzamiento de Asesores Expertos después de recargar el Terminal, etc.
Surge la tarea de reiniciar una docena de Asesores Expertos diferentes en más de un Terminal. En general, una gran tarea.
Por ejemplo, corregimos algo. Entonces compilación por lotes en ME y reiniciar. Yo uso este script para ello.
He resaltado un lugar importante en el código. Sin ella, la plantilla no se utilizará hasta el final de la secuencia de comandos. Por analogía, se puede resolver el lanzamiento de Asesores Expertos después de recargar el Terminal, etc.
Será un conjunto completo si puede obtener el nombre del EA en el gráfico especificado. Si no te resulta difícil, termínalo.
Estará completo si consigues poner el nombre del concejal en el cuadro especificado. Si no le importa, por favor, complételo.
Esto es MT5. Si necesita multiplataforma o ruta completa para el Asesor de Expertos, a continuación, a través de Expert.mqh.
Esto es MT5. Si necesita multiplataforma o ruta completa al Asesor Experto, a continuación, a través de Expert.mqh.
Usted necesita cruz-plataforma...
Necesita un cros-platformer...
Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading.
Bibliotecas: Expert
fxsaber, 2019.09.12 06:17 pm.
Esta función permite seleccionar un fichero como variable de entrada. Esta implementación.
Inicio.
Haga clic en Aceptar y seleccione.
Haga clic en Abrir y vea las propiedades (F7) del EA en ejecución.
Lo mismo funcionará con cualquier número de archivos.
¿Y la carga de parámetros desde archivos de configuración aún no está soportada, según tengo entendido?
Yo no lo he hecho. Pero es muy sencillo.