Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А попробуй так:
BTRVODKAex
для таких целей пишется промежуточная dll на с++\cli. Напрямую управляемый код из mql вы не вызовете
Подскажите стабильное решение для работы с базой mysql(чтение и запись информации). mysql_wrapper постоянно валит терминал.
https://www.mql5.com/ru/code/8623
https://www.mql5.com/ru/code/8623
При использовании mysql_wrapper падает терминал. может есть способ это исправить? тестил на вин ХР и вин 7 билд 7100 - проблемы одиннаковые.
Лог:
There has been a critical error
Time : 2009.07.03 13:38
Program : Client Terminal
Version : 4.00 (build: 224, 15 May 2009)
OS : Windows XP Professional 5.1 Service Pack 3 (Build 2600)
Processors : 2 x X86 (level 6)
Memory : 2086128/291388 kb
Exception : C0000005
Address : 7C929267
Access Type : read
Access Addr : 00000004
Registers : EAX=00000000 CS=001b EIP=7C929267 EFLGS=00010217
: EBX=00000000 SS=0023 ESP=0012DD60 EBP=0012DE1C
: ECX=022F8900 DS=0023 ESI=022F88F0 FS=003b
: EDX=022F8910 ES=0023 EDI=00340000 GS=0000
Stack Trace : 77C1C2DE 0055ED21 00000000 00000000
: 00000000 00000000 00000000 00000000
: 00000000 00000000 00000000 00000000
: 00000000 00000000 00000000 00000000
Modules :
1 : 00400000 002B1000 d:\forex\metatrader - alpari\terminal.exe
2 : 00F70000 00042000 c:\program files\splitview 2009\splat.dll
3 : 018F0000 002CD000 c:\windows\system32\xpsp2res.dll
4 : 02050000 00035000 d:\forex\metatrader - alpari\experts\libraries\mysql_wrapper.dll
5 : 02090000 00244000 c:\windows\system32\libmysql.dll
6 : 02560000 00009000 c:\windows\system32\amhooker.dll
7 : 08000000 00008000 c:\program files\yandex\punto switcher\pshook.dll
8 : 10000000 00012000 c:\program files\rocketdock\rocketdock.dll
9 : 40080000 001E8000 c:\windows\system32\iertutil.dll
10 : 45020000 00131000 c:\windows\system32\urlmon.dll
11 : 5B260000 00038000 c:\windows\system32\uxtheme.dll
12 : 5BD50000 00056000 c:\windows\system32\netapi32.dll
13 : 61EC0000 0000E000 c:\windows\system32\mfc42loc.dll
14 : 698B0000 00058000 c:\windows\system32\hnetcfg.dll
15 : 71A30000 00040000 c:\windows\system32\mswsock.dll
16 : 71A70000 00008000 c:\windows\system32\wshtcpip.dll
17 : 71A80000 00008000 c:\windows\system32\ws2help.dll
18 : 71A90000 00017000 c:\windows\system32\ws2_32.dll
19 : 71AB0000 0000A000 c:\windows\system32\wsock32.dll
20 : 72CD0000 00008000 c:\windows\system32\msacm32.drv
21 : 72CE0000 00009000 c:\windows\system32\wdmaud.drv
22 : 73D90000 000FE000 c:\windows\system32\mfc42.dll
23 : 746E0000 0004C000 c:\windows\system32\msctf.dll
24 : 75310000 0002E000 c:\windows\system32\msctfime.ime
25 : 76350000 00005000 c:\windows\system32\msimg32.dll
26 : 76360000 0001D000 c:\windows\system32\imm32.dll
27 : 76380000 00049000 c:\windows\system32\comdlg32.dll
28 : 76B20000 0002E000 c:\windows\system32\winmm.dll
29 : 76BE0000 0000B000 c:\windows\system32\psapi.dll
30 : 76C20000 0002E000 c:\windows\system32\wintrust.dll
31 : 76C80000 00028000 c:\windows\system32\imagehlp.dll
32 : 76F10000 00027000 c:\windows\system32\dnsapi.dll
33 : 76F50000 0002D000 c:\windows\system32\wldap32.dll
34 : 76FA0000 00008000 c:\windows\system32\winrnr.dll
35 : 76FB0000 00006000 c:\windows\system32\rasadhlp.dll
36 : 76FC0000 0007F000 c:\windows\system32\clbcatq.dll
37 : 77040000 000C7000 c:\windows\system32\comres.dll
38 : 77110000 0008B000 c:\windows\system32\oleaut32.dll
39 : 773C0000 00103000 c:\windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll
40 : 774D0000 0013E000 c:\windows\system32\ole32.dll
41 : 77910000 000F4000 c:\windows\system32\setupapi.dll
42 : 77A70000 00096000 c:\windows\system32\crypt32.dll
43 : 77B10000 00012000 c:\windows\system32\msasn1.dll
44 : 77B30000 00022000 c:\windows\system32\apphelp.dll
45 : 77BC0000 00007000 c:\windows\system32\midimap.dll
46 : 77BD0000 00015000 c:\windows\system32\msacm32.dll
47 : 77BF0000 00008000 c:\windows\system32\version.dll
48 : 77C00000 00058000 c:\windows\system32\msvcrt.dll
49 : 77DC0000 000AC000 c:\windows\system32\advapi32.dll
50 : 77E70000 00092000 c:\windows\system32\rpcrt4.dll
51 : 77F10000 00049000 c:\windows\system32\gdi32.dll
52 : 77F60000 00076000 c:\windows\system32\shlwapi.dll
53 : 77FE0000 00011000 c:\windows\system32\secur32.dll
54 : 7C800000 000F8000 c:\windows\system32\kernel32.dll
55 : 7C900000 000B3000 c:\windows\system32\ntdll.dll
56 : 7C9C0000 0081B000 c:\windows\system32\shell32.dll
57 : 7E360000 00091000 c:\windows\system32\user32.dll
Call stack :
Чем использование libmysql.dll не устраивает?
Пишет в базу отлично, читать не пробовал, но предполагаю тоже без косяков.
Чем использование libmysql.dll не устраивает?
Пишет в базу отлично, читать не пробовал, но предполагаю тоже без косяков.
для меня чтение из базы важнее. Есле у кого-то есть проверенный код для чтения из базы через libmysql.dll отправьте пожалуйсто.
Вот нагуглил код для чтения из базы через libmysql.dll:
Резултат его выполнения:
18:01:54 Compiling 'news001'
18:01:54 news001 USDCHF,H4: deinitialized
18:01:54 news001 USDCHF,H4: uninit reason 2
18:01:54 news001 USDCHF,H4: loaded successfully
18:01:54 news001 USDCHF,H4: allocated
18:01:54 news001 USDCHF,H4: connected
18:01:54 news001 USDCHF,H4: ¤FџЁFџ°FџUSD
18:01:54 news001 USDCHF,H4: МFџРFџнFџUSD
18:01:54 news001 USDCHF,H4: Gџ Gџ$GџUSD
18:01:54 news001 USDCHF,H4: DGџHGџ_GџUSD
18:01:54 news001 USDCHF,H4: |GџЂGџ™GџUSD
18:01:54 news001 USDCHF,H4: јGџАGџЮGџUSD
18:01:54 news001 USDCHF,H4: ьGџ
18:01:54 news001 USDCHF,H4:,Hџ0HџFHџUSD
18:01:54 news001 USDCHF,H4: dHџhHџwHџUSD
18:01:54 news001 USDCHF,H4: ”HџHџ«HџUSD
18:01:54 news001 USDCHF,H4: МHџРHџкHџUSD
18:01:54 news001 USDCHF,H4: Iџ Iџ IџUSD и тд
Можно как-то решить проблему с иероглифами? Скрин того же запроса в phpMyAdmin
Выкладываю "обертку" для работы с БД MS SQL
обертка ADOLib.mqh и собственно COM сервер,
который обеспечивает работу с MS SQL(и не только!) ADOLib.dll.
ADOLib.mqh выглядит так:
// Constants for enum CursorTypeEnum
#define adOpenUnspecified 4294967295 //$FFFFFFFF;
#define adOpenForwardOnly 0 //$00000000;
#define adOpenKeyset 1 //$00000001;
#define adOpenDynamic 2 //$00000002;
#define adOpenStatic 3 //$00000003;
// Constants for enum LockTypeEnum
#define adLockUnspecified 4294967295 //$FFFFFFFF;
#define adLockReadOnly 1 //$00000001
#define adLockPessimistic 2 //$00000002;
#define adLockOptimistic 3 //$00000003;
#define adLockBatchOptimistic 4 //$00000004;
// Constants for enum ExecuteOptionEnum
#define adOptionUnspecified 4294967295 //$FFFFFFFF;
#define adAsyncExecute 16 //$00000010;
#define adAsyncFetch 32 //$00000020;
#define adAsyncFetchNonBlocking 64 //$00000040;
#define adExecuteNoRecords 128 //$00000080;
#define adExecuteStream 296 //$00000400;
#define adExecuteRecord 2048 //$00000800;
// Constants for enum CursorLocationEnum
#define adUseNone 1 //$00000001;
#define adUseServer 2 //$00000002;
#define adUseClient 3 //$00000003;
#define adUseClientBatch 3 //$00000003;
// Constants for enum CommandTypeEnum
#define adCmdUnspecified 4294967295 //$FFFFFFFF;
#define adCmdUnknown 8 //$00000008;
#define adCmdText 1 //$00000001;
#define adCmdTable 2 //$00000002;
#define adCmdStoredProc 4 //$00000004;
#define adCmdFile 256 //$00000100;
#define adCmdTableDirect 512 //$00000200;
#import "ADOLib.dll"
int CreateConnection();
int DestroyConnection();
int OpenConnection(string ConnectionString,int CursorLocation,int CommandTimeout);
int CloseConnection();
int IsOpenConnection();
int Execute(string CommandText, int ExecuteOption);
int BeginTrans();
int CommitTrans();
int RollbackTrans();
int OpenTable(string Qry,int CursorLocation,int CursorType,int LockType,int Options);
int CloseTable();
int Requery();
int Update();
int UpdateBatch();
int Cancel();
int CancelBatch();
int CancelUpdate();
int Find(string Criteria,int SearchDirection,int Start);
int Filter(string Criteria);
int BOF();
int EOF();
int MoveFirst();
int MoveLast();
int MoveNext();
string TableStatus();
int FieldsCount();
string FieldName(int I);
string FieldType(int Name);
string FieldTypeByPos(int I);
string GetFieldValue(string Name);
string GetFieldValueByPos(int I);
int SetFieldValue(string Name);
int SetFieldValueByPos(int I);
Пример соединения с БД MS SQL 2005 "dbForex"
int createCnn=0;int openCnn=0;
int Insert=0;
string StringConnection="DSN=dbForex;UID=sa;PWD=;";
int init()
{
CloseConnection();
DestroyConnection();
int createCnn=CreateConnection();
Sleep(10);
int openCnn=OpenConnection(StringConnection,adUseClient,0);
Sleep(10);
return(0);
}
Пример работы:
int start()
{
//это на случай если коннект закрылся или "испортился"-причин хватает
if (createCnn<=0 || IsOpenConnection()==0)
{
createCnn=0;
openCnn=0;
CloseConnection();
Sleep(10);
DestroyConnection();
Sleep(10);
createCnn=CreateConnection();
Sleep(30);
}
if (createCnn>0 &&(openCnn<=0 || IsOpenConnection()==0 || Insert==0))
{
openCnn=0;
CloseConnection();
Sleep(10);
openCnn=OpenConnection(StringConnection,adUseClient,0);
Sleep(30);
}
//и далее записываем в БД тики
string Company=AccountCompany();
string Symb=Symbol();
string CommandText="INSERT INTO Rates (TimeCurrent,AccountCompany,Symb,DateTimeRate,Ask,Bid) "+
"VALUES("+TimeCurrent()+",'"+Company+"','"+Symb+"','"+DateTimeRate+"',"+Ask+","+Bid+")";
Execute(CommandText,adAsyncFetch);
Sleep(15);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
CloseConnection();
DestroyConnection();
return(0);
}
полагаю что ADOLib.mqh место в каталоге "include", а
ADOLib в каталоге "Library".
Теперь находясь в директории \Library зарегистрируйте
этот COM объект и наберите команду regsvr32 ADOLib.dll,
нажмите Enter и эта библиотека зарегистрируется,
все это можно проделать или из консоли командной строки или,
скажем из Total Commander.
Если вы работаете под Vista вы должны запустить и ТС и
консоль должны быть запущены из под учетной записи
"Администратор".