[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 435

 
zorber:

También me gustaría solucionar este problema, pero el caso es que en el probador cuando se dispara una orden pendiente.... el tipo de orden no cambia... y no aparece en el registro como una orden de mercado... y no pude saber si se activó o no a partir de los datos de registro(((
 
kakin:

Profesionales, por favor, aconsejen. Si tengo una orden pendiente de stop colocada, pero el precio ha entrado en ella con un spread extendido que supera el stoploss.... ¿Qué pasará?

La orden se comerá por la propagación... ¿O se producirá un error y la orden no se activará?

El peor escenario para ti y que sucederá
 

Buenas tardes. GENTE, RESPONDA A LA PREGUNTA POR FAVOR (3ª vez que se publica). Pregunta sobre un índice de archivos... En mi libro de MQL4, que se encuentra en MQL4.community, en la sección "Funciones estándar", hay un ejemplo del script "Operaciones de archivo", que está pensado para leer datos de un archivo y mostrar objetos gráficos en una ventana de símbolos:

//--------------------------------------------------------------------
// timetablenews.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------- 1 --
int start()                            // Спец. функция start
  {
//--------------------------------------------------------------- 2 --
   int Handle,                         // Файловый описатель
       Stl;                            // Стиль вертикальной линии
   string File_Name="News.csv",        // Имя файла
          Obj_Name,                    // Bмя объекта
          Instr,                       // Название валюты
          One,Two,                     // 1я и 2я чать названия инстр.
          Text,                        // Текст описания события
          Str_DtTm;                    // Дата и время события(строка)
   datetime Dat_DtTm;                  // Дата и время события(дата)
   color Col;                          // Цвет вертикальной линии
//--------------------------------------------------------------- 3 --
   Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файла
   if(Handle<0)                        // Неудача при открытии файла
     {
      if(GetLastError()==4103)         // Если файла не существует,..
         Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера 
      else                             // При любой другой ошибке..
         Alert("Ошибка при открытии файла ",File_Name);//..такое сообщ
      PlaySound("Bzrrr.wav");          // Звуковое сопровождение
      return;                          // Выход из start()      
     }
//--------------------------------------------------------------- 4 --
   while(FileIsEnding(Handle)==false)// До тех пор, пока файловый ..
     {                                // ..указатель не в конце файла
      //--------------------------------------------------------- 5 --
      Str_DtTm =FileReadString(Handle);// Дата и время события(дата)
      Text     =FileReadString(Handle);// Текст описания события
      if(FileIsEnding(Handle)==true)   // Файловый указатель в конце
         break;                        // Выход из чтения и рисования
      //--------------------------------------------------------- 6 --
      Dat_DtTm =StrToTime(Str_DtTm);   // Преобразование типа данных
      Instr    =StringSubstr(Text,0,3);// Извлекаем первые 3 символа
      One=StringSubstr(Symbol(),0,3);// Извлекаем первые 3 символа
      Two=StringSubstr(Symbol(),3,3);// Извлекаем вторые 3 символа
      Stl=STYLE_DOT;                   // Для всех - стиль пунктир
      Col=DarkOrange;                  // Для всех - цвет такой
      if(Instr==One || Instr==Two)     // А для событий по нашему ..
        {                             // .. финансовому инструменту..
         Stl=STYLE_SOLID;              // .. такой стиль..
         Col=Red;                      // .. и такой цвет верт. линии
        }
      //--------------------------------------------------------- 7 --
      Obj_Name="News_Line  "+Str_DtTm;     // Имя объекта
      ObjectCreate(Obj_Name,OBJ_VLINE,0,Dat_DtTm,0);//Создаем объект..
      ObjectSet(Obj_Name,OBJPROP_COLOR, Col);       // ..и его цвет,..
      ObjectSet(Obj_Name,OBJPROP_STYLE, Stl);       // ..стиль..
      ObjectSetText(Obj_Name,Text,10);              // ..и описание 
     }
//--------------------------------------------------------------- 8 --
   FileClose( Handle );                // Закрываем файл
   PlaySound("bulk.wav");              // Звуковое сопровождение
   WindowRedraw();                     // Перерисовываем объекты
   return;                             // Выход из start()
  }
//--------------------------------------------------------------- 9 --

A continuación, al analizar este script en el Libro sobre MQL4, se da la siguiente frase: "si se elimina la comprobación especificada (las 2 últimas líneas del bloque 5-6), se creará un objeto extra en tiempo de ejecución. Y sólo después de eso, la condición de terminación del bucle while se activará y el control pasará al bloque 8-9".

¿Lo he entendido bien? Un puntero de archivo NO SE ENCUENTRA CON SIGNOS DE TEXTO (por ejemplo: texto| donde | es un puntero de archivo), sino que es un puntero CON EXPRESIÓN, por ejemplo: texto donde k es el carácter "a", k-ésimo es resaltado por un puntero de archivo. Esto explica la necesidad de las cuerdas (ver p.164):

      if(FileIsEnding(Handle)==true)   // Файловый указатель в конце
         break;                        // Выход из чтения и рисования
      //--------------------------------------------------------- 6 --

Sí, es cierto. En la penúltima iteración, después de crear el último objeto

2007.05.11 18:30;JPY

el puntero del archivo está en la posición del último objeto, es decir

2007.05.11 18:30;JPYFabricación industrial

(donde o es el carácter" o", k es el índice del archivo). Entonces, al pasar el control a la cabecera de la sentencia while, la función FileIsEnding(handle) obviamente devolverá true, porque el puntero del archivo NO está al final del archivo, sino al ÚLTIMO carácter de ese archivo. Entonces, cuando se ejecuten las dos primeras líneas, el puntero del archivo se moverá al espacio vacío y si no hay líneas

      if(FileIsEnding(Handle)==true)   // Файловый указатель в конце
         break;                        // Выход из чтения и рисования
      //--------------------------------------------------------- 6 --

el script creará un gráfico (es decir, una línea) con una descripción vacía y una coordenada de tiempo que corresponde a 0. Esto es lo que se quiere decir en la frase: "si se elimina la comprobación especificada (las dos últimas líneas del bloque 5-6), se creará un objeto extra en tiempo de ejecución". "

Pregunta: ¿he entendido bien?

a) la definición de un puntero de archivo;

b) el significado de la frase "Si se elimina la comprobación especificada (las 2 últimas líneas del bloque 5-6), se crearáun objeto extra en la ejecución del programa.Y sólo después de eso la condición de finalización del bucle while se activará y el control pasará al bloque 8-9".

P.S. Para no ensuciar el foro, gracias de antemano por su respuesta

 
Por favor, dígame, ¿cuándo y por qué el Asesor Experto a veces abre operaciones sin SL y/o TP, a pesar de que están prescritos en la configuración? Se abre, pero no se modifica.
 
yosuf:
Por favor, dígame, ¿cuándo y por qué el Asesor Experto a veces abre operaciones sin SL y/o TP, a pesar de que están prescritos en la configuración? Se abre y no se modifica.

Porque hay un "espaciador" entre la "configuración" y el comando OrderSend() del código del programa.
 
¿Cómo puedo abrir el archivo sin procesar en la carpeta del historial?
 
sss2019:
¿Cómo puedo abrir el archivo sin procesar en la carpeta del historial?

normas de búsqueda en el foro.

Se ha hecho durante mucho tiempo, ¿qué quieres hacer :)

 

Obtención de una lista de instrumentos financieros

y ya has publicado en este hilo

 
Ilan1.6El EA dinámico no funciona. Lo puse a operar por sí mismo. Pero no comercia. Qué hacer quién sabe ????
 

Buenas tardes! Buscando, no encontrando, y necesito aplicar diferentes magias para diferentes posiciones en el mismo instrumento. El algoritmo se rompe inmediatamente y hay muchos errores en el registro. ¿Es esto posible? Si es así, ¿dónde puedo buscar? Gracias.

Razón de la queja: