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

 
HUNTERGOOD:

Buenas tardes a todos. Estimados programadores, por favor ayúdenme a insertar una línea con la posibilidad de especificar un archivo de sonido, para que cada Alert3.Lv1;2;3, active un sonido diferente que se especifique.

Buenas tardes a todos. Estimados programadores, por favor ayúdenme a insertar una cadena con la posibilidad de indicar un archivo de sonido para que Alert3.Lv1;2;3 active un sonido diferente.

Buenas tardes a todos. Estimados programadores, por favor ayúdenme a insertar una cadena con el archivo de sonido para Alert3.Lv1;2;3 para activar un sonido diferente.

Empieza a hacer, y obtendrás ayuda.

Empieza a hacer, y obtendrás ayuda.

Empieza a hacer y recibirás ayuda.

 

Ayuda, los patines no resbalan.

Intento de aprender a trabajar con paneles gráficos y crear los míos propios.

He creado 2 rectángulos, 1 rectángulo principal, a cuyas coordenadas deben orientarse todos los objetos del panel, al moverlo.

Hice una condición de este tipo en ChartEvent y ahora cuando muevo el rectángulo principal, el segundo se mueve sólo después de 2-3 segundos, ¿cómo solucionarlo?
También probé con CHARTEVENT_MOUSE_MOVE en la condición, el mismo efecto

input string ds;//Параметры заднего фона панели
input int x_offset_anchor=100;
input int y_offset_anchor=100;
int anchor_width=150;
int anchor_height=20;
int back_height=100;
input color anchor_color=clrBlue, back_color=clrAquamarine, clrBorder=clrAliceBlue;
input string ds2;//
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   RectLabelCreate(0,"Back_panel_anchor_point",0,x_offset_anchor,y_offset_anchor,anchor_width,anchor_height,anchor_color,BORDER_SUNKEN,CORNER_LEFT_UPPER,clrBorder,STYLE_SOLID,2,false,true,true,0);
   RectLabelCreate(0,"Back_panel",0,x_offset_anchor,y_offset_anchor+anchor_height,anchor_width,back_height,back_color,BORDER_SUNKEN,CORNER_LEFT_UPPER,clrBorder,STYLE_SOLID,1,false,false,true,0);
   
   
   
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
//---
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason){
   ObjectsDeleteAll(0,-1,-1);
}  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   if(id == CHARTEVENT_OBJECT_DRAG && sparam == "Back_panel_anchor_point")
      {
         ObjectDelete(0,"Back_panel");
         RectLabelCreate(0,"Back_panel",0,ObjectGetInteger(0,"Back_panel_anchor_point", OBJPROP_XDISTANCE),ObjectGetInteger(0,"Back_panel_anchor_point", OBJPROP_YDISTANCE)+anchor_height,anchor_width,back_height,back_color,BORDER_SUNKEN,CORNER_LEFT_UPPER,clrBorder,STYLE_SOLID,1,false,false,true,0);
      }   
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+ 
//| Создает прямоугольную метку                                      | 
//+------------------------------------------------------------------+ 
bool RectLabelCreate(const long             chart_ID=0,               // ID графика 
                     const string           name="RectLabel",         // имя метки 
                     const int              sub_window=0,             // номер подокна 
                     const int              x=0,                      // координата по оси X 
                     const int              y=0,                      // координата по оси Y 
                     const int              width=50,                 // ширина 
                     const int              height=18,                // высота 
                     const color            back_clr=C'236,233,216',  // цвет фона 
                     const ENUM_BORDER_TYPE border=BORDER_SUNKEN,     // тип границы 
                     const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // угол графика для привязки 
                     const color            clr=clrRed,               // цвет плоской границы (Flat) 
                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // стиль плоской границы 
                     const int              line_width=1,             // толщина плоской границы 
                     const bool             back=false,               // на заднем плане 
                     const bool             selection=false,          // выделить для перемещений 
                     const bool             hidden=true,              // скрыт в списке объектов 
                     const long             z_order=0)                // приоритет на нажатие мышью 
  { 
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- создадим прямоугольную метку 
   if(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0)) 
     { 
      Print(__FUNCTION__, 
            ": не удалось создать прямоугольную метку! Код ошибки = ",GetLastError()); 
      return(false); 
     } 
