Ticki z MT4 to bazy SQL

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
mysje_hood
Gaduła
Gaduła
Posty: 250
Rejestracja: 13 mar 2007, 14:00

Ticki z MT4 to bazy SQL

Nieprzeczytany post autor: mysje_hood »

Hej,

Czy znacie możne jakieś gotowe narzędzia które pomogą zbierać dane z MT4 do bazy sql (postresql, mysql, oracle sql)?

Przerobiłem kilka które znalazłem w googlach jednak niestety nic konkretnego z tego nie wyszło. Aktualnie staram się uruchomić to: https://www.mql5.com/en/code/8589 jednak pomimo tego, iż nie ma zbytnio co tam zepsuć to ciągle otrzymuje błąd:

Kod: Zaznacz cały

0	21:24:03.840	Expert TicksInMySQL EURUSD,H4: loaded successfully
0	21:24:06.418	TicksInMySQL EURUSD,H4: allocated
0	21:24:08.668	TicksInMySQL EURUSD,H4: error=131106240 2005 
0	21:24:08.668	TicksInMySQL EURUSD,H4: initialized
0	21:24:08.668	TicksInMySQL EURUSD,H4: error=2006
0	21:24:08.746	TicksInMySQL EURUSD,H4: error=2006
0	21:24:09.449	TicksInMySQL EURUSD,H4: error=2006
oczywiscie pozamieniałem tam dane:

Kod: Zaznacz cały

   string host = "localhost";
   string user = "root";
   string password = "mypassword";
   string DB = "my_database";
   int clientflag = 0;
   int port = 3306;
   string socket = "";
jednak nic to nie daje. Szukałem rozwiązania tego błędu 2005 i 2006 jednak żadne z zastosowanych zabiegów nie podziałało.

Bardzo, bardzo proszę was o pomoc!

Dziekuję,
Kamil
Obrazek

green7
Maniak
Maniak
Posty: 2060
Rejestracja: 16 sty 2008, 18:44

Re: Ticki z MT4 to bazy SQL

Nieprzeczytany post autor: green7 »

mysje_hood pisze: oczywiscie pozamieniałem tam dane:

Kod: Zaznacz cały

   string host = "localhost";
   string user = "root";
   string password = "mypassword";
   string DB = "my_database";
   int clientflag = 0;
   int port = 3306;
   string socket = "";
jednak nic to nie daje. Szukałem rozwiązania tego błędu 2005 i 2006 jednak żadne z zastosowanych zabiegów nie podziałało.
A na co pozamieniałeś te dane ? Bo błąd 2005/2006 to ogólnie problemy z połączeniem się z serwerem mysql. Gdzie masz ten serwer - na swoim kompie ? a jak nie to co z firewallem ....
Mniemam, że libmysql.dll wrzuciłeś do odpowiedniego katalogu by terminal go widział (bez tego pewnie błąd byłby inny).
Green
Obrazek
Obrazek

Awatar użytkownika
mysje_hood
Gaduła
Gaduła
Posty: 250
Rejestracja: 13 mar 2007, 14:00

Re: Ticki z MT4 to bazy SQL

Nieprzeczytany post autor: mysje_hood »

Cześć Green,

Dziękuję Ci za zainteresowanie tematem!

Tak, serwerem jest mój komp. Libmysql wrzuciłem do odpowiedniego folderu (wcześniej kompilator zgłaszał błąd, więc skopiowałem tam gdzie trzeba - błąd zniknął więc myślę, że akurat to jest OK).

Masz jakieś inne sugestie?
EDIT:

Pozmieniałem trochę kod. Teraz wygląda tak:

Kod: Zaznacz cały

//+------------------------------------------------------------------+
//|                                                 TicksInMySQL.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#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;
#include <mql4-mysql.mqh>
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   mysql = mysql_init(mysql);
   if(mysql != 0) 
       Print("allocated");
   string host = "localhost";
   string user = "root";
   string password = "balecik";
   string DB = "my_database";
   int clientflag = 0;
   int port = 3306;
   string socket = "";
   int res = init_MySQL(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);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   string query = "";
   int length = 0;
   
 query = StringConcatenate("insert into EURUSD(margin,freemargin,date,ask,bid,symbol,equity) values(",
                             AccountMargin(), ",", AccountFreeMargin(), ",\"", 
                             TimeToStr(CurTime(), TIME_DATE|TIME_SECONDS), "\",", 
                             NormalizeDouble(Ask, 4), ",", NormalizeDouble(Bid, 4),
                             ",\"", Symbol(), "\",", AccountEquity(), ");");
                        

                             
                              Print("po insert");
   length = StringLen(query);
    Print("po string lenght");
   mysql_real_query(mysql, query, length);
    Print("po strin real query");
   int myerr = mysql_errno(mysql);
   if(myerr > 0)
       Print("error=",myerr);
  }
//+------------------------------------------------------------------+

a błąd jaki teraz otrzymuję to:
0 00:23:34.504 Expert TicksInMySQL GBPUSD,H1: loaded successfully
0 00:23:34.598 TicksInMySQL EURUSD,H4: allocated
0 00:23:34.598 TicksInMySQL EURUSD,H4: error=157092472 0
0 00:23:34.598 TicksInMySQL EURUSD,H4: initialized
0 00:23:34.598 TicksInMySQL EURUSD,H4: error=1064
PS plik mql4-mysql.mqh w załączeniu.

Dzięki!
Kamik

-- Dodano: czw 28-04-2016, 8:59 --

Ps źródło pliku mql4-mysql
https://www.mql5.com/en/code/11114
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Obrazek

Awatar użytkownika
mysje_hood
Gaduła
Gaduła
Posty: 250
Rejestracja: 13 mar 2007, 14:00

Re: Ticki z MT4 to bazy SQL

Nieprzeczytany post autor: mysje_hood »

Hej,

Udało mi się rozwiązać problem i wszystko działa jak należy :) gdyby ktoś miał kiedyś problem i potrzebował porady to pisać!

Temat można zamknąć.

Dzięki,
Kamil
Obrazek

ODPOWIEDZ