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

 
hronik1967:
Si ese galimatías de arriba lo escriben los novatos!!!, entonces debo ser un embrión de comerciante. Hizo una simple pregunta y la ignoró totalmente. Probablemente no soy digno de estar aquí. No soy digno de ello. Tal vez alguien preste atención. Voy a preguntar de nuevo, he descargado y puesto un Asesor Experto de Forex Cieaner para EURUSD, he operado en un intervalo de 30 min, pero no veo ninguna operación. Puse Ilan 1,6 en GBRUSD antes de eso, todo es normal allí. ¿Qué no he hecho? ¡¡¡ALGUIEN POR AHÍ, POR FAVOR DÍGAME!!!

Muchas personas no conocen a ese asesor. No quieren buscarlo y descargarlo. Hay más preguntas sobre el código.
 
hronik1967:
Si ese galimatías de arriba lo escriben los novatos!!!, entonces debo ser un embrión de comerciante. Hizo una simple pregunta y la ignoró totalmente. Probablemente no soy digno de estar aquí. No soy digno de ello. Tal vez alguien preste atención. Voy a preguntar de nuevo, he descargado y puesto un Asesor Experto de Forex Cieaner para EURUSD, he operado en un intervalo de 30 min, pero no veo ninguna operación. Puse Ilan 1,6 en GBRUSD antes de eso, todo es normal allí. ¿Qué no he hecho? ¡¡¡ALGUIEN POR AHÍ, POR FAVOR DÍGAME!!!
El coche está en la carretera, no va. Chicos, ayudadme, ¿qué tiene de malo? Eso es más o menos el tamaño de tu pregunta de EA.
No se obtiene una respuesta porque hay al menos dos docenas de razones de la más variada naturaleza. El Asesor Experto de otra persona en el terminal de otra persona de un comerciante con calificaciones desconocidas.
 

Ayuda.

Me refería (dos posts más arriba) a que en el diario se imprime o no se imprime.

Print("newZZ_240=",Curr_zz240) no imprime;

Print("newTime",mn240, ",TimeToStr(CurrTime240)) imprime;

Significa que algo está mal con NewZigZag H4 . No entiendo cómo ni qué. Parece que es así, pero no hay ninguna huella.

He realizado muchos estudios diferentes sobre ZZ. He obtenido diferentes resultados en diferentes TFs. Ahora quiero reunir todo. Tengo muchos cálculos y si los hago por ticks o barras nuevas, me carga fuertemente el ordenador. Basta con procesar los datos cuando aparece un nuevo extremo ZZ.

Archivos adjuntos:
mtfqprint.mq4  19 kb
 
Gracias a gince y granit77 por las respuestas. Parece que sugieren que se llame a un especialista a la casa... Eso es más o menos lo que pensé, pero no se puede explicar con los dedos.
 
FAQ:

Una característica - una pequeña inconsistencia, que, sin embargo, no interfiere, y a veces incluso proporciona oportunidades indocumentadas, como OrderClosePrice() - si usted cierra una orden con este parámetro en el precio de cierre, se cerrará, sin necesidad de molestarse en determinar el precio por tipo de orden.

Bug - error en el programa (característica incorregible)

Servidec - un lugar donde los usuarios escriben cartas con los errores detectados. Se encuentra en el quinto foro de su perfil (se requiere un registro adicional)

Grosse danke schoen))))
 

Buenas tardes. Mi pregunta es la siguiente. En el libro de MQL4 que se encuentra en MQL4.community, en la sección "Funciones estándar" de la sección "Funciones de cadena y funciones de conversión de datos", se da el siguiente ejemplo del Asesor Experto strings.mq4 (dado en su totalidad del libro)

//--------------------------------------------------------------------
// strings.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------- 1 --
extern int Quant_Bars=100;             // Количество баров
datetime   Time_On;
string     Prefix    ="Paint_";
//--------------------------------------------------------------- 2 --
int init()                             // Спец. функция init()
  {
   int Ind_Bar;                        // Индекс бара
   Time_On=Time [Quant_Bars];          // Время первого раскрашенного
   for(Ind_Bar=Quant_Bars-1; Ind_Bar>=0; Ind_Bar--)// Цикл по барам
     {
      Create(Ind_Bar,1);               // Нарисуем тонкую линию
      Create(Ind_Bar,2);               // Нарисуем толстую линию
     }
   WindowRedraw();                     // Перерисовка изображения 
   return;                             // Выход из init()
  }
