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

 
Barbarian:

¿Por qué se ignora el método virtual Compare en la clase CListNode?

Comprobado en el depurador, siempre utiliza Compare from CObject


Necesidad de anular Compare en la clase CData.
 
artmedia70:

No hay milagros.

Archivo --> Abrir Carpeta de Datos --> En la ventana que se abre --> MQL4 --> y ahí se encuentran las carpetas a las que estás acostumbrado. El enlace a este artículo en la página principal del foro. Me da pereza hacerlo.



Gracias, para ser honesto pensé que estaba haciendo algo mal. Ahora todo tiene sentido.
 
Cuando se ejecuta el script, hay que poner un icono (marcador) cuando se dispara la condición. ¿Cómo se puede hacer esto?
 
Forexman77:
Cuando se ejecuta el script, hay que poner un icono (marcador) cuando se dispara la condición. ¿Cómo lo hago?
Tan pronto como la condición se activa - poner una marca. Definitivamente.
 
Forexman77:
Cuando se ejecuta el script, es necesario establecer el icono (etiqueta) cuando se activa la condición. ¿Cómo puedo hacerlo?
artmedia70:
Tan pronto como la condición se activa - poner una marca. Sin lugar a dudas.

Artyom quiso decir con "... condición disparada - poner una marca", lo que quería decir con poner una marca en el código del script cuando se dispara la condición.

Hay muy buenos ejemplos de scripts de creación de insignias en la guía del lenguaje MQL4. Por ejemplo, este script que crea y mueve los iconos de "Compra" en el gráfico.
 
DiPach:

Artyom quiso decir con "... condición desencadenada - poner una marca", lo que quería decir era escribir en el código de la secuencia de comandos para poner el icono (marcador) cuando se desencadena la condición.

La Referencia MQL4 tiene muy buenos ejemplos de scripts para crear iconos. Por ejemplo, este script que crea y mueve los iconos de "Compra" en el gráfico.

Buen script, saca la función requerida de ahí,

y ahí lo tienes.

//+------------------------------------------------------------------+
void OnStart()
  {
 
  if(Signal == Buy_)   //условия
     ArrowBuyCreate(0,"ArrowBuy_"+(string)Time[0],0,Time[0],Ask);

  if(Signal == Sell_)  //условия
     ArrowSellCreate(0,"ArrowSell_"+(string)Time[0],0,Time[0],Bid);
   
  }
//+------------------------------------------------------------------+
//====================================================================
//+------------------------------------------------------------------+
//| Создает знак "Buy"                                               |
//+------------------------------------------------------------------+
bool ArrowBuyCreate(const long            chart_ID=0,        // ID графика
                    const string          name="ArrowBuy",   // имя знака
                    const int             sub_window=0,      // номер подокна
                    datetime              time=0,            // время точки привязки
                    double                price=0,           // цена точки привязки
                    const color           clr=C'3,95,172',   // цвет знака
                    const ENUM_LINE_STYLE style=STYLE_SOLID, // стиль линии (при выделении)
                    const int             width=1,           // размер линии (при выделении)
                    const bool            back=false,        // на заднем плане
                    const bool            selection=false,   // выделить для перемещений
                    const bool            hidden=true,       // скрыт в списке объектов
                    const long            z_order=0)         // приоритет на нажатие мышью
  {
//--- установим координаты точки привязки, если они не заданы
//   ChangeArrowEmptyPoint(time,price);
//--- сбросим значение ошибки
   ResetLastError();
//--- создадим знак
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_BUY,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": не удалось создать знак \"Buy\"! Код ошибки = ",GetLastError());
      return(false);
     }
//--- установим цвет знака
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль линии (при выделении)
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим размер линии (при выделении)
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим перемещения знака мышью
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установи приоритет на получение события нажатия мыши на графике
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнение
   return(true);
  }
//+------------------------------------------------------------------+
//| Создает знак "Sell"                                              |
//+------------------------------------------------------------------+
bool ArrowSellCreate(const long            chart_ID=0,        // ID графика
                     const string          name="ArrowSell",  // имя знака
                     const int             sub_window=0,      // номер подокна
                     datetime              time=0,            // время точки привязки
                     double                price=0,           // цена точки привязки
                     const color           clr=C'225,68,29',  // цвет знака
                     const ENUM_LINE_STYLE style=STYLE_SOLID, // стиль линии (при выделении)
                     const int             width=1,           // размер линии (при выделении)
                     const bool            back=false,        // на заднем плане
                     const bool            selection=false,   // выделить для перемещений
                     const bool            hidden=true,       // скрыт в списке объектов
                     const long            z_order=0)         // приоритет на нажатие мышью
  {
//--- установим координаты точки привязки, если они не заданы
//   ChangeArrowEmptyPoint(time,price);
//--- сбросим значение ошибки
   ResetLastError();
//--- создадим знак
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_SELL,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": не удалось создать знак \"Sell\"! Код ошибки = ",GetLastError());
      return(false);
     }
//--- установим цвет знака
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль линии (при выделении)
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим размер линии (при выделении)
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим перемещения знака мышью
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установим приоритет на получение события нажатия мыши на графике
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнение
   return(true);
  }
 

¿Puede indicar por qué puede haber un error al intentar abrir un archivo *.txt en modo de prueba?

Esta opción funciona a la perfección:

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";"); 

Pero este no funciona:

Handle2=FileOpen(File_Name2,FILE_TXT|FILE_READ);

Da el error 5004, la función FileIsExist(File_Name2) devuelve false por alguna razón (wtf???)

Ambos archivos (csv y txt) se encuentran en la carpeta tester\files (terminal en la unidad D) y sus nombres corresponden a las variables Nombre_de_archivo y Nombre_de_archivo2 - los he comprobado muchas veces.

 
DiPach:

Artyom quiso decir con "... condición desencadenada - poner una marca", que prescribir en el código de la secuencia de comandos para establecer una insignia (marcador) cuando la condición desencadenada.

El libro de referencia de MQL4 contiene muy buenos ejemplos de scripts para crear iconos. Por ejemplo, este script que crea y mueve los iconos de "Compra" en el gráfico.

No, Dina, quise decir exactamente lo que dije ;)

He insinuado "una pregunta concreta y una respuesta concreta". Hoy estoy siendo malo :)

 
artmedia70:

Hoy estoy siendo malo :)

Me quedaré callado entonces, :) para no meter la mano en caliente hoy. :)

 
DiPach:

No diré ni una palabra entonces :) no sea que me meta en la mano caliente por accidente hoy. :)

No... Siempre me han gustado las chicas.