[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 57

 
Sepulca:

Provate in questo modo:

https://docs.mql4.com/ru/basis/variables/formal

Ci sono due funzioni.
// заполняет массив фракталами, найденными в пределах заданного количества баров
double FractalsUP[], FractalsDN[];
void FractalsMassive(string symb, int timeframe, int bars)
 {
  int fr, frtUP=0, frtDN=0;
  for(fr=3; fr<=bars; fr++)
   {
    if(iFractals(symb,timeframe,MODE_UPPER,fr)>0)
     {
      ArrayResize(FractalsUP,frtUP+1);
      FractalsUP[frtUP]=iFractals(symb,timeframe,MODE_UPPER,fr);
      frtUP++;
     }
    if(iFractals(symb,timeframe,MODE_LOWER,fr)>0)
     {
      ArrayResize(FractalsDN,frtDN+1);
      FractalsDN[frtDN]=iFractals(symb,timeframe,MODE_LOWER,fr);
      frtDN++;      
     }
   }
 }
double ExtremeFractalUP(double& fractalup[])
 {
  int masrange, efup;
  masrange=ArrayRange(fractalup,1);
  
  for(efup=0; efup<masrange; efup++)
   {
    if(fractalup[efup]>fractalup[efup+1])
     {
      return(fractalup[efup]);
     }
    else continue;
   }  
 }

Errore "FractalsUP - tipi incompatibili" quando si cerca di compilare in EA.

   FractalsMassive(Symbol(),0,100);
   double extr=ExtremeFractalUP(FractalsUP[]);

Le funzioni e gli array dichiarati sono memorizzati nei file di inclusione, semmai.

 
silhouette:
Ho letto il libro di testo prima di scrivere, ho visto la sottolineatura, ma in pratica non ho potuto implementarla - dice di tipo incompatibile.


Ho visto un esempio funzionante di passaggio di parametri di valori di elementi di array per riferimento (con prefisso &).

 
silhouette:
Ci sono due funzioni.

Quando si cerca di compilare in EA, dà errore "FractalsUP - tipi incompatibili".

Le funzioni e gli array dichiarati sono memorizzati nei file di inclusione, semmai.


Se Dio vuole, questo dovrebbe funzionare. Almeno si compila senza errori:

int start()
{
 double FractalsUP[], FractalsDN[];
 ExtremeFractalUP(FractalsUP);// Передаем ссылку на один массив
 ExtremeFractalUP(FractalsDN);// Передаем ссылку на другой массив
}
//
double ExtremeFractalUP(double& fractalup[]) // В параметрах указываем что будет передаваться ссылка на массив
 {
  int masrange, efup;
  masrange=ArrayRange(fractalup,1);
  
  for(efup=0; efup<masrange; efup++)
   {
    if(fractalup[efup]>fractalup[efup+1])
     {
      return(fractalup[efup]);
     }
    else continue;
   }  
 }
 
Sepulca:


Se Dio vuole, questo dovrebbe funzionare. Almeno si compila senza errori:

Grazie per l'aiuto, il principio sembra essere risolto.
 

Ciao cari programmatori!

Potresti per favore dirmi cosa sto facendo di sbagliato?

Ho una variabile esterna di tipo int, nel programma dovrebbe impostare quanti elementi saranno nell'array di tipo doppio,

Lo sto facendo nel modo indicato qui sotto, ma il compilatore genera ancora errori, ho già provato a scrivere una variabile esterna di tipo doppio, ma ottengo ancora errori.

Si prega di avvisare.

extern int       max_count=4;

int start()
{
   static double A[max_count];

Errori

 
SvSerg:

Ciao cari programmatori!

Potresti per favore dirmi cosa sto facendo di sbagliato?

Ho una variabile esterna di tipo int, nel programma dovrebbe impostare quanti elementi saranno nell'array di tipo doppio,

Lo sto facendo nel modo indicato qui sotto, ma il compilatore genera ancora errori, ho già provato a scrivere una variabile esterna di tipo doppio, ma ottengo ancora errori.

Si prega di avvisare.

Inizializza l'array con un valore esplicito di doppio A[4];

Poi ridimensionatelo usando ArrayResize();

 
artmedia70:

Inizializza l'array con un valore esplicito di doppio A[4];

Poi ridimensionatelo usando ArrayResize();



Grazie!

Sto pensando, se inizializziamo un array vuotodoppio A[];, allora è possibile mettere quanto si vuole con il looping?

Mi scuso per le domande nouveau-vous, ma gli array sono un casino per me come principiante.

 
SvSerg:


Grazie!

Stavo pensando, se inizializziamo un array vuotodoppio A[]; allora può essere usato quanto si vuole?

Mi scuso per le domande nouveau-vous, ma gli array sono un casino per me come principiante.

Si può inserire tutta la memoria di cui si ha bisogno in qualsiasi array, purché ci si ricordi di ridimensionarlo. Soprattutto se l'array è vuoto.
 
artmedia70:
Qualsiasi array può essere riempito con tutta la memoria di cui ha bisogno, purché vi ricordiate di ridimensionarlo. Soprattutto se l'array è vuoto.


Grazie ancora! È un peccato che tu non possa darmi un +.
 

Buon pomeriggio!

Cari programmatori! È necessario scrivere un Expert Advisor.

Descrizione disponibile.

Quali sono le condizioni? Quali sono le garanzie?

Saluti, Maxim.