green7 pisze:No i ok. Jak wyniki - działa ?
Trochę inaczej zrobione, ale działa
W sumie nie wiem jaka różnica i co lepiej (expert czy indyk), ale przerobiłem na wskaźnik i powstał jakiś "mix" - efekt taki jak chciałem.
Stary kod, który się tu od początku przewija ciągle mnie "zaskakuje" przy kompilacji i w sumie nie działa (nawet jak się dobrze skompiluje).
Podejrzewam, że to values w query coś jest nie tegas.
Kod: Zaznacz cały
#include <libmysql.mqh>
int mysql;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
mysql = mysql_init(mysql);
if(mysql != 0)
Print("allocated");
string host = "localhost";
string user = "root";
string password = "";
string DB = "forex";
int clientflag = 0;
int port = 3306;
string socket = "";
string table= "TicksInMySQL"
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);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
string query = "";
int length = 0;
query = StringConcatenate("insert into" ,table,"(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);
}
include/libmysql.mqh
Kod: Zaznacz cały
/*
* libmysql interface for MT4
*/
#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
log z kompilatora
Kod: Zaznacz cały
Compiling 'TicksInMySQLx.mq4'...
'res' - variable not defined \experts\TicksInMySQLx.mq4 (20, 8)
'res' - variable not defined \experts\TicksInMySQLx.mq4 (22, 7)
'table' - variable not defined \experts\TicksInMySQLx.mq4 (44, 44)
Z działającego kodu mam tak
Kod: Zaznacz cały
query=StringConcatenate("insert into ",table," set symbol=\'",Symbol(),
"\',open="+Open[0]+
",high="+High[0]+
",low="+Low[0]+
",close="+Close[0]+
",volume="+Volume[0]+
",ask="+Ask+",bid="+Bid+
Szukałem lepszej metody na wrzucanie do tabeli, wyżej wystarczy mi dodawać co chce lub usuwać komentarzem

Łatwo się pogubić z tymi " ' \ , itd
Dzięki za pomoc.

Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
R.E.P.T.I.L.E. - Robotic Electronic Person Trained for Infiltration and Logical Exploration (off-line,only e-mail)