[¡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 431

 
hoz:

La documentación dice que la función iCustom debe utilizarse para llamar a indicadores de terceros.

El segundo parámetro de esta función es el plazo. Si tengo este parámetro en un indicador, y será especificado en los parámetros de la función iCustom, hay un lugar después del parámetro nombre para introducir la lista de parámetros pasados por el indicador.

Así que. En cualquier caso, pasaré el parámetro del marco temporal del indicador. Si especificamos el mismo parámetro en 2 lugares, no es lógico. Entonces, ¿cuál es la forma correcta de proceder?


Todo está en orden. Todo tiene que estar especificado. El segundo parámetro es el TF donde el indicador está físicamente unido, el TF personalizado es donde el indicador toma los datos para el cálculo. Por supuesto, puede eliminar el segundo parámetro del código del indicador, si hay lógica en esto.
 
Zhunko:
Todo está en orden. Todo debe estar especificado. El segundo parámetro es el TF donde el indicador está físicamente unido, el TF personalizado es donde el indicador toma los datos para el cálculo. Por supuesto, puede eliminar el segundo parámetro del código del indicador, si hay lógica en esto.

Ahora lo veo. Gracias.

Pero los mismos parámetros que se deben establecer en el indicador deben ser declarados en el EA. Resulta que todos los valores de los parámetros para el correcto trabajo conjunto del indicador y el Asesor Experto deberían estar definidos por igual en ambos casos?

Si he introducido las variables en iCustom y no las he declarado en el EA, entonces al compilar el diario dirá que esas variables que he introducido no están declaradas.

 
Quién sabe en qué Código Base EA puedo ver cómo la función OrderCloseBy() está codificada con todos los pasteles. He visto el script de closeby en el tutorial, pero no puedo averiguar cómo hacer una función para llamar desde EA, etc. ¡Quizás puedas enseñarme lo que hay que hacer! Gracias.
 
borilunad:
Quién sabe en qué Código Base EA puedo ver cómo la función OrderCloseBy() está codificada con todos los pasteles. He visto el script de closeby en el tutorial, pero no puedo averiguar cómo hacer una función para llamar desde EA, etc. ¡Quizás puedas enseñarme lo que hay que hacer! Gracias.

¿Lo has visto aquí? https://docs.mql4.com/ru/trading/OrderCloseBy
 

¡Claro que sí! Entiendo el principio, pero no funciona, y necesito aprovechar la oportunidad para ahorrar en el diferencial. Por eso quería ver ejemplos que funcionen. Estoy buscando en Code Base, pero de momento sin éxito. Nadie utiliza este cierre mutuo en estos EAs. Espero encontrarme con ellos reunidos y no por los tornillos. ¡Buenas noches! Puede que sea más sabio por la mañana.
 
Me podeis decir como se borran las líneas de tendencia, indicadores, etc, en un ordenador normal en el Windows lo hacía con el botón derecho del ratón después de seleccionarlas, pero en el imac no se como. Tampoco encuentro cómo añadir oro a la lista general?
 
¿Cómo borrar líneas en el IMAC?
feeje:
Me podeis decir como se borran las líneas de tendencia, indicadores, etc, en un ordenador normal en el Windows lo hacía con el botón derecho del ratón después de seleccionarlas, pero en el imac no se como.¿Y tampoco encuentro cómo añadir oro a la lista común?
 

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

 
¿Pueden decirme cómo cerrar una parte del beneficio (por ejemplo, el 50% de una operación abierta)?
 
kostural:
Por favor, díganme cómo cerrar una parte del beneficio (por ejemplo: el 50% de la operación abierta).

Lote = NormalizeDouble(OrderLots()/2,Digits);