//--------------------------------------------------------------- 3 --
int start()                            // Спец. функция start
  {
   datetime T1, T2;                    // 1 и 2 координаты времени
   int Error,Ind_Bar;                  // Код ошибки и индекс бара
   double P1, P2;                      // 1 и 2 координата цены
   color Col;                          // Цвет созданного объекта
//--------------------------------------------------------------- 4 --
   for(int Line=1; Line<=2; Line++)    // Цикл по видам линий
     {
      string Nom_Lin =Line + "_";      // Строка с номером линии
      //    string Nom_Lin  = DoubleToStr(Line,0)+"_";// Можно и так
      for(Ind_Bar=0; ;Ind_Bar++)       // Цикл по барам
        {
//--------------------------------------------------------------- 5 --
         datetime T_Bar= Time[Ind_Bar];// Время открытия бара
         if (T_Bar < Time_On) break;   // Заграничные не раскрашиваем
         string Str_Time=TimeToStr(T_Bar);       // Строка со временем
         string His_Name=Prefix+Nom_Lin+Str_Time;// Имя объекта
//--------------------------------------------------------------- 6 --
         T1=ObjectGet(His_Name,OBJPROP_TIME1);// Запрос коорд. t1
         Error=GetLastError();         // Получение кода ошибки
         if (Error==4202)              // Если объекта нет :(
           {
            Create(Ind_Bar,Line);      // Вызов ф-ии создания объекта
            continue;                  // На следующую итерацию
           }
//--------------------------------------------------------------- 7 --
         T2 =ObjectGet(His_Name,OBJPROP_TIME2); // Запрос коорд. t2
         P1 =ObjectGet(His_Name,OBJPROP_PRICE1);// Запрос коорд. p1
         P2 =ObjectGet(His_Name,OBJPROP_PRICE2);// Запрос коорд. p1
         Col=ObjectGet(His_Name,OBJPROP_COLOR); // Запрос цвета
         if(T1!=T_Bar || T2!=T_Bar || // Не те координаты или цвет:
            (Line==1 && (P1!=High[Ind_Bar] || P2!=  Low[Ind_Bar])) ||
            (Line==2 && (P1!=Open[Ind_Bar] || P2!=Close[Ind_Bar])) ||
            (Open[Ind_Bar] Close[Ind_Bar] && Col!=Red)  ||
            (Open[Ind_Bar]==Close[Ind_Bar] && Col!=Green)  )
           {
            ObjectDelete(His_Name);    // Удаляем объект
            Create(Ind_Bar,Line);      // Создаём правильный объект
           }
//--------------------------------------------------------------- 8 --
        }
     }
   WindowRedraw();                     // Перерисовка изображения 
   return;                             // Выход из start()
  }
//--------------------------------------------------------------- 9 --
int deinit()                           // Спец. функция deinit()
  {
   string Name_Del[1];                 // Объявление массива
   int Quant_Del=0;                    // Количество удаляемых объектов
   int Quant_Objects=ObjectsTotal();   // Cтолько всего ВСЕХ объектов
   ArrayResize(Name_Del,Quant_Objects);// Необходимый размер массива
   for(int k=0; k<=Quant_Del; i++)     // Удаляем объекты с именами,.. 
      ObjectDelete(Name_Del[i]);       // .. имеющимися в массиве
   return;                             // Выход из deinit()
  }
//-------------------------------------------------------------- 10 --
int Create(int Ind_Bar, int Line)      // Пользовательская функция..
  {                                    // ..создания объекта
   color Color;                        // Цвет объекта
   datetime T_Bar=Time [Ind_Bar];      // Время открытия бара
   double   O_Bar=Open [Ind_Bar];      // Цена открытия бара
   double   C_Bar=Close[Ind_Bar];      // Цена закрытия бара
   double   H_Bar=High [Ind_Bar];      // Максимальная цена бара
   double   L_Bar=Low  [Ind_Bar];      // Минимальная цена бара
 
   string Nom_Lin =Line + "_";         // Строка - номер линии
   // string Nom_Lin  = DoubleToStr(Line,0)+"_";// Можно и так
   string Str_Time=TimeToStr(T_Bar);   // Строка - время откр.     
   string His_Name=Prefix+Nom_Lin+Str_Time;// Имя созаваемого объект
   if (O_Bar < C_Bar) Color=Blue;      // Выбор цвета в зависимости..
   if (O_Bar >C_Bar) Color=Red;        // .. от характеристик бара
   if (O_Bar ==C_Bar) Color=Green;
 
   switch(Line)                        // Тонкая или толстая линия
     {
      case 1:                          // Тонкая линия
         ObjectCreate(His_Name,OBJ_TREND,0,T_Bar,H_Bar,T_Bar,L_Bar);
         break;                        // Выход из switch
      case 2:                          // Толстая линия
         ObjectCreate(His_Name,OBJ_TREND,0,T_Bar,O_Bar,T_Bar,C_Bar);
         ObjectSet(   His_Name, OBJPROP_WIDTH, 3);// Стиль     
     }
   ObjectSet(    His_Name, OBJPROP_COLOR, Color); // Цвет
   ObjectSet(    His_Name, OBJPROP_RAY,   false); // Луч
   ObjectSetText(His_Name,"Объект создан экспертом",10);// Описание
   return;                             // Выход из польз. ф-ии
  }
//-------------------------------------------------------------- 11 –
 

... continúa...

Al final de la subsección StringSubstr Function entre paréntesis se encuentra la siguiente frase: "por separado debemos notar que en el primer bucle for (mi nota: debe ser deinit() ya que no hay otra forma de borrar objetos) no podemos borrar objetos ya que después de cada borrado el número total de objetos y su numeración cambiará y algunos nombres de objetos serán saltados". Pero en el citado EA no hay ningún segundo bucle for . Además, la variable Quant_Del definida en la función deinit() antes del bucle for se inicializa con cero, mientras que la variable i no estaba definida en ninguna parte antes del bucle for.

   for(int k=0; k<=Quant_Del; i++)     // Удаляем объекты с именами,.. 
         ObjectDelete(Name_Del[i]);       // .. имеющимися в массиве

