Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1064

 
Seric29:

En general, ya que Artyom no responde nada, y el hombre de arriba dio la respuesta de que las funciones trabajan con estructuras que deben ser conocidas y por lo tanto deben ser declaradas globalmente, concluimos que la estructura debe ser declarada globalmente.

Por su naturaleza, una función que trabaja con una estructura sólo puede aceptar las mismas estructuras estáticas. Significa que no podemos declarar una estructura localmente para que tenga un alcance limitado y pasarla a una función.

No te refieras a mí cuando no entiendas lo que te he dicho. Lee atentamente lo que ha dicho Artem.

Con las prisas, cometió algunas imprecisiones en el código. Esto no significa que haya hablado mal. Una estructura es un tipo de datos personalizado y se define en el ámbito global. Una variable de tipo usuario puede ser declarada en cualquier lugar. Y puede haber cualquier número de tales variables declaradas.
 
Artyom Trishkin:
Las estadísticas no cambiarán con respecto a esto.

Por cierto, no sólo no me muestra a la 1 de la mañana o a las 11 de la noche, sino que me muestra esto.


El trabajo técnico.

Progreso

Aprobación de los términos de referencia
Demo
Transmisión de obras y pagos


Todas estas casillas están marcadas. Dice que en una semana el pago desaparecerá automáticamente. Excepto que sólo se recibió el archivo de demostración y hay un limitador de fecha que permite trabajar sólo el año pasado. Supongo que se aburrió y ahora esperará una semana para que el expediente de pago cambie automáticamente.


Ya ha ocurrido.


El cliente Zlaya_budka ha confirmado el paso"Demo
2020.01.29 21:47

Transferencia de trabajo y pago

El Cliente ha aceptado la Demo, ahora el Desarrollador tiene que entregar el resultado final.

Tras la aceptación del trabajo, el pago se realizará automáticamente desde la cuenta del cliente (menos una comisión). Si el Cliente no responde al trabajo presentado en el plazo de una semana, el Pedido se considerará automáticamente finalizado.

2020.01.29 21:47

Desarrollador=========confirmó el paso"Transferencia de trabajo y pago"


¿Qué significa esto? Ya tuve uno encantador de pipal donde se intercambiaron el saldo de débito y el de palabra, ya he estado esperando 3 semanas para servicedesk con el pago. ahora esta alegría ¿qué significa?

Zlaya_budka
Zlaya_budka
  • www.mql5.com
Профиль трейдера
 
Alexey Viktorov:

No te refieras a mí cuando no sabes de qué estoy hablando. Lee atentamente lo que ha dicho Artem.

Con las prisas, cometió algunas imprecisiones en el código. Esto no significa que haya hablado mal. Una estructura es un tipo de datos personalizado y se define en el ámbito global. Una variable de tipo usuario puede ser declarada en cualquier lugar. Y puede haber cualquier número de tales variables declaradas.

Bueno, estoy hablando exactamente de mi caso y exactamente de la estructura, está claro que también es un tipo de variable personalizada, pero en particular me interesa a nivel local. Tal vez podría hacerse a través de una clase. En principio, puedes declarar un tipo privado a través de una clase y ya está, pero no lo entiendo muy bien.

 
Colegas - ¿podéis decirme si el init se inicia en cada pasada del probador?
 
Seric29:

Bueno estoy hablando exactamente de mi caso y exactamente de la estructura y exactamente así, está claro que también es un tipo de variable personalizada pero en particular me interesa el nivel local. Tal vez podría hacerse a través de una clase. En principio, se puede declarar un tipo privado a través de una clase, pero no lo entiendo muy bien.

Usted define su estructura a nivel global - todo el programa debe conocerla - es un nuevo tipo de variables que usted creó.

Y puedes definir diferentes variables con el tipo de esta estructura en cualquiera de los niveles locales - sólo en ellos (los niveles locales) serán visibles las variables creadas en su ámbito.

 

Hola a todos.

Ayúdame a adjuntar

extern   ENUM_BASE_CORNER  InpCorner      =  CORNER_LEFT_UPPER;   // Угол привязки индикатора

a este objeto