//--- установим координаты метки 
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); 
//--- установим размеры метки 
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); 
//--- установим цвет фона 
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); 
//--- установим тип границы 
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border); 
//--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 
//--- установим цвет плоской рамки (в режиме Flat) 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 
//--- установим стиль линии плоской рамки 
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style); 
//--- установим толщину плоской границы 
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_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); 
  } 
 
Roman Sharanov:

Ayuda, los patines no resbalan.

Intento de aprender a trabajar con paneles gráficos y crear los míos propios.

He creado 2 rectángulos, 1 rectángulo principal, a cuyas coordenadas deben orientarse todos los objetos del panel, al moverlo.

He hecho tal condición en ChartEvent, y ahora cuando muevo el rectángulo principal, el segundo se mueve sólo después de 2-3 segundos, ¿cómo hacerlo?
también probó CHARTEVENT_MOUSE_MOVE en la condición, el mismo efecto

Después de crear un objeto y su movimiento necesito hacer ChartRedraw()

 
Vladislav Andruschenko:

Después de crear un objeto y moverlo, hay que hacer ChartRedraw()

Sí, así está mejor. Y así es imposible hacer que se deslice suavemente, ¿verdad?

upd añadió la condición de redibujar sólo si este rectángulo principal está seleccionado y ahora está bien, ¡gracias por la ayuda!)

 

Reposteado de otro hilo. Tal vez sacuda a alguien y consiga ayuda:


<Los expertos locales me recuerdan a mi compañero de clase (oh, cuánto tiempo hace) - sabía todas las reglas, todas las fórmulas, pero cuando aplicar que, no podía pensar inmediatamente, y pasó por casi todo, por lo que nunca se mantuvo el tiempo asignado. Aquí pasa lo mismo: saben mucho, pero no ven la solución, sólo trabajan por "intuición". En el instituto nos enseñaron a resolver un problema sin números ni fórmulas, y sólo así sabrás claramente qué fórmulas aplicar. Los recién llegados a MKL4 no entienden las sutilezas del idioma, y es ahí donde necesitan ayuda (no en el sentido de "leer un libro de texto"). Pero nadie puedemostrarte las trampas de laapertura/cierre de posiciones. ¿Quizás no lo saben? Así que dejaron pasar mi pregunta...>.

 
Saludos, ayuda para escribir el precio actual en un archivo.
 
lil_lil:
Saludos, ayuda para escribir el precio actual en un archivo.

Echa un vistazoaquí.

 
Artyom Trishkin:

Empieza a hacerlo y obtendrás ayuda.

Empieza a hacerlo y obtendrás ayuda.

Empieza a hacerlo y recibirás ayuda.

Aprecio tu sarcasmo, pero no en el buen sentido. ¿Qué debo empezar a hacer? Si supiera por dónde empezar, por dónde empezar y por dónde terminar, probablemente no me interesaría la ayuda de los más experimentados de este foro. Simplemente creo que una persona versada en este tipo de actividad, es decir, en la programación, no tendría ningún problema en poner algunas cadenas en algunos lugares específicos, para poder indicar un determinado archivo de sonido en el indicador. Y me ofreces "empezar", ¿con qué fundamentos debo empezar a dominar este gran e inescrutable arte de la codificación, para saber dónde tengo que poner correctamente estas mismas cadenas? Esto es lo que quiero decir....

 
HUNTERGOOD:

Aprecié su sarcasmo, pero no por su mérito. ¿Qué debo empezar a hacer? Si supiera por dónde empezar, por dónde empezar y por dónde terminar, probablemente no habría mostrado interés en la ayuda de los miembros más experimentados de este foro. Simplemente creo que una persona versada en este tipo de actividades, es decir, en la programación, no tendría ningún problema en poner algunas cadenas en algunos lugares específicos, para poder indicar un determinado archivo de audio en el indicador. Y me sugieres que "empiece", ¿con qué fundamentos debo empezar a dominar este gran e inescrutable arte de la codificación, para saber dónde tengo que poner correctamente estas mismas cadenas? Esto es lo que quiero decir....

Los indicadores no funcionan, solo alerta, solo 1 sonido.
 
Alexey Viktorov:

Veaaquí.

Gracias, los valores que hay son de un archivo y de una sola vez, pero mi tarea está repartida en el tiempo.

Registre el precio y la hora actuales al principio de cada día durante 30 minutos, cada 120 segundos.

No sobrescribir las entradas anteriores.