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

 
Seric29:

Per esempio, dichiaro dei parametri di input e da questi parametri ho bisogno di prendere delle variabili globali e visualizzarle, ma c'è un problema I parametri di input non possono essere un array

se stiamo parlando divariabili Input, si può semplificare - hanno una visibilità globale e si possono usare in qualsiasi sezione di codice

o scriverli una volta in un array nella sezione OnInit(), e in seguito potete copiare un array in un array, ma qui avete bisogno che gli array siano uguali - prendete un array di riserva, ma poi dovete controllare i numeri di indice dell'array per evitare un bug - potreste usare un valore di array vuoto - il compilatore non genererà un errore, ma il calcolo sarà errato

input int a1=1;
input int a2=2;
input int a3=3;

int ArrayOfInput[3];
int OnInit()
  {
   ArrayOfInput[0] =a1;
   ArrayOfInput[1] =a2;
   ArrayOfInput[2] =a3;
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
 // delete cx;
  }
//+------------------------------------------------------------------+
void OnTick()
  {
      int arr[3];
      ArrayCopy(arr,ArrayOfInput);
  }
//+------------------------------------------------------------------+
HH: per qualche ragione ero sicuro che l'operatore di assegnazione funzionasse per array identici, forse mi sono confuso con la classe - funziona sicuramente se gli oggetti sono della stessa classe
 
Igor Makanu:

se stiamo parlando divariabili di input, si può semplificare - hanno visibilità globale e si possono usare in qualsiasi sezione di codice

o scriverli una volta in un array nella sezione OnInit(), e in seguito potete copiare un array in un array, ma qui avete bisogno che gli array siano uguali - prendete un array di riserva, ma poi dovete controllare i numeri di indice dell'array, per evitare un bug - potete usare un valore di array vuoto - l'errore non apparirà, ma i calcoli saranno errati

SZZ: per qualche ragione, ero sicuro che l'operatore di assegnazione funzionasse per gli stessi array, forse confuso con la classe - funziona sicuramente se gli oggetti sono della stessa classe

No c'è anche tale ho provato (forse provato un po 'e male perché non sono molto bravo a loro, ma per quanto ho provato non funziona più a tutte le classi devono gestire attraverso un colon è meglio farlo qui come hai mostrato) pensato forse attraverso le classi non è necessario così che è come hai fatto una riga per assegnare.

 

Salve.

Puoi dirmi se è possibile cambiare il fuso orario nel popup degli avvisi standard?

Ho bisogno di sincronizzare l'ora dell'avviso con l'ora del terminale (quando è diversa nel terminale e nella finestra dell'avviso). È possibile?
 
Perché in mql4 si può chiamare int (e qualsiasi altro valore restituibile) e void (funzione procedurale) allo stesso modo, come mai?
 

Domanda. Come posso fare un loop attraverso tutti i valori di enumerazione con un passo non uguale?


enum Tipi {

Uno=11,

Due=12,

Tre = 15,

Quattro=22,

Cinque=27

};

 
The_Sheikh:

Domanda. Come posso fare un loop attraverso tutti i valori di enumerazione con un passo non uguale?


enum Tipi {

Uno=11,

Due=12,

Tre = 15,

Quattro=22,

Cinque=27

};

no, sizeof() non funziona per enumhttps://docs.mql4.com/ru/basis/types/integer/enumeration

e quando si convertono i tipi, il nome della costante viene perso

enum Types { One=11, Two=12, Three=15, Four=22, Five=27,Six = 111,Seven = 222};
enum Types_abc { a, b, c, d, e,f,g};
void OnStart()
  {
   int sz = sizeof(Types);
   Print("sz = ",sz);
   Types z = Two;
   Types_abc x = b;
   Print("z = ",EnumToString(z)," , x = ",EnumToString(x));
   x = (Types_abc)z;
   Print("z = ",EnumToString(z)," , x = ",EnumToString(x));
  }

2019.08.03 10:52:13.288 tst EURUSD,H1: sz = 4

2019.08.03 10:52:13.288 tst EURUSD,H1: z = Due , x = b

2019.08.03 10:52:13.288 tst EURUSD,H1: z = Due , x = Tipi_abc::12


 
Elena Baranova:

Salve.

Potete dirmi se è possibile cambiare il fuso orario nel pop-up standard con un avviso?

Ho bisogno di sincronizzare l'ora dell'avviso con l'ora del terminale (quando è diversa nel terminale e nella finestra dell'avviso). È possibile?
L'allarme mostra l'ora locale del PC. Per farlo corrispondere all'ora del terminale, potete semplicemente cambiare l'ora del computer.
 
Seric29:
Perché in mql4 si possono chiamare funzioni int (e qualsiasi altro valore restituibile) e void (funzione procedurale) allo stesso modo?

si chiama "sovraccarico".

Документация по MQL5: Основы языка / Функции / Перегрузка функций
Документация по MQL5: Основы языка / Функции / Перегрузка функций
  • www.mql5.com
Обычно в названии функции стремятся отобразить ее основное назначение. Читабельные программы, как правило, содержат разнообразные и грамотно подобранные идентификаторы. Иногда различные функции используются для одних и тех же целей. Например, рассмотрим функцию, которая вычисляет среднее значение массива чисел двойной точности, и такую же...
 

Salve. Come posso catturare il segnale d'ingresso dell'indicatore luminoso nel codice? L'indicatore dipinge una candela sul grafico ed emette un avviso di entrata.

In poche parole voglio scrivere un robot per questo indicatore.

 
Alexey Viktorov:
Alert visualizza l'ora locale del PC. Per impostarlo sulla stessa ora del terminale, potete semplicemente cambiare l'ora del computer.

Grazie ) Questo è l'unico modo, non c'è altro modo per impostare il tempo in Alert? E c'è un'alternativa alla funzione standard Alert() in MQL4, in cui l'ora dell'allarme può essere impostata all'ora del terminale?