resulta que el experto anterior acaba de omitir trivialmente varias líneas del programa.

Así que la primera pregunta es la siguiente: ¿fue realmente una omisión trivial de varias líneas o es un programa tan complicado que un novato no puede entender su significado sin ayuda externa?

Además... En el mismo capítulo de la misma sección, hay un enlace al mismo Asesor Experto (en el archivo adjunto) antes del texto citado que, al hacer clic, abre el mismo Asesor Experto en MetaElitor. Pero el texto de este Asesor Experto es diferente: la función deinit()tiene este aspecto

//--------------------------------------------------------------- 9 --
int deinit()                           // Спец. функция deinit()
  {
   string Name_Del[1];                 // Объявление массива
   int Quant_Del=0;                    // Количество удаляемых объекто
   int Quant_Objects=ObjectsTotal();   // Cтолько всего ВСЕХ объектов
   ArrayResize(Name_Del,Quant_Objects);// Необходимый размер массива
   for(int k=0; k<Quant_Objects; k++)  // По количеству объектов 
     {
      string Obj_Name=ObjectName(k);   // Запрашиваем имя объекта
      string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим
      if (Head==Prefix)                // Найден объект, ..
        {                              // .. начинающийся с Paint_
         Quant_Del=Quant_Del+1;        // Колич имён к удалению
         Name_Del[Quant_Del-1]=Obj_Name;//Запоминаем имя удаляемого
        }
     }
   for(int i=0; i<=Quant_Del; i++)     // Удаляем объекты с именами,.. 
      ObjectDelete(Name_Del[i]);       // .. имеющимися в массиве
   return;                             // Выход из deinit()
  }
//-------------------------------------------------------------- 10 --

Entonces, si "combinar" la frase "Por separado, tenga en cuenta que no puede eliminar objetos en el primer bucle for, porque en este caso el número total de objetos y su numeración cambiarán después de cada eliminación, y algunos nombres de objetos se omitirán como resultado" Y texto función deinit() de la última variante, tengo la segunda pregunta:

Pregunta. ¿Por qué no puedo eliminar objetos en el primer bucle for colocando la función ObjectDelete(Nombre_Objeto) dentro de la sentencia if? Algo así como:

int deinit()                           // Спец. функция deinit()
  {
   int Quant_Objects=ObjectsTotal();   // Cтолько всего ВСЕХ объектов
   for(int k=0; k<Quant_Objects; k++)  // По количеству объектов 
     {
      string Obj_Name=ObjectName(k);   // Запрашиваем имя объекта
      string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим
      if (Head==Prefix)                // Если найден объект, …
        {                              // ... начинающийся с Paint_,
         ObjectDelete(Obj_Name);       // … то его и удаляем
        }                              //конец if
     }                                 //конец for
   return;                             // Выход из deinit()
  }                                    //конец deinit
//-------------------------------------------------------------- 10 --

Por qué después de cada borrado "... El número total de objetos cambiará"... Porque en este caso, la variable Quant_Objects, que determina el número total de objetos, adquiere su valor igual a ObjectsTotal(), ¿FORWARD el bucle for?

P.S. Gracias de antemano por la respuesta, para no ensuciar el foro.



Archivos adjuntos:
strings.mq4  7 kb
 

Chicos, un poco fuera de tema, pero aún así...

¿Es posible hacer "amigos" de ordenadores/portátiles con Win7 de 32 y 64 bits a través de la LAN?
Tengo tres portátiles y un ordenador de sobremesa (todos en casa) en dos portátiles Win7(64 bits) y no se ven en absoluto en la red de escritorio Win7 Ultimate de 32 bits. Y a partir de ella me gustaría gestionar toda la multitud...

¿Alguna opción?

 
moskitman:

Chicos, un poco fuera de tema, pero aún así...

¿Es posible hacer "amigos" de ordenadores/portátiles con Win7 de 32 y 64 bits a través de la LAN?
Tengo tres portátiles y un ordenador de sobremesa (todos en casa) en dos portátiles Win7(64 bits) y no se ven en absoluto en la red de escritorio Win7 Ultimate de 32 bits. Y a partir de ella me gustaría gestionar toda la multitud...

¿Alguna opción?

En una red, no importa el tamaño del ordenador o del sistema. Algo está mal en la configuración.
 
Zhunko:
En la red, no importa el tamaño de los bits de los ordenadores y del sistema. Hay algo que no funciona en la configuración.

Sí, yo también lo pensé... Pero el hecho es que 64 ve a todo el mundo en la red, 32 sólo ve a 32. ¿WTF?

sub: ¿Podría estar relacionado con el hecho de que sólo el escritorio (32) está en esta red a través del cable RG45, y todos los demás a través de la red inalámbrica?

Más o menos lo mismo: