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

 

Ciao a tutti, ho una domanda su MQL4

Per impostazione predefinita, l'array è indicizzato da 0 e in ordine crescente

DOMANDE E RISPOSTE

Con quale funzione, o costrutto di linguaggio, l'array di cui sopra può essere indicizzato da 10 valori con valori interi arbitrari e in qualsiasi ordine? Per esempio, come qui sotto. Vi sarei molto grato se poteste dimostrare questo metodo con un codice appropriato.

Grazie.

 
ANDREY:

Ciao a tutti, ho una domanda su MQL4

Per impostazione predefinita, l'array è indicizzato da 0 e in ordine crescente

Q:

Con quale funzione, o costrutto di linguaggio, posso indicizzare l'array di cui sopra a 10 valori con valori interi arbitrari e in qualsiasi ordine? Per esempio, come qui sotto. Vi sarei molto grato se poteste dimostrare questo metodo con un codice appropriato.

Grazie.

Mescolare in modo casuale, buffer o indici(MathRand)

 
Valeriy Yastremskiy:

Nell'indicatore nella struttura dell'allarme. La quinta linea dal basso èAlert(b);

Questo sembra essere il numero di millisecondi dall'avvio del sistema)

Grazie!
 
Taras Slobodyanik:

Mescolare in modo casuale, buffer o indici (MathRand)

Per quanto riguarda la disposizione degli indici in sequenza casuale, ho capito che questo viene fatto utilizzando la funzione MathRand().

La mia domanda è quale funzione può aiutarmi a sostituire i valori di indice, che sono di default (0,1,2,3,4,5,6...9) con i valori di indice necessari per me, per esempio ( 45,90,119,120,234,336,338,564,607,901). Non ho bisogno di questa operazione per scrivere un indicatore.

Grazie.

 
ANDREY:

Per quanto riguarda la disposizione degli indici in sequenza arbitraria, ho capito che si fa con la funzione MathRand().

La domanda E con l'aiuto di quale funzione posso sostituire i valori di indice, che sono di default (0,1,2,3,4,5,6...9) con valori di indice necessari per me, per esempio ( 45,90,119,120,234,336,338,564,607,901). Non ho bisogno di questa operazione per scrivere un indicatore.

Grazie.

Creare un secondo buffer - buffer indice.
Riempirlo con valori misti, da 0 a size_buffer - sono gli indici)

...o semplicemente prendere un numero casuale e usarlo per ottenere il valore del buffer.
 
Taras Slobodyanik:

Creare un secondo buffer - un buffer indice.
Riempirlo con valori mischiati, da 0 a size_buffer - questi sono gli indici)

...o semplicemente prendere un numero casuale e usarlo per ottenere il valore del buffer.

Grazie per l'aiuto.

Ecco un semplice codice

double MaX[10];
int a;
void OnTick()
{
if (Minute()!=Min)
{
if (a==9)
{
a=0;
}
a++;
MaX[a]=Bid;
Min=Minute();
}
}

In 10 minuti l'array sarà riempito con valori di prezzo con indici da 0 a 9.
Se non ti dispiace, per favore cambia il codice in modo che l'array sia riempito con gli stessi valori, ma gli indici di questo array sono nel seguente ordine 45,90,119,120,234,336,338,564,607,901

Non c'è ancora bisogno di mescolare i valori dell'indice.
Grazie per l'aiuto.

Non ho nessun indicatore nelle mie strategie. Non ho familiarità con i buffer. Per quanto ho capito il buffer è un elemento di un indicatore.

 
ANDREY:

Grazie per il vostro aiuto.

Ecco un semplice codice

Tra 10 minuti l'array sarà riempito con valori di prezzo con indici da 0 a 9.
Se non ti dispiace, per favore cambia il codice in modo che l'array sia riempito con gli stessi valori, ma gli indici di questo array sono i seguenti: 45,90,119,120,234,336,338,564,607,901

Non c'è ancora bisogno di mescolare i valori dell'indice.
Grazie per l'aiuto.

Non ho nessun indicatore nelle mie strategie. Non ho familiarità con i buffer. Per quanto ho capito il buffer è un elemento di un indicatore.

L'indice 901 significa che ci sono 902 elementi nella matrice.
Mass[45]=Max[0].....Mass[901]=Max[9]
 
Valeriy Yastremskiy:
L'indice 901 significa che ci sono 902 elementi nella matrice.
Mass[45]=Max[0].....Mass[901]=Max[9]

No... Ci sono 10 elementi nella matrice. E questi 10 indici di questi 10 elementi devono essere denotati da questi valori in questa sequenza (0)45, (1) 90, (2) 119, (3) 120, (4) 234, (5) 336, (6) 338, (7) 564, (8) 607, (9) 901

Tra parentesi ci sono i valori dell'indice precedente. Dovrebbero essere sostituiti da nuovi valori senza parentesi.

di elementi dell'array può essere indicizzato da qualsiasi sequenza di numeri, e non nell'ordine 0,1,2,3,4........100

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

No... ci sono 10 elementi nella matrice. E questi 10 indici di questi 10 elementi devono essere denotati da questi valori in questa sequenza (0)45, (1) 90, (2) 119, (3) 120, (4) 234, (5) 336, (6) 338, (7) 564, (8) 607, (9) 901

Tra parentesi sono i vecchi valori degli indici. Dovrebbero essere sostituiti da nuovi valori senza parentesi.


Cioè, posso indicizzare qualsiasi numero di elementi in un array con una sequenza arbitraria di numeri, non nell'ordine 0,1,2,3,4........100

Unindice(lat.index significa lista, registro, indicizzatore o dito indice) è un numero, una lettera o un'altra combinazione di simboli che indica dove si trova un elemento in una matrice.

L'indice 45 indica il 45° elemento della lista, l'indice 90 indica il 90° elemento.

 
ANDREY:

No... ci sono 10 elementi nell'array. E questi 10 indici di questi 10 elementi devono essere denotati da questi valori in questa sequenza (0)45, (1) 90, (2) 119, (3) 120, (4) 234, (5) 336, (6) 338, (7) 564, (8) 607, (9) 901

Tra parentesi sono i vecchi valori degli indici. Dovrebbero essere sostituiti da nuovi valori senza parentesi.


Cioè, posso indicizzare qualsiasi numero di elementi dell'array con qualsiasi sequenza di numeri, e non nell'ordine 0, 1, 2, 3, 4........100

Non capisco, l'indice dell'array è un indice da 0 a N. E quello che vuoi è più simile a un dizionario con gli hashtag. Non so come farlo in un array e non credo che si possa fare in un array regolare. C'è una libreria di classi generiche con dizionari in MT. Questo dovrebbe aiutare.

Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
  • 2017.12.07
  • www.mql5.com
С 6 декабря 2017 года в стандартную поставку MetaTrader 5 стали входить так называемые Generic-классы, реализующие эффективные алгоритмы для хранен...