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

 
ANDREY:

Ho l'idea generale... per quanto mi riguarda. Grazie per il suggerimento. Se non ti dispiace, per favore dimmi cosa significa il segno del dollaro prima del nome dell'array $ array[] e prima del valore $var

Ho la sensazione che non sia di mql4 per qualche motivo.

sì, non è damql, ma il significato è lo stesso

 
Aleksei Stepanenko:
Nel tuo caso, la risposta alla domanda principale è interessante: perché hai bisogno di fare l'ordinamento ogni minuto? Come può la tua idea essere implementata in modo più economico?

Il codice che ho postato è solo un esempio del problema che non sono riuscito a risolvere. Nel codice reale l'ordinamento dovrà essere fatto su ogni tick in una colonna di 20-30 elementi. Ho un processore quad core ed è per questo che non sento alcun ritardo durante i test. Inoltre, anche il codice attuale non è molto grande. Ma non ho ancora rappresentato completamente la mia idea sotto forma di codice. Quando l'avrò codificato completamente, allora comincerò a pensare come migliorarlo dal punto di vista delle prestazioni.

E ho capito bene che la ricerca di 1000 valori in mql richiede meno tempo dell'ordinamento di 1000 elementi dell'array o di qualsiasi altra operazione con gli array? A proposito, potresti dirmi..... quali operazioni in mql4 richiedono molto tempo?

Grazie per l'aiuto

 
Vitaly Muzichenko:

sì, non è damql, ma il significato è lo stesso

E che linguaggio è e ho ragione di capire che alcuni costrutti di questo linguaggio possono essere usati in mql? Penso che per il futuro questa informazione mi sarebbe utile
Grazie per il vostro aiuto.

 
ANDREY:

Che linguaggio è e capisco bene che alcuni costrutti di questo linguaggio possono essere usati in mql? Penso che per il futuro questa informazione mi sarebbe utile
Grazie per il vostro aiuto.

È php, ma non credo che tu debba approfondire, ci sonoabbastanza risposte sumql anche su questo forum.

 
Vitaly Muzichenko:

È php, ma non credo che tu debba approfondire, ci sonoabbastanza risposte sumql anche su questo forum.

Capito. Grazie.

 
ANDREY:

Capito. Grazie.

Dovete pensare bene alla logica di ciò che volete che sia l'output, e poi iniziare a scrivere. Ci sono molte cose su cui non è necessario contare ogni volta, ma solo quando la situazione cambia.

Dovete solo monitorare il cambiamento della situazione e fare i calcoli pesanti dopo, piuttosto che farli ad ogni tick inutilmente.

 
Vitaly Muzichenko:

Dovete pensare bene alla logica di ciò che volete che sia l'output e poi iniziare a scrivere. Ci sono molte cose che non hanno bisogno di essere calcolate ad ogni spunta, ma solo quando la situazione cambia.

Per fare questo, basta monitorare il cambiamento della situazione e poi fare calcoli pesanti, piuttosto che farli ad ogni tick inutilmente.

Ho già pensato alla logica e capisco chiaramente cosa voglio ottenere in uscita. Capisco Mql4 (e un po' di Mql5) nella misura in cui capisco molto (ma non tutto) di quello che mi serve dai manoscritti. E soprattutto, capisco quasi tutto quello che mi viene spiegato su questo forum. Sto cercando ora di codificare la mia concezione, ma non in un modo qualsiasi, ma il codice dovrebbe essere eseguito rapidamente, perché avrò bisogno di testarlo su molti strumenti e su lunghi timeframe. E comunque .... Cioè in questo momento sto facendo del mio meglio per codificare il mio concetto per tentativi ed errori (ho pochissima esperienza di codifica) e allo stesso tempo per imparare qualcosa di nuovo e utile per i tentativi futuri.

 
ANDREY:

Ma non in modo casuale, ma in modo che l'esecuzione del codice richieda un tempo minimo

Quindi diteci per cosa è necessario l'ordinamento, forse possiamo avere un'idea per un'altra implementazione.

 
Aleksei Stepanenko:

Quindi ditemi a cosa serve l'ordinamento, forse possiamo trovare un'idea per un'altra implementazione.

Grazie per il vostro aiuto. Mi avete incuriosito ..... Penso che tra 1-2 giorni finirò una parte di codice reale con l'ordinamento e poi lo posterò qui per imparare la vostra opinione professionale.

E ho un'altra domanda sulle informazioni che Maxim Kuznetsov mi ha dato in questo post. Lui visita qui più raramente di voi, quindi vi sarei grato se poteste spiegarmi qualcosa sul suo codice

void Convert_7x2_2x7 (const double &src[7][2],double &dst[2][7]) {

for(int i=0;i<7;i++)

for(int j=0;j<2;j++) {

dst[j][i]=src[i][j];

}

}

L'ho studiato attentamente e a lungo e questo è quello che mi è venuto in mente...

1. Questa è una funzione definita dall'utente

2.Non c'è alcun riferimento ad esso nel codice di cui sopra. È implicito nel codice principale all'interno di void OnTick()

3. In questo codice verranno cambiati solo gli indici delle matrici. Cosa succede ai valori degli elementi dell'array posso solo immaginare.

Quello che non capisco è questo.

1. Se l'esecuzione finale di questa funzione fa sì che dst[j][i] ottenga nuovi valori di dst[7][2], qual era lo scopo dei cicli? Non si potrebbe assegnare a dst[j][i] quei valori di indice immediatamente ed esplicitamente?

2. Ho capito bene che se cambio i valori degli indici in questo codice, i valori necessari degli elementi della matrice cambieranno automaticamente nelle nuove celle da soli?

3. Vi sarei grato se poteste scrivere una descrizione di come viene chiamata questa funzione personalizzata.

L'argomento degli array è piuttosto nuovo per me, e anche se queste informazioni non sono legate al mio codice attuale, sono sicuro che mi saranno utili in futuro. E mi piace fare riserve per il futuro per natura. :-)
Grazie per il vostro aiuto.

 

No, è molto lontano dall'essere professionale.

double LoY[31][2], Mirror[2][31];

//вызывается так:
ConvertArray(LoY,Mirror);

//все значения строк из массива LoY запишутся в столбцы Mirror,
//условно сказать, массив повернётся
void ConvertArray(const double &src[31][2],double &dst[2][31])
   {
   for(int i=0; i<31; i++) for(int j=0; j<2; j++) dst[j][i]=src[i][j];
   }