//--- Clicking on the fifth rectangle
   if(id==CHARTEVENT_OBJECT_CLICK) 
     {
      string clickedChartObject=sparam;
      if(clickedChartObject==obj_name[5]) 
        {
         string name="name_"+IntegerToString(MathRand()+100,0,' ');

         y=100;x=5;
         ChartXYToTimePrice(0,x,y,window,dt_1,price_1);
         ChartXYToTimePrice(0,x+250,y,window,dt_2,price_2);
         ChartXYToTimePrice(0,x,y+20,window,dt_3,price_3);

         ChannelCreate(0,name,0,dt_1,price_1,dt_2,price_2,dt_3,price_3,1,clrRed,STYLE_SOLID,1,InpBackRect,true,false,false,InpHidden_OBJ,0);
        }
     }

bool

//+------------------------------------------------------------------+
//| Create an equidistant channel by the given coordinates           |
//+------------------------------------------------------------------+
bool ChannelCreate(const long             chart_ID=0,                   // chart's ID
                   const string           name="Channel",               // channel name
                   const int              sub_window=0,                 // subwindow index  
                   datetime               time1=0,                      // first point time
                   double                 price1=0,                     // first point price
                   datetime               time2=0,                      // second point time
                   double                 price2=0,                     // second point price
                   datetime               time3=0,                      // third point time
                   double                 price3=0,                     // third point price
                   const ENUM_BASE_CORNER corner = CORNER_RIGHT_UPPER,  // the angle of the graph for the binding
                   const color            clr=clrRed,                   // channel color
                   const ENUM_LINE_STYLE  style=STYLE_SOLID,            // style of channel lines
                   const int              width=1,                      // width of channel lines
                   const bool             back=false,                   // in the background
                   const bool             selection=true,               // highlight to move
                   const bool             ray_left = false,             // extend the line to the left
                   const bool             ray_right=false,              // channel's continuation to the right
                   const bool             hidden=true,                  // hidden in the object list
                   const long             z_order=0)                    // priority for mouse click
  {
//--- reset the error value
   ResetLastError();
//--- create a channel by the given coordinates
   if(!ObjectCreate(chart_ID,name,OBJ_CHANNEL,sub_window,time1,price1,time2,price2,time3,price3))
     {
      Print(__FUNCTION__,
            ": failed to create an equidistant channel! Error code = ",GetLastError());
      return(false);
     }
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- 
   return(true);
  }
//+------------------------------------------------------------------+
//| Delete the channel                                               |
//+------------------------------------------------------------------+
bool ChannelDelete(const long   chart_ID=0,     // chart's ID
                   const string name="Channel") // channel name
  {
//--- reset the error value
   ResetLastError();
//--- delete the channel
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": failed to delete the channel! Error code = ",GetLastError());
      return(false);
     }
//---
   return(true);
  }
//---
 

Tengo entendido que ChartXYToTimePrice también calcula las coordenadas desde la esquina superior izquierda por defecto.

¿Cómo podría ChartXYToTimePrice recalcular a partir de la esquina que he especificado?

 
MakarFX:

Entiendo que ChartXYToTimePrice calcula las coordenadas y los valores por defecto de la esquina superior izquierda.

¿Cómo se recalcula ChartXYToTimePrice a partir del ángulo que he especificado?

Sólo se puede cambiar la opinión de alguien que tiene algo con lo que tomar decisiones. Y si "eso" sólo ejecuta la configuración de otra persona, entonces todo el diálogo para intentar convencerte de algo es una pérdida de tiempo).

No entiendo muy bien la tarea, pero presta atención no sólo al ángulo de unión ENUM_BASE_CORNER, sino también al punto de unión ENUM_ANCHOR_POINT

 

Alexey Viktorov:

No entiendo muy bien la tarea

el indicador de llamada crea un objeto (OBJ_CHANNEL) en la esquina superior izquierda

cómo establecer la condición para crear un objeto en la otra esquina.

 
MakarFX:

el indicador de llamada crea un objeto (OBJ_CHANNEL) en la esquina superior izquierda

cómo establecer la condición para crear un objeto en la otra esquina.

Lee atentamente el manual. OBJ_CHANNEL no tiene nada que ver con el ángulo.

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Способы привязки объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Способы привязки объектов
  • www.mql5.com
Графические объекты Text, Label, Bitmap и Bitmap Label (OBJ_TEXT, OBJ_LABEL, OBJ_BITMAP и OBJ_BITMAP_LABEL) могут иметь один из 9 различных способов привязки своих координат, задаваемых свойством OBJPROP_ANCHOR. – объекты имеет ширину и высоту. Если указано "только для чтения", то это означает, что значения ширины и высоты...
Razón de la queja: