Discussione sull’articolo "Come accedere al database MySQL da MQL5 (MQL4)" - pagina 2

 

Grazie per questo nuovo approccio! Ho provato diverse soluzioni, ma questa sembra la migliore finora. Ho fatto una piccola aggiunta alla vostra libreria in cui restituisco il numero di campi per una query SELECT, usando mysql_num_fields, in modo da sapere quanti campi devo elaborare e restituire nel lato MQL. Grazie ancora per aver messo insieme tutto questo, mi ha davvero aiutato!!!

Codice MQL:

int fields = MySqlNumFields(cursor);
for (int j=0; j<fields;j++)
{
    data[j] = MySqlGetFieldAsString(cursor, j);
}
 
sokramm:

Grazie per questo nuovo approccio! Ho provato diverse soluzioni, ma questa sembra la migliore finora. Ho fatto una piccola aggiunta alla vostra libreria in cui restituisco il numero di campi per una query SELECT, usando mysql_num_fields, in modo da sapere quanti campi devo elaborare e restituire nel lato MQL. Grazie ancora per aver messo insieme tutto questo, mi ha davvero aiutato!!!

Grazie per le gentili parole. È una soluzione di base e mantiene la funzionalità generale che sto usando in realtà.

Durante lo sviluppo di questa soluzione ho utilizzato le seguenti regole: robustezza, facilità di studio, semplicità di utilizzo e supporto minimo.

Certo, potete modificare questo progetto e aggiungere qualsiasi funzione in base alle vostre esigenze.

Buona fortuna,

Eugene

 

Ciao amici,

Se vi piace questa soluzione e la provate per progetti reali (non solo per divertimento), ho un aggiornamento.

Sto iniziando a scrivere un nuovo articolo su come lavorare con diversi database, come MS SQL Server, MS Access, Oracle, IBM DB/2, PostgreSQL.

La decisione sarebbe robusta e facile da usare come questa, ma non ho tempo per completarla.

Quindi, se volete sostenere questo progetto potete inviare qualche dollaro su paypal per me: e.a.lugovoy@gmail.com

L'ammontare della somma non è importante, vorrei solo sapere se questa decisione deve essere completata.

Grazie a tutti,

Eugene

 

ciao,EugeniyLugovoy~


Vorrei sapere perché ' MySqlGetFieldAsDouble(Cursore, 3);' non riesce a scrivere il suo valore in data[i]?


Print("data[i]",data[3]);--sempre displa 0.0. cosa c'è che non va ? grazie signore!



for (i=0; i<Rows; i++)
if (MySqlCursorFetchRow(Cursor))

{

double data[] ;

ArrayResize(data,Rows);

dati[i]= MySqlGetFieldAsDouble(Cursore, 3);

Print("data[i]",data[3]);
}

Person - schema.org
  • schema.org
PropertyExpected TypeDescription Properties from Person The Global Location Number (GLN, sometimes also referred to as International Location Number or ILN) of the respective organization, person, or place. The GLN is a 13-digit number used to identify parties and physical locations. A count of a specific user interactions...
 
elugovoy:

Ciao amici,

Se vi piace questa soluzione e la provate per progetti reali (non solo per divertimento), ho un aggiornamento.

Sto iniziando a scrivere un nuovo articolo su come lavorare con diversi database, come MS SQL Server, MS Access, Oracle, IBM DB/2, PostgreSQL.

La decisione sarebbe robusta e facile da usare come questa, ma non ho tempo per completarla.

Quindi, se volete sostenere questo progetto potete inviare qualche dollaro su paypal per me: e.a.lugovoy@gmail.com

L'importo della somma non è importante, vorrei solo sapere se questa decisione deve essere completata.

Grazie a tutti,

Eugene

a volte, l'array è necessario - per esempio, abbiamo bisogno di abbinare i dati ad una data specifica (del tick) - può essere correlato ad un algoritmo che è conveniente fare in array di MYSQL - può darmi un aiuto signore - grazie mille!
 
illman:

ciao,EugeniyLugovoy~

Vorrei sapere perché ' MySqlGetFieldAsDouble(Cursore, 3);' non riesce a scrivere il suo valore in data[i]?

Print("data[i]",data[3]);--sempre displa 0.0. cosa c'è che non va ? grazie signore!

per (i=0; i<Rows; i++)

if (MySqlCursorFetchRow(Cursore))

{

double data[] ;

ArrayResize(data,Rows);

dati[i]= MySqlGetFieldAsDouble(Cursore, 3);

Print("data[i]",data[3]);
}

Si sta cercando di definire l'array ogni volta nel ciclo e di stampare un elemento vuoto dell'array.

Provate questo:

// Credo che Rows ottenga il numero di righe già prima di questo workaround.
double data[];
ArrayResize(data, Rows);  

for (i=0; i<Rows; i++)
    {
     if (MySqlCursorFetchRow(Cursor))
        {
          data[i]= MySqlGetFieldAsDouble(Cursor, 3);
        }
    }

// qui verrà riempito l'array "data".
Print("data[",3,"]",data[3]);

Quindi, dovete definire l'array una volta prima del ciclo di acquisizione, poi ridimensionarlo e quindi scrivere la routine per ottenere i dati.

A proposito, il numero 3 in MySqlGetFieldAsDouble(Cursor, 3); significa la quarta colonna nell'elenco SELECT, perché la numerazione inizia con 0, cioè SELECT Open, High, Low, Close FROM ... significa 0 - Open, 1 - High, 2 - Low e 3 - Close.

Spero che questo possa essere d'aiuto.

Saluti,

Eugene

 
elugovoy:

Si sta cercando di definire l'array ogni volta nel ciclo e di stampare un elemento dell'array vuoto.

Provate questo:

Quindi, dovete definire l'array una volta prima del ciclo di recupero, poi ridimensionarlo e quindi scrivere la routine per ottenere i dati.

A proposito, il numero 3 in MySqlGetFieldAsDouble(Cursor, 3); significa la quarta colonna nell'elenco SELECT, perché la numerazione inizia con 0, cioè SELECT Open, High, Low, Close FROM ... significa 0 - Open, 1 - High, 2 - Low e 3 - Close.

Spero che questo possa essere d'aiuto.

Saluti,

Eugene

Grazie per aiuto signore ,ho risolto i miei problemi sull'array。Hai fatto un buon lavoro su mysql-mql davvero~!

 
Per MetaTrader5 x64 utilizzare la seguente libreria (allegata alla discussione):
[Eliminato]  

Ciao elugovoy

Ottimo articolo e ottime librerie.

Sto cercando di utilizzare i tuoi esempi con MT5 ma ricevo questo errore:

2014.12.15:44:16.387 MySQL-001 'C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\libraries\MQLMySQL.dll' non è la versione a 64 bit.

Stai eseguendo MT5 sotto un'applicazione a 32 bit?

Potresti aiutarmi per favore?

Grazie mille!

Carmine Marrone.

 
carmine.marrone:

Ciao elugovoy

Ottimo articolo e ottime librerie.

Sto cercando di utilizzare i tuoi esempi con MT5 ma ricevo questo errore:

2014.12.15:44:16.387 MySQL-001 'C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\libraries\MQLMySQL.dll' non è la versione a 64 bit.

Stai eseguendo MT5 sotto un'applicazione a 32 bit?

Potresti aiutarmi per favore?

Grazie mille!

Carmine Marrone.

Ciao Carmine

Per quanto sopra in discussione ho allegato il progetto per x64, dai un'occhiata e/o scaricalo da questo post.

Spero ti sia d'aiuto.

Saluti,

Eugenio