System z użyciem bazy danych
System z użyciem bazy danych
Zabieram sie za to. Moze ktos przerabial temat to bylaby duza pomoc. Jesli nie to czeka mnie zabawa z DLLami (http://www.forex-tsd.com/tools-utilitie ... ement.html).
Pozdrawiam
Pozdrawiam
A wiec aby moc korzystac z dobrodziejstw bazy danych MySQL nalezy zainstalowac i uruchomic serwer np lokalnie (mysql.com). Nastepnie skopiowac biblioteke "libmysql.dll" z katalogu MYSQL/bin/ do MT4/experts/include.
Baze wypelniamy w ten sposob:
Pytamy natomiast z malym obejsciem (wynik do pliku i odczyt z pliku):
Dziala jak marzenie! Wlasnie wypelnilem sobie tabelki danymi H1 i M1 Zaraz przystapie do buszowania po tych danych!
Pozdrawiam!
Baze wypelniamy w ten sposob:
Kod: Zaznacz cały
#import "libmysql.dll"
int mysql_init(int db);
int mysql_errno(int TMYSQL);
int mysql_real_connect( int TMYSQL,string host,string user,string password, string DB,int port,int socket,int clientflag);
int mysql_real_query(int TMSQL,string query,int length);
void mysql_close(int TMSQL);
#import
int mysql;
int init(){
//----
mysql=mysql_init(mysql);
if (mysql!=0) Print("allocated");
string host="localhost";
string user="user";
string password="pwd";
string DB="mt4";
int clientflag=0;
int port=3306;
string socket="";
int
res=mysql_real_connect(mysql,host,user,password,DB,port,socket,clientflag);
int err=GetLastError();
if (res==mysql) Print("connected");
else Print("error=",mysql," ",mysql_errno(mysql)," ");
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
mysql_close(mysql);
//----
return(0);
}
int start()
{
string query="";
int length=0;
query=StringConcatenate("insert into ticks(margin,freemargin,date,ask,bid,symbol,equity) values(",AccountMargin(),",",AccountFreeMargin(),",\"",TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS),"\",",NormalizeDouble(Ask,4),",",NormalizeDouble(Bid,4),",\"",Symbol(),"\",",AccountEquity(),");");
length=StringLen(query);
mysql_real_query(mysql,query,length);
int myerr=mysql_errno(mysql);
if (myerr>0)Print("error=",myerr);
}
hope this helps.
Kod: Zaznacz cały
int GetClientTrades() {
FileDelete(queryFile);
string query="SELECT * INTO OUTFILE \'"+queryPFile+"\' FIELDS TERMINATED BY \';\' LINES TERMINATED BY \'\n\'FROM clients_trades;";
Print(query);
int length=StringLen(query);
mysql_real_query(mysql,query,length);
int myerr=mysql_errno(mysql);
if (myerr>0) Print("error=",myerr);
int handle,res,size,i;
ArrayResize(clientTrades,0);
handle=FileOpen(queryFile,FILE_CSV|FILE_READ);
if(handle<1) {
Print("File " + queryFile + " not found, the last error is ", GetLastError());
return(0);
}
while (!FileIsEnding(handle)) {
size++;
ArrayResize(clientTrades,size);
clientTrades[size-1][0]=FileReadNumber(handle);
clientTrades[size-1][1]=FileReadNumber(handle);
clientTrades[size-1][2]=FileReadNumber(handle);
clientTrades[size-1][3]=FileReadNumber(handle);
clientTrades[size-1][4]=FileReadNumber(handle);
clientTrades[size-1][5]=FileReadNumber(handle);
clientTrades[size-1][6]=FileReadNumber(handle);
clientTrades[size-1][7]=FileReadNumber(handle);
clientTrades[size-1][8]=FileReadNumber(handle);
clientTrades[size-1][9]=FileReadNumber(handle);
}
ArrayResize(clientTrades,size-1);
size--;
//if (clientTrades[size-1][0]==0.0) ArrayResize(clientTrades,size-1);
FileClose(handle);
return(1);
}
Pozdrawiam!
Owoce sukcesu rosną na drzewach cierpliwości...
Sadze ze na pewno ale nie znam sie na tym. Jesli chcesz robic cokolkiek z danymi to nie ma sie co rozdrabniac na excela i od razu uczyc sie sqla. To potezne narzedzie do _ultraszybkiego_ przeszukiwania duzych ilosci danych.
Jesli nadal upierasz sie przy excelu to utworz nowy watek zanim dostaniesz po uszach od moderatora za posty niedotyczace tego watku. Pozdrawiam.
Jesli nadal upierasz sie przy excelu to utworz nowy watek zanim dostaniesz po uszach od moderatora za posty niedotyczace tego watku. Pozdrawiam.
Owoce sukcesu rosną na drzewach cierpliwości...
Przy excelu się nie opieram po prostu wszystkie analizy robie w excelu z użyciem makr i bazy danych accessa. Oczywiście jak się nie da w excelu lub accessa to będe ładował wyniki wskażników z bazy mysql do excela bo excel jest potężnym narzędziem do analiz zwłaszcza z użyciem vba i baz danych. To mam jeszcze jedno pytanko czy ładowałeś wyniki jakiegoś wskażnika do bazy mysql?
tyle, ze excell ma ograniczenie co do ilosci rekordow i jezeli chcesz przeprowadzic dokładniejszą analize (np. na 1 minutowkach) czegokolwiek co ma wiecej niz 64k rekordow to raczej nie w excellu.
no i jeszcze ten czas potrzebny na przetworzenie danych... chyba, ze dysponujesz jakąś gigantyczna jednostką obliczeniowa.
no i jeszcze ten czas potrzebny na przetworzenie danych... chyba, ze dysponujesz jakąś gigantyczna jednostką obliczeniowa.