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

 

É possível criar um modelo e aplicá-lo a múltiplas funções?

template<typename T>
void Fun1(T &y)
{тело
}
void Fun1(T &r,T k)
{тело
}
int Fun1(T &r,T k)
{тело return(0);
}

Se forem usadas variáveis do mesmo tipo, seria muito útil saber se é possível usar um modelo para várias funções.

 
Boa tarde, você poderia me dizer como adicionar óleo, índices e cotações de metais?
 
vfrfhjybgjakjncmrb:
Olá, você poderia me dizer como adicionar citações para petróleo, índices e metais?

Depende, em primeiro lugar, se o escritório os transmite ou não. Depende também do terminal em que você trabalha. Se o escritório os transmite, então você precisa saber em que contas e sob quais condições essas citações são transmitidas, talvez você só precise abrir a lista de instrumentos e esses instrumentos estão lá. Se o escritório os transmite em condições impossíveis para você, você tem que criar um gráfico com estas citações e atualizá-los a cada vez. Você sabe com certeza que sua empresa de corretagem transmitirá Oil?

 
Seric29:

É possível criar um modelo e aplicá-lo a múltiplas funções?

Se forem usadas variáveis do mesmo tipo, seria muito útil saber se é possível usar um modelo para várias funções.

Não. Uma descrição completa de cada função deve ser dada separadamente. Caso contrário, você não poderá ler seu próprio código mais tarde.

 
Como posso remover um indicador em particular de todos os gráficos de uma só vez? A aplicação de um novo modelo não funciona. Que tal um roteiro?
 
Ilya Prozumentov:

Não. Uma descrição completa de cada função deve ser dada separadamente. Caso contrário, você não poderá ler seu próprio código depois de um tempo.

É uma pena. Você não será capaz de ler seu próprio código de qualquer maneira se não o fizer. Eu só quero escrever programas compactos, porque muitas vezes você usa variáveis do mesmo tipo em funções, é por isso que eu perguntei. Pensei que seria possível usar "aulas", mas ainda não estou familiarizado com elas. Assim, saberei se tenho que fazer modelos para muitas funções.

 

Quem pode me dizer por que esta entrada não funciona? Quero acessar os campos das estruturas que armazenam uma matriz e girá-la dependendo de qual condição será cumprida. A execução da condição depende da funçãoArrayDimension.

   struct SD1{
   int a[10];//int q[10][2];
};SD1 a1;

struct SD2{
   int a[10][2];
};SD2 a2;

template<typename T>//,typename W
void MoveArray(T & s){//,W&e
   //Alert(ArrayDimension(s.a));
     int r=0;r=ArrayDimension(s.a);Print("r-ранг: ",r);if(r==1)пишу условие что если ранг равен 1му 
      {for(int cn=0; cn<=8; cn++)                              то крутить этот цикл
     {                
      s.a[cn]=s.a[cn+1];
     }} else if (r==2)            если ранг равен 2ум
      {for(int cn=0; cn<=8; cn++) крутить этот цикл
     {                
      s.a[cn][0]=s.a[cn+1][0];
      s.a[cn][1]=s.a[cn+1][1];
     }}  
}

Eventualmenteentra na primeira etapa, apesar do fato de que esta condiçãose(r==1)é falsa, por que ela chega lá se a classificação é 2um, como ela apesar do falso entra no corpo onde algo é executado.

   MoveArray(a2);в OnTick
   for(int i=0;i<10;i++){Print("q: ",i,": ",a2.a[i][0]);}
int yy=ArrayDimension(a2.a);Print("Ранг: ",yy," ");
 
Seric29:

É uma pena. Você não poderá ler seu próprio código de qualquer maneira se não o fizer ou se não o fizer. Eu só quero escrever programas compactos, porque muitas vezes você usa variáveis do mesmo tipo em funções, é por isso que eu perguntei. Pensei que seria possível usar "aulas", mas ainda não estou familiarizado com elas. Assim, saberei se tenho que fazer modelos para muitas funções.

Não consigo captar a essência de como a compacidade seria alcançada. No exemplo acima, ele economiza 2 linhas. Se você quiser salvá-los tanto, você pode escrever uma macrosubstituição e usá-la na linha antes da função

#define  templ(T) templeate<typename T>

templ(T1) void Funct(T1 a)
 
Ilya Prozumentov:
#define  templ(T) template<typename T>

templ(T1) void Funct(T1 a)

É necessário escrevermodelos (T1) em frente a cada funçãoe será preciso uma variável ou o argumento necessário? Por que ostemplates(T) são declaradose ostemplates(T1) chamados, devo adicionar um número antes de cada função(templates(T1)templates(T2)templates(T3)) ou devo escrevertemplates(T1) em todos os lugares?E se vários parâmetros são pontuados notemplate<digite o nome T>então como seria, como estetemplate<digite o nome T,digite o nome P,digite o nome Q>-templates(T,P,Q).

 
Eu tenho um problema! Eu quero arrastá-lo com outro EA, mas este EA não me deixa parar de perder para ter lucro! Qualquer um pode corrigir isso! O autor não está respondendo!
Arquivos anexados:
cm-MA_Gread.mq4  18 kb
Razão: