Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 439

 
Leanid Aladzyeu:
...
Come posso ottenere i valori degli array senza chiamare la funzione? O come fare in modo che un array ricordi gli ultimi valori che sono stati scritti?
...


Per recuperare qualcosa da un array, dovete prima scrivere questo "qualcosa" nell'array.

Leanid Aladzyeu:
...
O come fare in modo che un array ricordi gli ultimi valori che sono stati scritti?
...
Per quali condizioni: la matrice deve essere salvata quando si cambia l'orizzonte temporale o dopo aver ricaricato il terminale?
 
Karputov Vladimir:


Se voglio prendere qualcosa da un array, devo prima scriverlo nell'array.

Per quali condizioni: l'array deve essere salvato quando si cambia il timeframe del grafico o dopo aver ricaricato il terminale?

non durante il lavoro dell'EA

Se imposto returnee nella funzione, quando c'è un ordine nel mercato, mi dà array nulli (ho impostato returnee prima di nullare gli array),

 
Leanid Aladzyeu:

Se un ordine è sul mercato, mi dà zero array (ho impostato la funzione returnee prima che gli array siano azzerati),

Quali sono le matrici che l'ordine "dà"? Dove sono dichiarati e dove sono compilati? Inoltre, si prega di inserire il codice correttamente.
 
Karputov Vladimir:

I parametri della funzione devono essere riportati alla versione originale, altrimenti non saranno semplicemente chiamati:

Ecco il codice del file SignalAC standard

//+------------------------------------------------------------------+

//| "Votando" che il prezzo crescerà. |

//+------------------------------------------------------------------+

int CSignalAC::LongCondition(void)

Lo capisco così: il codice invia un segnale e i parametridouble& price,double& sl,double& tp,datetime& expiration sono necessari per piazzare un ordine,

questo è gestito da un altro blocco EA?

 

ha corretto il codice in una variante:

int CSampleSignal::ShortCondition(void)

L'esperto ha iniziato a fare qualcosa, grazie per il consiglio!

 
pr0gre5:

ha corretto il codice in una variante:

int CSampleSignal::ShortCondition(void)

L'esperto ha iniziato a fare qualcosa, grazie per il consiglio!

Siete i benvenuti. Chiedi, chiedi quando e dove ne hai bisogno :)
 

Tale domanda serve questo codice per limitare il calcolo - contando solo una volta su una nuova barra?

static datetime TimeN=0;
   datetime TimeC=iTime(NULL,TF,0);
   if(TimeN==0)TimeN=TimeC;
   if(TimeN==TimeC) return(0);

 
-Aleks-:

Tale domanda serve questo codice per limitare il calcolo - contare solo una volta su una nuova barra?

static datetime TimeN=0;
   datetime TimeC=iTime(NULL,TF,0);
   if(TimeN==0)TimeN=TimeC;
   if(TimeN==TimeC) return(0);

Se la nuova barra è su un timeframe M1, allora stampiamo un messaggio:

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   static datetime TimeN;
   datetime TimeC=iTime(NULL,PERIOD_M1,0);
   if(TimeN==TimeC)
      return;
   TimeN=TimeC;
// новый бар, выполняем код
   Print("New bar");
   return;
  }
 
Karputov Vladimir:

Se la nuova barra è sul timeframe M1, stampa un messaggio:

Quindi ho ragione, questo è un assegno per un nuovo bar?
 
-Aleks-:
Quindi ho ragione, è un nuovo controllo del bar?
Se intendi il mio codice - allora sì, il mio codice è un nuovo controllo a barre.