Errores, fallos, preguntas - página 363

 

¿De dónde toman la información SymbolsTotal() y SymbolName() en el probador? Tengo un desajuste entre el símbolo i-ésimo en el terminal y el probador.

Si en el terminal el 3º USDJPY entonces en el probador el 3º EURGBP.

Sólo estoy haciendo una enumeración de los símbolos de MarketWatch y codificándolos en Expert Advisor por números de serie.

 

¡Buenas tardes!

Tengo una pregunta sobre la funciónIndicatorSetString en la que se puede especificar un nombre corto para el indicador, en referencia al cual este indicador puede ser posteriormente eliminado del gráfico.

Creo que es una situación extraña.

En el PC de la oficina este procedimiento va bien, pero en el otro, el de casa, el valor de su nombre corto se establece automáticamente al principio (es decir, sin tener en cuenta los parámetros de entrada, que uso para formar un nuevo nombre), y el nuevo nombre aparece sólo después de separar el indicador y su recarga.

Lo primero que me vino a la mente fueron las diferencias en el software, pero después de comparar, me di cuenta de que todo es básico, idéntico:

- Códigos de expertos e indicadores;

- versión de software (Build 425);

- Sistema operativo (WinXP SP3);

- los mismos ajustes (especialmente comparados).

En general, la comprobación es la siguiente:

1. En la pantalla aparecen varios botones, cada uno de los cuales tiene un nombre corto y general de un indicador

2. Al pulsar el botón, aparece el indicador que le corresponde por el nombre común, y al soltarlo, se borra en función del nombre corto.

3. en el PC de la oficina los indicadores se borran desde la primera pulsación, mientras que en el PC de casa sólo desde la segunda.

¿Cuál podría ser la razón de esto?

Si esquemáticamente, excluyendo lo habitual para los expertos y los indicadores, así como otras funcionalidades que no están directamente relacionadas con la pregunta mencionada, queda como sigue:

1. En indicador Mi_Indicador:

   input double  Offset  = 0;
   int OnInit()  
   {  
      string NewNameIndicator = OldNameIndicator + Offset;
      IndicatorSetString (INDICATOR_SHORTNAME, NewNameIndicator);
   }

2. En EA:

   void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
   {  
        String ShortNameIndicator1;
        //---При нажатии            
        if (sparam==My_Button1.Name()){
            if(My_Button1.State()==true){
                Int handle = iCustom (_Symbol,_Period, "My_Indicator1 ", "FirstParameter");
                ChartIndicatorAdd(0,0,handle);
                ShortNameIndicator1 = ChartIndicatorName(0,0,ChartIndicatorsTotal(0,0)-1);
                 Alert (“State()=true, IndicatorName()=”,   ShortNameIndicator1);
             }
        }
         //---При отжатии
        if (sparam==My_Button1.Name()){
           if(My_Button1.State()==false){
                  Alert (“State()=false, IndicatorName()=”,   ShortNameIndicator1);
                  ChartIndicatorDelete(0,0,ShortNameIndicator1);  
           }
        }
    }

Como resultado:

En el PC de la oficina,IndicatorName sale como un nuevo nombre desde la primera pasada, mientras que en el PC de casa sólo desde la segunda pasada.

En el PC de la oficina, el IndicadorNombre se borra después de la primera pulsación, mientras que en el PC de casa se borra después de la segunda pulsación.

Al mismo tiempo, después de la primera pulsación y liberación en el PC de inicio se muestra el nombre original del indicador (Mi_Indicador sin añadir el parámetro de entrada al nombre), aunque el código del Asesor Experto y del indicador, repito, se utiliza en ambos casos el mismo.

 

Citando mi mensaje a servicedesk aquí


Версия и битность терминала



MetaEditor 5.00 build 425. Windows 7 ultimate, build 7600.

Описание проблемы

При создании файла скрипта с кодом

void OnStart()
{
}


El intento de compilación conduce a un error interno #108

después de descargar la última versión del terminal y reinstalarlo en la misma carpeta, el error ha cambiado a error interno #3

La secuencia de acciones
no sé si está relacionada con el error, pero empezó a aparecer justo después de que actualizara los archivos de ayuda de MQL5 mediante el correspondiente procedimiento automático del MetaEditor.

El resultado esperado


compilación normal del script))


