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

 
Seric29:

Em geral, como Artyom não responde a nada, e o homem acima deu a resposta que as funções funcionam com estruturas que devem ser conhecidas e, portanto, devem ser declaradas globalmente, concluímos que a estrutura deve ser declarada globalmente.

Por sua natureza, uma função que funciona com uma estrutura só pode aceitar as mesmas estruturas estáticas. Isso significa que não podemos declarar uma estrutura localmente para que ela tenha um escopo limitado e transformá-la em uma função.

Não se refira a mim quando não entender o que eu disse. Leia com cuidado o que Artem disse.

Em sua pressa, ele fez algumas imprecisões no código. Isto não significa que ele estava falando de forma incorreta. Uma estrutura é um tipo de dado personalizado e é definida no escopo global. Uma variável do tipo de usuário pode ser declarada em qualquer lugar. E pode haver qualquer número de tais variáveis declaradas.
 
Artyom Trishkin:
As estatísticas não mudarão com isso.

A propósito, ele não só não me mostra à uma da manhã ou às 23 horas, como também me mostra isto.


O trabalho técnico.

Progresso

Aprovação do TOR
Demonstração
Transmissão do trabalho e pagamento


Todas estas caixas de seleção são clicadas. diz que após uma semana o pagamento desaparecerá automaticamente. Exceto que somente o arquivo de demonstração foi recebido e há um limitador de data que permite trabalhar somente no ano passado. Acho que ele ficou entediado e agora vai esperar uma semana para que o arquivo de pagamento mude automaticamente?


Isso já aconteceu.


O cliente Zlaya_budka confirmou a etapa"Demo
2020.01.29 21:47

Transferência de trabalho e pagamento

O Cliente aceitou a Demonstração, agora a Desenvolvedora tem que entregar o resultado final.

Após a aceitação do trabalho, o pagamento virá automaticamente da conta do Cliente (menos uma comissão). Se o Cliente não responder ao trabalho apresentado dentro de uma semana, o pedido será automaticamente considerado concluído.

2020.01.29 21:47

Developer=========confirmou a etapa"Transferência de trabalho e pagamento".


O que isso quer dizer? já tinha uma linda de pipal onde o débito e o saldo de palavras foram trocados, já estava esperando 3 semanas por servicedesk com pagamento. agora essa alegria o que isso quer dizer?

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

Não se refira a mim quando não souber do que estou falando. Leia atentamente o que Artem disse.

Em sua pressa, ele fez algumas imprecisões no código. Isso não significa que ele tenha falado incorretamente. Uma estrutura é um tipo de dado personalizado e é definida no escopo global. Uma variável do tipo de usuário pode ser declarada em qualquer lugar. E pode haver qualquer número de tais variáveis declaradas.

Bem, estou falando exatamente do meu caso e exatamente da estrutura, é claro que também é um tipo de variável personalizada, mas em particular, estou interessado no nível local. Talvez isso pudesse ser feito através de uma aula. Em princípio, você pode declarar um tipo privado através de uma classe e é isso, mas não entendo muito bem.

 
Colegas - vocês podem me dizer se o init começa em cada passagem do testador?
 
Seric29:

Bem, estou falando exatamente sobre meu caso e exatamente sobre a estrutura e exatamente assim, é claro que também é um tipo de variável personalizada mas, em particular, estou interessado no nível local. Talvez isso pudesse ser feito através de uma aula. Em princípio, você pode declarar um tipo privado através de uma classe, mas não o entendo muito bem.

Você define sua estrutura em nível global - o programa inteiro deve saber disso - é um novo tipo de variáveis que você criou.

E você pode definir diferentes variáveis com o tipo desta estrutura em qualquer um dos níveis locais - somente neles (os níveis locais) serão visíveis as variáveis criadas em seu escopo.

 

Olá a todos!

Ajude-me a anexar

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);
  }
//---
 

Entendo que o ChartXYToTimePrice calcula as coordenadas a partir do canto superior esquerdo também por padrão.

Como o ChartXYToTimePrice recalcularia o preço a partir do canto que especifiquei?

 
MakarFX:

Entendo que o ChartXYToTimePrice calcula as coordenadas e os padrões a partir do canto superior esquerdo.

Como o ChartXYToTimePrice seria recalculado a partir do ângulo que especifiquei?

Você só pode mudar a mente de alguém que tem algo com quem tomar decisões. E se "isto" apenas executa os cenários de outra pessoa, então todo o diálogo na tentativa de convencê-lo de algo é apenas uma perda de tempo)).

Não entendo bem a tarefa, mas preste atenção não apenas ao ângulo de ligação ENUM_BASE_CORNER, mas também ao ponto de ligação ENUM_ANCHOR_POINT

 

Alexey Viktorov:

Eu não entendo bem a tarefa

indicador on call cria um objeto (OBJ_CHANNEL) no canto superior esquerdo

como definir a condição para criar um objeto no outro canto.

 
MakarFX:

indicador on call cria um objeto (OBJ_CHANNEL) no canto superior esquerdo

como definir a condição para criar um objeto no outro canto.

Leia o manual com atenção. OBJ_CHANNEL não tem nada a ver com o ângulo.

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