ordinamento di una matrice a 2 dimensioni per la seconda dimensione - pagina 2

 

Ehi Gordon, grazie per avermi avvisato, mentre leggevo quel codice, mi è venuto in mente che ho già uno snippet di codice che fa un loop attraverso il paniere per trovare il più grande trade perdente, potrei usarlo accoppiato con un clone di esso invertito per trovare il più grande vincitore, se il vincitore è maggiore del perdente, allora posso chiudere ognuno di essi. Questo funzionerà per quello che mi serve. A volte, dormirci sopra è il miglior generatore di codice di tutti. Spara, probabilmente potrei codificare questo durante la notte. Non c'è molto da modificare. Non devo farli chiudere tutti insieme. Ci passiamo la prima volta, poi al prossimo tick o candela possiamo passarci di nuovo, o come dicevo prima, ho un'altra funzione che si attiva allo stesso tempo e qualcosa del genere sarebbe utile. Posso semplicemente incorporarlo nella codifica di quella funzione.

Grazie per avermi aperto gli occhi, Gordon.

 

Se vuoi ordinare gli array per prezzo, perché non carichi semplicemente il prezzo nella prima dimensione e il biglietto nella seconda dimensione......poi puoi ordinarli nel modo normale.

 

Sì, ci avevo già pensato. Poi basta copiare i dati in un altro array con disposizione invertita per ordinare nell'altro modo. Quello che ho deciso di fare è molto più semplice e in realtà si adatta molto meglio alle mie esigenze. Fondamentalmente eseguo un ciclo attraverso i trade aperti e trovo il più grande vincitore e il più grande perdente che è inferiore al più grande vincitore, poi li chiudo entrambi. Al prossimo tick o candela, ripete il processo. Ha funzionato bene.

 
gordon:

Indipendentemente da come lo si voglia chiamare, la prima dimensione in un array 2D è il vettore arr_name[0,1,...,n][0], quindi tecnicamente la prima parentesi tiene la prima dimensione; questo è anche il vettore che sarà ordinato da ArraySort(). Dal libro:

Visto che siamo in tema di ArraySort() citerò 2 particolarità non documentate che ho trovato nel tempo (e sarei felice se qualcuno mi confermasse o correggesse...?):

  1. Se alcuni elementi della prima dimensione sono identici, non manterranno necessariamente il loro ordine. Ovviamente questo dovrebbe essere documentato se è "by-design", altrimenti lo considererei un "bug".
  2. OrderSort() non funziona con gli array 4D (restituisce l'errore 4053). Di nuovo, questo dovrebbe essere documentato ma non lo è.
Scusate per la risposta tardiva amici... molte cose si sono messe in mezzo... Vi assicuro che apprezzo molto le vostre risposte.
FWIW queste sono le mie risposte (in modalità 'spammy' :( ) :
- Sulle matrici 1D nessuna domanda si pone. Sugli array 2D, 3D, 4D la coppia di parentesi più a sinistra è sempre la prima dimensione, è corretto Gordon?
 
cameofx:
- Sugli array 1D non si pone alcuna domanda. Nelle matrici 2D, 3D, 4D la coppia di parentesi più a sinistra è sempre la prima dimensione, è corretto Gordon?

Sì.

 
gordon:

Indipendentemente da come lo si voglia chiamare, la prima dimensione in un array 2D è il vettore arr_name[0,1,...,n][0], quindi tecnicamente la prima parentesi tiene la prima dimensione; questo è anche il vettore che sarà ordinato da ArraySort(). Dal libro:

Visto che siamo in tema di ArraySort() citerò 2 particolarità non documentate che ho trovato nel tempo (e sarei felice se qualcuno mi confermasse o correggesse...?):

  1. Se alcuni elementi della prima dimensione sono identici, non manterranno necessariamente il loro ordine. Ovviamente questo dovrebbe essere documentato se è "by-design", altrimenti lo considererei un "bug".
  2. OrderSort() non funziona con gli array 4D (restituisce l'errore 4053). Di nuovo, questo dovrebbe essere documentato ma non lo è.
Scusate per la risposta tardiva amici... molte cose si sono messe in mezzo... Vi assicuro che apprezzo molto le vostre risposte.
FWIW queste sono le mie risposte:
- Sulle matrici 1D non si pone alcuna domanda. Nelle matrici 2D, 3D, 4D la coppia di parentesi più a sinistra è sempre la prima dimensione. Questa è anche la mia comprensione.
int    a[50];       // A one-dimensional array of 50 integers.
double m[7][50];    // Two-dimensional array of seven arrays,
                    //each of them consisting of 50 integers
Ma quando guardo questa spiegazione. Il modo in cui è descritto è "array bidimensionale di sette array. ognuno dei quali consiste di 50 numeri interi " Contemplando questo e le vostre risposte... Questo deve
essere una spiegazione errata perché suggerisce che i 50 interi sono più come la dimensione della riga/membro dei dati e 7 è la colonna/intestazione. Questo mi ha portato a credere (erroneamente)
che il più a destra fosse la parte di riga/membro che dovremmo/potremmo convenientemente ridimensionare...
- Ti ringrazio per aver condiviso la tua scoperta Gordon. Purtroppo testare è un lusso per me in questi giorni... Posso avere accesso al computer e a internet solo a intermittenza (è complicato).
Anche i test su un grafico morto si rivelano una sfida... :( . Da qui la mia comprensione a volte "contorta". TBH, mi affido soprattutto alla memoria e ai riferimenti...(scusate...).

PS: oops... non sapevo che il post precedente fosse entrato. L'ho modificato.
 
cameofx:
[...] Questa deve essere una spiegazione errata perché suggerisce che i 50 interi sono più la dimensione della riga/membro dei dati e 7 è la colonna/intestazione.

Non sono sicuro di cosa suggerisca, ma a prescindere, il più a sinistra è la prima dimensione. Molta della documentazione è una traduzione dal russo, molte volte non una traduzione molto buona, quindi forse questo è uno di quei casi. La cosa della colonna/fila è solo una metafora; ci rende più facile immaginare l'array, ma non ha nulla a che fare con l'implementazione effettiva. Se la prima dimensione è una 'riga' o una 'colonna' dipende da voi...

 
1005phillip:


Guardo l'indicizzazione e il dimensionamento dell'array nel modo standard dei fogli di calcolo... Row-Column (mnemonico "romano-cattolico").

Array 1D: MyArray[RowNumber-1]

Matrice 2D: MyArray[RowNumber-1][ColumnNumber-1]

Matrice 3D: MyArray[RowNumber-1][ColumnNumber-1][Worksheet-1] ....

Il riferimento che ho citato riguardo alla prima dimensione mi ha confuso...(vedi post sopra). Quindi logicamente non possiamo ridimensionare il ColumnNumber e/o il WorksheetNumber
e/o BookNumber...solo il RowNumber. Che è la coppia di parentesi più a sinistra negli array 2D, 3D e 4D.
 
cameofx:
Quindi logicamente non possiamo ridimensionare [...]

Esatto.

 
gordon:

Non sono sicuro di cosa suggerisca, ma a prescindere, la più a sinistra è la prima dimensione. Molta della documentazione è una traduzione dal russo, molte volte non una traduzione molto buona, quindi forse questo è uno di quei casi. La cosa della colonna/fila è solo una metafora; ci rende più facile immaginare l'array, ma non ha nulla a che fare con l'implementazione effettiva. Che la prima dimensione sia una 'riga' o una 'colonna' dipende da voi...

Già... sfortunatamente, molti di noi - sono sicuro di parlare per molti neofiti là fuori... - si affidano troppo spesso alla documentazione esistente...