Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 459

 
HUNTERGOOD:

Boa tarde a todos. Caros programadores, por favor me ajudem a inserir uma linha com a possibilidade de especificar um arquivo de som, para cada Alert3.Lv1;2;3, para acionar um som diferente que você especificar.

Boa tarde a todos. Estimados programadores, por favor me ajudem a inserir um fio com a possibilidade de indicar um arquivo de som para Alert3.Lv1;2;3 para acionar um som diferente.

Boa tarde a todos. Caros programadores, por favor, ajudem-me a inserir um fio com o arquivo de som para Alert3.Lv1;2;3 para acionar um som diferente.

Comece a fazer, e você terá ajuda.

Comece a fazer, e você terá ajuda.

Comece a fazer e você terá ajuda.

 

Ajuda, os patins não estão escorregando.

Tentando aprender a trabalhar com painéis gráficos e criar o meu próprio.

Criei 2 retângulos, 1 retângulo principal, que coordena todos os objetos do painel deve ser orientado para, ao movê-lo.

Eu fiz tal condição no ChartEvent e agora quando eu movo o retângulo principal, o segundo se move somente após 2-3 segundos, como consertá-lo?
Eu também tentei CHARTEVENT_MOUSE_MOVE na condição, mesmo efeito

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:

Ajuda, os patins não estão escorregando.

Tentando aprender a trabalhar com painéis gráficos e criar o meu próprio.

Criei 2 retângulos, 1 retângulo principal, para o qual todos os objetos do painel devem ser orientados, ao movê-lo.

Eu fiz tal condição no ChartEvent, e agora quando eu movo o retângulo principal, o segundo se move somente depois de 2-3 segundos, como fazer isso?
também tentou CHARTEVENT_MOUSE_MOVE na condição, mesmo efeito

Depois de criar um objeto e seu movimento, preciso fazer ChartRedraw()

 
Vladislav Andruschenko:

Depois de criar um objeto e movê-lo, você tem que fazer ChartRedraw()

Sim, isso é melhor. E assim é impossível fazê-la deslizar suavemente, certo?

upd adicionou condição para redesenhar somente se este retângulo principal for selecionado e está tudo bem agora, obrigado pela ajuda!)

 

Relançado a partir de outro fio. Talvez eu abane alguém e obtenha alguma ajuda:


<Os especialistas locais me lembram meu colega de classe (oh, há quanto tempo atrás) - ele conhecia todas as regras, todas as fórmulas, mas quando aplicar qual, ele não podia pensar imediatamente, e passou por quase tudo, de modo que ele nunca acompanhou o tempo previsto. É o mesmo aqui: eles sabem muito, mas não vêem a solução, eles apenas trabalham por "intuição". No instituto, fomos ensinados a resolver um problema sem números e fórmulas, e só então você saberá claramente quais fórmulas aplicar. Os recém-chegados ao MKL4 não compreendem as sutilezas do idioma, e é aí que eles precisam de ajuda (não no sentido de "ler um livro didático"). Mas ninguém podelhe mostrar as armadilhas deabrir/fechar posições. Talvez eles não saibam? Então eles deixaram escapar minha pergunta...>.

 
Saudações, ajude a escrever o preço atual em um arquivo.
 
lil_lil:
Saudações, ajude a escrever o preço atual em um arquivo.

Dê uma olhadaaqui.

 
Artyom Trishkin:

Comece a fazer e você terá ajuda.

Comece a fazer e você terá ajuda.

Comece a fazer, e você terá ajuda.

Eu aprecio seu sarcasmo, mas não de uma boa maneira. O que devo começar a fazer? Se eu soubesse por onde começar, onde começar e onde terminar, provavelmente não estaria interessado na ajuda das pessoas mais experientes neste fórum. Eu só acho que uma pessoa versada neste tipo de atividade, isto é, programação, não seria um problema para mim colocar algumas cordas em alguns lugares específicos, para que eu pudesse indicar um certo arquivo de som em indicador. E vocês me oferecem para "começar", com que fundamentos devo começar a dominar esta grande e inescrutável arte da codificação, para que eu saiba onde preciso colocar corretamente estas mesmas cordas? Eis o que eu quero dizer....

 
HUNTERGOOD:

Apreciei seu sarcasmo, mas não por mérito. O que devo começar a fazer? Se eu soubesse por onde começar, onde começar e onde terminar, provavelmente não teria demonstrado interesse na ajuda de membros mais experientes deste fórum. Apenas acho que uma pessoa versada neste tipo de atividade, isto é, programação, não seria um problema para mim colocar algumas cordas em alguns lugares específicos, para que eu pudesse indicar um certo arquivo de áudio em indicador. E você me sugere que "comece", com que princípios básicos devo começar a dominar esta grande e inescrutável arte da codificação, para que eu saiba onde preciso colocar corretamente estas mesmas cordas? Eis o que quero dizer....

Os indicadores não funcionam, apenas alerta, apenas 1 som.
 
Alexey Viktorov:

Vejaaqui.

Obrigado, os valores que existem de um arquivo e uma vez e eu tenho uma tarefa que se estende no tempo.

Registre o preço e o tempo atuais no início de cada dia por 30 minutos, a cada 120 segundos.

Não sobrescreva as entradas anteriores.


Razão: