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

 
Roman Sharanov:

Ho bisogno di memorizzare array di citazioni in un array

Per copiare una volta in un ciclo e poi eseguire i calcoli usando ArrayCopy, non CloseCopy

Naturalmente, ognuno è libero di fare quello che vuole. Ma perché dovremmo copiare un array elemento per elemento in un altro array bidimensionale e poi lavorare con questo array bidimensionale? Non possiamo eseguire gli stessi calcoli invece di copiare?

O mi manca qualcosa? Un array unidimensionale può essere copiato nella seconda dimensione di un array bidimensionale?
 
Alexey Viktorov:

Naturalmente, ognuno è libero di fare come vuole. Ma perché copiare un elemento per elemento in un altro array bidimensionale e poi lavorare con questo array bidimensionale? Non possiamo fare gli stessi calcoli invece di copiare?

O mi manca qualcosa? È possibile copiare un array monodimensionale nella seconda dimensione di un array bidimensionale?

Ho due cicli annidati, quello esterno ha CopyClose, e quello interno

E tutti copiano gli stessi caratteri dall'array.

Voglio inserire un array di quotazioni per ogni coppia in un array separato prima dei loop.

Comunque, ecco cosa ho fatto, ho avvolto un doppio array di valuta in una struttura, e ho fatto un array di strutture

for(int i = 0; i<ACTIVES; i++){
      CopyClose(all_pairs[i], PERIOD_CURRENT, 1, calculation_period, pairs_data[i].currency);
      pairs_data[i].pair = all_pairs[i];
   }
for(int i = 0; i < ACTIVES-1; i++){
	 ArrayCopy(first_data, pairs_data[i].currency, 0,0,WHOLE_ARRAY);
	//работа с firstData
	...
      
	 for(int k = i+1; k < ACTIVES; k++){
		 ArrayCopy(second_data, pairs_data[i].currency, 0,0,WHOLE_ARRAY);
         	//Работа с secondData
         	...
      }
   }
 

Amici miei, non posso dormire senza risolvere questo problema per qualche tempo:

Uso un indicatore che periodicamente si aggiorna dopo aver ricevuto un tick. Ma a volte questo aggiornamento è necessario proprio ora, ma il tick è con un ritardo, e nei fine settimana il mercato dorme.
Devo cliccare con il tasto destro del mouse sul grafico - "refresh". Purtroppo non ho trovato un tasto di scelta rapida per questa azione.

La cosa più efficace che vedo è un indicatore/consulente separato altamente specializzato con un pulsante sul grafico, la cui pressione imita l'azione "refresh" una tantum. Ho provato a cercare la soluzione su Google, ma senza successo...

Dal momento che il tema si chiama "Tutte le domande dei neofiti, aiuto e discussione" mi permetto di fare questa domanda.
Spero che qualcuno intelligente in questa materia aiuti, o almeno ficchi il naso - "esattamente QUESTO è già stato discusso qui".


 
Roman Sharanov:

la differenza media ravvicinata non è uguale alla differenza media ravvicinata, ahimè e ah

Beh, questo è ovvio!

Ma se ci si sposta nello spazio delle medie ravvicinate, si è automaticamente in uno spazio matematico diverso.

Cioè, si esegue una trasformazione integrale delle medie mobili, e consapevolmente (!!!! Nel tuo caso, come ho capito, non del tutto) lasciare lo spazio di citazioni (da Close, nel tuo caso).

Cioè, si rinuncia consapevolmente alle quotazioni (Close) e si va nello spazio della media mobile (integrale).

Nessuno vi obbliga a farlo. Lo fai da solo, di tua spontanea volontà e in modo consapevole. (!?)

Ma!!! In questo nuovo spazio (integrale) dobbiamo lavorare con le differenze nelle medie, e non con le quotazioni.

La differenza di virgolette non ha senso nello spazio (integrale) delle medie!!!

E anche la differenza media delle virgolette nello spazio medio integrale non ha senso!!!

Spero che queste semplici verità matematiche vi siano chiare. (!?)

------------------------------------------------------------------------------------------------

E quello che hai è che ti muovi nello spazio delle medie. E, allo stesso tempo, si continua a considerare la differenza media di una chiusura.

Che razza di miracolo matematico è questo?

-------------------------------------------------------------------------------------------------------

Non si può avere un piede nella barca e un piede sulla riva e continuare a navigare sul mare.

 
Alexey Viktorov:

Naturalmente, ognuno è libero di fare come vuole. Ma perché dovrei copiare un elemento per elemento in un altro array bidimensionale e poi lavorare con questo array bidimensionale? Non possiamo eseguire questi calcoli invece di copiare?

O mi manca qualcosa? Un array unidimensionale può essere copiato nella seconda dimensione di un array bidimensionale?

Probabilmente non hai capito qualcosa.

Per definizione, i calcoli negli array di dati grezzi sono vietati.

Per eseguire i calcoli, dobbiamo copiare l'array di dati originale in un nuovo array, e poi eseguire i calcoli con questo nuovo array.

In questo modo, se si verificano errori o glitch, possiamo sempre tornare facilmente all'array originale e ricominciare.

----------------------------------------------------------------------------------------------------------------------------------

Se usiamo l'array originale per i calcoli, qualsiasi errore sarà fatale.

--------------------------------------------------------------------------------------------------------------------------------------------

E copiare un array unidimensionale in uno bidimensionale può essere abbastanza utile.

Per esempio, scriviamo "colore delle citazioni" nel primo array, e le citazioni stesse nel secondo.

Poi dal "colore" dell'array si può giudicare circa i movimenti delle citazioni stesse, senza prestare attenzione ai valori.

------------------------------------------------------------------------------------------------------------------------------------------------

A proposito, è utile avere una simile "gradazione di colore" sul grafico stesso (e non solo uno sfondo semplice!).

Oppure si può semplicemente fare una "barra di colore" sul lato. È molto utile averlo per il trading.

 
Сергей Николаев:


Uso un indicatore, che periodicamente si aggiorna dopo l'arrivo del tick. Ma a volte questo aggiornamento è necessario proprio ora, e il tick viene ricevuto con un ritardo, e nei fine settimana il mercato dorme.
Devo cliccare con il tasto destro del mouse su "aggiorna" il grafico. Purtroppo non ho trovato nessun tasto di scelta rapida per questa azione.

tracciare questo evento in un timer e aggiornare il tuo indicatore

 
neverness:

Probabilmente non hai capito qualcosa.

I calcoli nei set di dati grezzi sono, per definizione, vietati.

Davvero... non puoi capire queste sciocchezze che stai scrivendo...

Quali array originali? E chi l'ha proibito?

Tutto il resto, non solo è difficile capirne il significato, ma è addirittura impossibile capire a cosa si riferisce tutto quello che hai scritto...

 
Alexey Viktorov:

Infatti... È impossibile capire queste sciocchezze che scrivi...

Quali sono gli array originali? E chi l'ha proibito?

Tutto il resto, è difficile non solo capire il significato, ma anche capire a cosa si riferisce tutto ciò che è scritto...

Esercitati a capire le "sciocchezze", non te stesso.

Ancora una volta, nella programmazione, i dati grezzi non vengono corretti e non cambiano in nessuna condizione.

Ecco perché questi dati vanno solo "in modalità di lettura - SOLO READ".

Cioè, per lavorare con i dati grezzi, devono essere copiati in un nuovo array di dati.

Ed è per questo che C++Builder ha una procedura per copiare i dati nel blocco Memo, che determina la dimensione dell'array da copiare.

A proposito, questo è presente anche in MT4/MT5. Ben fatto, gli sviluppatori di MT4/MT5 - se ne sono occupati.

 
neverness:

Un altro carico di sciocchezze che non solo non ha alcuna rilevanza per l'argomento in questione, ma non ha alcun senso.

 
Alexey Viktorov:

Un'altra sciocchezza che non solo non ha alcuna attinenza con l'argomento in questione, ma non ha alcun senso.

Non arrabbiarti. È normale. Se non capite, va bene. Non è un grosso problema.

Motivazione: