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

 
chief2000 >> :

Ho avuto problemi se ho impostato gli array per memorizzare gli stati delle variabili per qualsiasi "i" e

non ha definito le loro dimensioni come "[]".

Se l'array è definito come indicatore SetIndexBuffer(0,MyArray); in int init() allora non ha bisogno di essere inizializzato ulteriormente,

Altrimenti, oltre a dichiarare MyArray[]; è necessario inizializzare la dimensione ArrayResize(MyArray,Count);,

ed esattamente nella funzione in cui l'assegnazione sarà fatta.

poi in

int start()
{ArrayResize( MyArray, Count);
//...
return(0);
}

.

Ma se la dimensione dell'array è dichiarata esplicitamente dal numero MyArray[1000];; non abbiamo bisogno di tutto questo.

Il metodo ArrayResize è utile quando non si conosce in anticipo la dimensione dell'array e la si calcola nel programma.

 
Urain >> :

Se una matrice è definita come un indicatore SetIndexBuffer(0,MyArray); in int init(), non ha bisogno di essere inizializzata ulteriormente,

Altrimenti, oltre a dichiarare MyArray[]; dovete inizializzare la dimensione di ArrayResize(MyArray,Count);,

ed esattamente nella funzione in cui l'assegnazione sarà fatta.

poi in

.

Ma se la dimensione di un array è dichiarata esplicitamente come MyArray[1000];, non abbiamo bisogno di tutto questo.

Il metodo ArrayResize è utile quando non si conosce in anticipo la dimensione dell'array, ma la si calcola nel programma.



La risposta è esaustiva! Grazie mille!

 
chief2000 >> :

La risposta è esaustiva! Grazie mille!

Non posso resistere ad aggiungere che tutto questo e molto di più è scritto in modo compatto e abbastanza chiaro nel libro di testo, e si dovrebbe passare gradualmente dall'ascolto dei racconti alla lettura per se stessi.

 

Per favore, spiega se la dichiarazione di switch può essere inserita dopo If?

quelli:

se (condizione)

interruttore

 
chief2000 >> :

Un Chukcha sta pescando sulla riva. Un sottomarino americano si avvicina, il capitano ne emerge.

Si guarda intorno e grida un corso di nord-est. La barca si immerse e scomparve. Qualche tempo dopo, un sottomarino russo

un sottomarino russo si avvicina. Il capitano chiede al Chukcha in quale direzione è scomparso il sottomarino americano.

Chukcha risponde:
- rotta nord-est!
- Non fare il furbo con me, fammi vedere con il dito!

:)

Alcuni consigli per un principiante.

Ci sono alcune funzioni in MQL che vengono chiamate per fare un pesce.

Se questa funzione sarà disponibile, può essere riscritta come una DLL e poi sarà possibile chiamarla in altri programmi, per esempio in Omega.

Grazie.

 
granit77 >> :

Non posso resistere ad aggiungere che tutto questo e molto di più è scritto in modo compatto e abbastanza chiaro nel libro di testo, e si dovrebbe passare gradualmente dall'ascolto dei racconti alla lettura per se stessi.

È tutto vero, ma tutto richiede tempo. E presto dovrete studiare MQL5.

 

Persone gentile aiuto con la condizione ... come scrivere correttamente la condizione come ad esempio: c'è un indicatore con 2 livelli di 0 e 100 ... e la condizione è la seguente: linea è andato sotto il livello 0 dopo qualche tempo, è andato sopra il livello 0 e ha superato il livello di 100 e il livello di uscita di 100 condizione dovrebbe finire.

ׂ

Non posso metterlo nel mio EA... Non so come fare, ........?????

ed è possibile scrivere la condizione qui sotto?


 
Infinity >> :

Persone gentile aiuto con la condizione ... come scrivere correttamente la condizione come ad esempio: c'è un indicatore con 2 livelli di 0 e 100 ... e la condizione è la seguente: linea è andato sotto il livello 0 dopo qualche tempo, è andato sopra il livello 0 e ha superato il livello di 100 e il livello di uscita di 100 condizione dovrebbe finire.

Non posso metterlo nel mio EA... Non so come fare, ........?????

ed è possibile scrivere la condizione qui sotto?


Cercate un EA di Laguero, credo che ci fossero queste condizioni non ricordo esattamente, ma il vostro gli assomiglia molto...

 
Infinity писал(а) >>

Come scrivere correttamente la condizione del tipo: c'è un indicatore con 2 livelli di 0 e 100 ... e la condizione è la seguente: la linea è andata sotto il livello 0 dopo un certo tempo, è andata sopra il livello 0 ed è andata oltre il livello di 100 e il livello di uscita di 100 condizione dovrebbe finire.

Non posso metterlo nel mio EA... Non so come fare, ........?????

ed è possibile scrivere la condizione qui sotto?

Deve essere qualcosa come:

if( ind[1]>0 && ind[2]<=0) flag_1 = true;
if( ind[1]<0 && ind[2]>=0) flag_1 = false;

if( flag_1 && ind[1]>100 && ind[2]<=100) { flag_2 = true; flag_1=false; }

if( flag_2 && flag_2 && ind[1]<100 && ind[2]>=100)
{
   flag_2 = false;
   // Здесь вроде бы произошло описываемое событие...
   // Но надо экспертом проверять...
}
Quello che volevo dire è che dovete descrivere con queste caselle di controllo allora ci saranno meno calcoli, e inoltre non ci saranno cicli...
 
Infinity >> :

Come scrivere correttamente la condizione del tipo: c'è un indicatore con 2 livelli di 0 e 100 ... e la condizione è la seguente: la linea è andata sotto il livello 0 dopo un certo tempo, è andata sopra il livello 0 ed è andata oltre il livello di 100 e il livello di uscita di 100 condizione dovrebbe finire.

Non posso metterlo nel mio EA... Non so come fare, ........?????

ed è possibile scrivere la condizione qui sotto?


Forse qualcosa del genere - solo un'idea(!) - per l'Indicatore:

x[ i]=iRSI(...); // <= Пусть RSI будет в качестве Примера. 

TimeStart = 0;
TimeEnd   = 0;


if( x[ i]>0   &&   x[ i+1]<=0) {
   TimeStart=Time[ i];
}
if( x[ i]>=100   &&   x[ i+1]<100){
   TimeEnd=Time[ i+1];
}

if( TimeStart!=0   &&   TimeEnd!=0   &&   TimeEnd> TimeStart) {
   Range_i_Start = iBarShift(NULL,0, TimeStart);
   Range_i_End   = iBarShift(NULL,0, TimeEnd);

   bool status = false;
   for(int k = ... Range_i_Start -> Range_i_End  ) {
      if( x[ k]<0   ||   x[ k]>100) {
         status = true;
         break;
      }
   } // for()

   if( status==false) {
      ... Done;

      TimeStart = 0;
      TimeEnd   = 0;
   }
} // if(TimeStart!=0   &&   TimeEnd!=0) {