El problema ha desaparecido hoy tras una limpieza antivirus del ordenador.

El malware parece ser nuevo, ya que no fue detectado por ninguno de los antivirus conocidos. Las manifestaciones externas fueron las siguientes:

  • La presencia de un archivo con un nombre sin sentido y extensión .dat en la carpeta c:\NWindows\AppPatch. La cabecera del archivo muestra que es ejecutable, el nombre original es dd.exe, y los campos "nombre del producto" y "copyright" son conjuntos de letras mayúsculas sin sentido.
  • presencia de una entrada Userinit modificada en la clave de registro HKLM\Software\Microsoft\Windows NT\Winlogon con la ruta de acceso al archivo mencionado. Cuando se elimina la entrada, ésta tiende a recrearse sin que se note si el virus sigue en la memoria.
  • ejecución ocasional de varias copias de los procesos conhost.exe y route.exe, y a veces netsh.exe
  • fallos con el MetaEditor 5)) - El editor de Metaquotes era un detector de malware bastante bueno además de todas sus características)

He limpiado todo en modo seguro.

Sí, se rayó la cuenta local de Webmoney, pero los datos de identificación no han desaparecido)))).

Recomiendo a todo el mundo que lo compruebe manualmente.

 
Urain:

¿De dónde toman la información SymbolsTotal() y SymbolName() en el probador? Tengo un desajuste entre el símbolo i-ésimo en el terminal y el probador.

Si en el terminal el 3º USDJPY entonces en el probador el 3º EURGBP.

Sólo estoy haciendo una enumeración de los símbolos de MarketWatch y codificándolos en Expert Advisor por números de serie.

No puede confiar en el orden de los símbolos en MarketWatch, porque puede ser cualquiera por definición.
 

Archivos adjuntos:
Test_X.mq5  1 kb
MyMQL4.mqh  5 kb
 
EvgeTrofi:

¿Qué es?

se parece a enum_TYPE_MARKET_INFO, en forma numérica.

A mí me pasa lo mismo. Denúncialo a la SD.

 
Renat:
No se puede basar en el orden de los caracteres en el marketwatch, porque puede ser cualquier orden por definición.

No se trata del orden de los símbolos ni del número de símbolos, sino que el orden y el número son diferentes en el terminal y en el probador al mismo tiempo.

He resuelto el problema pasando la lista de símbolos al probador a través de un archivo. Aunque sinceramente creo que se trata de un bug.

 
Urain:

No se trata del orden de los símbolos ni del número de símbolos, pero el orden y el número de símbolos al mismo tiempo son diferentes en el terminal y en el probador.

En general, resolví el problema pasando el juego de caracteres al probador a través de un archivo. Aunque sinceramente creo que es un bug.

No entiendo realmente el problema...

Y si el usuario cambia el orden de los caracteres en el Marketwatch mientras trabaja, ¿también será un error?

 
AlexSTAL:

No entiendo realmente el problema...

Si el usuario cambia el orden de los caracteres en Marketwatch mientras se está ejecutando, ¿también sería un error?

Cuando el probador se está ejecutando? Es poco probable, después de la puesta en marcha del probador se ejecuta de forma independiente, pero en el modo de pre-arranque se espera que los símbolos deben coincidir (los que están entre las pruebas de Asesores Expertos, por ejemplo, cuando se cambia un EA o cuando se cambia un símbolo o período, y cualquier cambio en la configuración del probador debe conducir a una coincidencia de símbolos, imho).
 
Urain:

No se trata del orden de los símbolos ni del número de símbolos, sino que el orden y el número son diferentes en el terminal y en el probador al mismo tiempo.

En general, resolví el problema pasando una lista de caracteres en el probador a través de un archivo. Aunque sinceramente creo que se trata de un bug.

La base de datos de símbolos (market watch) se actualiza de forma asíncrona y aleatoria desde el servidor. No puede confiar en su orden en ningún caso.

El comprobador es un programa independiente, a menudo remoto. En el probador, la base de símbolos no se transfiere por completo, sino sólo aquellos símbolos que se utilizan en los cálculos - esto se hace para ahorrar recursos. Por lo tanto, el orden de los símbolos (añadidos a la lista de símbolos activos en el probador) es diferente.

Utilizar nombres de símbolos en los parámetros: es una opción más segura.