Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 566

 

Hola a todos.

Por favor, aconséjeme una posible solución al problema.

Hay 2 o 3 o más indicadores funcionando. Cada uno tiene una línea: Comentario(" El indicador 1 está funcionando."); el siguiente Comentario(" El indicador 2 está funcionando."); etc. respectivamente.

Cómo, tal vez con la traducción "inteligente" del carro, para obtener una vista de la esquina superior izquierda de la pantalla (la siguiente inscripción no sobrescribe la anterior en un período de al menos 1 tick):

El indicador 1 está funcionando.

El indicador 2 está funcionando.

El LED 3 funciona.

etc.

 

¿Cómo declaro mi criterio de optimización en la compilación 610, en mi antiguo EA?

El Asesor Experto está funcionando en la versión 610.

Por ejemplo, en MQL5 el código es el siguiente:

double OnTester()
{
double prof=0.0;
prof=TesterStatistics(STAT_PROFIT);

  return(prof);
}

Si lo coloco en Expert Advisor antes de que se inicie, la columna personalizada no aparece.

Y la segunda pregunta: los antiguos EAs muestran un mensaje amarillo durante la compilación: la función debe devolver un valor.

Línea de ejemplo.

if(Work==false){Alert("Критическая ошибка. Эксперт не работает.");return;}
 
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

//--- параметры для записи данных в файл
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
string             InpFileName="";
int t=0;
int file_handle=-2;
double mass[];
int OnInit()
  {
   Comment("Start");
   InpFileName=StringConcatenate(WindowExpertName(),".csv");      // Имя файла  
 
   ResetLastError();
   file_handle=FileOpen(WindowExpertName()+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_CSV);   
   return(INIT_SUCCEEDED);
  }
void OnTick()
  {
   Comment(t);
   if(file_handle!=INVALID_HANDLE)
     {
      t++;
      ArrayResize(mass,t+1,10000);
      mass[t]=Ask;
      //--- запишем время сигналов и их значения в файл
      for(int i=0; i<ArraySize(mass); i++)
       FileWrite(file_handle,mass[t]);
      //--- закрываем файл
      FileClose(file_handle);
     }
   else
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",InpFileName,GetLastError());
  }
//+------------------------------------------------------------------+

No sé cómo escribir en la siguiente línea...

Estoy intentando escribir cada cita en una nueva línea y no funciona ....

 

Estoy probando un EA con un indicador personalizado. A veces las operaciones se abren de acuerdo con las condiciones, y otras veces no está claro en qué principio. Comienzo la visualización, el indicador se dibuja como debe ser, pero las ofertas no siempre coinciden con el indicador. Intenté comprobar las áreas problemáticas con las alertas, pero el indicador en el Asesor Experto muestra ceros también. No entiendo cuál es el problema, si el indicador se dibuja correctamente al hacer las pruebas, ¿dónde se pasan los valores del indicador al EA?

El código está en el Asesor Experto:
double line=iCustom(NULL,0,"Ttest3",Period_MA_1,p2,p3,p4,1,1);

if (line >0){Opn_B=true;}
if (line <=0){Cls_B=true;}
 
VOLDEMAR:

No sé cómo escribir en la siguiente línea...

Estoy intentando escribir cada cita en una nueva línea y no funciona ....


FileSeek
 
Forexman77:

Estoy probando un EA con un indicador personalizado. A veces las operaciones se abren de acuerdo con las condiciones, y otras veces no está claro en qué principio. Comienzo la visualización, el indicador se dibuja como debe ser, pero las ofertas no siempre coinciden con el indicador. Intenté comprobar las áreas problemáticas con las alertas, pero el indicador en el Asesor Experto muestra ceros también. No entiendo cuál es el problema, si el indicador se dibuja correctamente durante la prueba, ¿dónde se pasan los valores del indicador al Asesor Experto?

El código está en el Asesor Experto:

¿tal vez el problema esté en el EA?
 
Vladon:

¿tal vez el problema es con el asesor?
Sinceramente, yo mismo no lo sé. Hago un único indicador de prueba visual por encima de cero, en un porcentaje de siete, se abre una operación, en el resto no.
 

Se ha producido un error que no entiendo:

'li_cnt' - undeclared identifier

en la línea:

    return (li_cnt);

esta línea está en la función:

// 1.9 Инициализация рабочего массива. ====================================================================================================
int fInit_ArrayINT (int& fia_INT[],                                              // Инициализируемый массив
                    string fs_List,                                              // Инициализируемые значения в строке
                    int fi_Range,                                                // Размер массива
                    double fd_Factor = 1.0,                                      // множитель
                    string fs_NameArray = "",                                    // имя возвращаемого массива
                    string fs_Delimiter = ",")                                   // Разделитель значений в строке
{
//----
    //---- Ищем в строке разделитель - признак наличия в строке > 1 параметра
    if (StringFind (fs_List, fs_Delimiter) == -1) return (1);
    else
    {
        string lsa_TMP[];
        int li_cnt = fGet_StrArrayFromLine (fs_List, lsa_TMP, ",");
  
        if (fi_Range > 0)
        {
            if (li_cnt != fi_Range)
            {
                Print (fs_NameArray, ": не соотвествие в размерности массива !!!");
                li_cnt = fi_Range;
            }
        }
        fCreat_StrToInt (lsa_TMP, fia_INT, li_cnt, fd_Factor, fs_NameArray);
    }
//----
    return (li_cnt);
}
La variable li_cnt se declara como se ve. El compilador jura que no está declarado. ¿Qué significa esto?
 
hoz:

Se ha producido un error que no entiendo:

en la línea:

esta línea está en la función:

La variable li_cnt se declara como se ve. El compilador jura que no está declarado. ¿Qué significa esto?


Porque su variable está declarada dentro de if else
 
hoz:

Se ha producido un error que no entiendo:

en la línea:

esta línea está en la función:

La variable li_cnt se declara como se ve. El compilador jura que no está declarado. ¿Qué significa esto?

// 1.9 Инициализация рабочего массива. ====================================================================================================
int fInit_ArrayINT (int& fia_INT[],                                              // Инициализируемый массив
                    string fs_List,                                              // Инициализируемые значения в строке
                    int fi_Range,                                                // Размер массива
                    double fd_Factor = 1.0,                                      // множитель
                    string fs_NameArray = "",                                    // имя возвращаемого массива
                    string fs_Delimiter = ",")                                   // Разделитель значений в строке
{
//----
int li_cnt=0;
    //---- Ищем в строке разделитель - признак наличия в строке > 1 параметра
    if (StringFind (fs_List, fs_Delimiter) == -1) return (1);
    else
    {
        string lsa_TMP[];
        li_cnt = fGet_StrArrayFromLine (fs_List, lsa_TMP, ",");
  
        if (fi_Range > 0)
        {
            if (li_cnt != fi_Range)
            {
                Print (fs_NameArray, ": не соотвествие в размерности массива !!!");
                li_cnt = fi_Range;
            }
        }
        fCreat_StrToInt (lsa_TMP, fia_INT, li_cnt, fd_Factor, fs_NameArray);
    }
//----
    return (li_cnt);
}