Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 783

 

È possibile creare un modello e applicarlo a più funzioni?

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

Se si usano variabili dello stesso tipo, sarebbe molto utile sapere se è possibile usare un modello per diverse funzioni.

 
Buon pomeriggio, potreste dirmi come aggiungere le quotazioni di petrolio, indici e metalli?
 
vfrfhjybgjakjncmrb:
Salve, potreste dirmi come aggiungere le quotazioni del petrolio, degli indici e dei metalli?

Dipende innanzitutto dal fatto che l'ufficio li trasmetta o meno. Dipende anche dal terminale in cui si lavora. Se l'ufficio le trasmette, allora bisogna sapere su quali conti e a quali condizioni vengono trasmesse queste quotazioni, forse basta aprire la lista degli strumenti e questi strumenti sono lì. Se l'ufficio li trasmette su condizioni che sono impossibili per te, devi creare un grafico con queste quotazioni e aggiornarle ogni volta. Sapete per certo che la vostra società di intermediazione trasmetterà il petrolio?

 
Seric29:

È possibile creare un modello e applicarlo a più funzioni?

Se si usano variabili dello stesso tipo, sarebbe molto utile sapere se è possibile usare un modello per diverse funzioni.

No. Una descrizione completa di ogni funzione deve essere data separatamente. Altrimenti non sarete in grado di leggere il vostro codice in seguito.

 
Come posso rimuovere un particolare indicatore da tutti i grafici in una sola mossa? Applicare un nuovo modello non funziona. Che ne dite di una sceneggiatura?
 
Ilya Prozumentov:

No. Una descrizione completa di ogni funzione deve essere data separatamente. Altrimenti non sarete in grado di leggere il vostro codice dopo un po'.

È un peccato. Non sarete comunque in grado di leggere il vostro codice se non lo fate. Voglio solo scrivere programmi compatti, perché spesso si usano variabili dello stesso tipo nelle funzioni, ecco perché ho chiesto. Ho pensato che sarebbe stato possibile usare le "classi", ma non ho ancora familiarità con esse. Così saprò se devo fare dei modelli per molte funzioni.

 

Chi può dirmi perché questa voce non funziona. Voglio accedere ai campi delle strutture che immagazzinano una matrice e ruotarla a seconda di quale condizione sarà soddisfatta.L'esecuzione della condizione dipende dalla funzioneArrayDimension.

   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];
     }}  
}

Alla finearriva nel primo ciclo nonostante il fatto che questa condizioneif(r==1)sia falsa, perché ci arriva se il rango è 2um, come nonostante il falso arriva nel corpo dove viene eseguito qualcosa.

   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:

Peccato. Non sarete comunque in grado di leggere il vostro codice se non lo fate o se non lo fate. Voglio solo scrivere programmi compatti, perché spesso si usano variabili dello stesso tipo nelle funzioni, ecco perché ho chiesto. Ho pensato che sarebbe stato possibile usare le "classi", ma non ho ancora familiarità con esse. Così saprò se devo fare dei modelli per molte funzioni.

Non riesco a cogliere l'essenza di come si otterrebbe la compattezza. Nell'esempio qui sopra salva 2 righe. Se volete risparmiarli così tanto, potete scrivere una macrosostituzione e usarla nella riga prima della funzione

#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)

È necessario scriveretempl(T1) davanti ad ogni funzionee prenderà una variabile o l'argomento richiesto? Perché è dichiaratotempl(T) e chiamatotempl(T1), devo aggiungere un numero prima di ogni funzione(templ(T1)templ(T2)templ(T3)) o devo scriveretempl(T1) ovunque?E se diversi parametri sono segnati intemplate<typename T>allora come sarebbe, come questotemplate<typename T,typename P,typename Q>-templ(T,P,Q).

 
Ho un problema! Voglio pescare il profitto con un altro EA, ma questo EA non mi permette di tirare lo stop loss per il profitto! Qualcuno può correggerlo! L'autore non risponde!
File:
cm-MA_Gread.mq4  18 kb