- Новый контент
- Книга Masterforex-V
-
Академия
- Как стать слушателем Академии
- ⇒ ТС Masterforex-V - Интенсивный Курс Онлайн
- ⇒ Факультет Форекс Скальпинга Magister
- ⇒ Факультет СРЕДНЕсрочной торговли и паттернов ГОСТ
- ⇒ Кафедра ДФВА
- ⇒ Кафедра Опционной Торговли
- ⇒ Факультет биржевой торговли "Futures Trade and Stock Exchange"
- ⇒ Факультет торговли объёмом"
- ⇒ Факультет Инвестиций
- ⇒ ФАКУЛЬТЕТ Пробой Флета, Автоматизация, Автотрейдинг
- ⇒ Кафедра Спектрального Анализа FOREX и ИНДЕКСОВ валют
- ⇒ Система раннего прогнозирования в ТС МФ на основе модернизации АО и WPR
- ⇒ Кафедра FMA_Sar
- ⇒ Кафедра синергетического объемно-волнового анализа (СОВА)
- ⇒Кафедра бинарных опционов
- Как продлить доступ в закрытую часть Академии?
- Форумы
- Галерея
- Блоги
- Скачать
- Контакты
- Личный кабинет
- Больше
Инвестиционные фонды NordFx: профессиональное управление и прозрачность
|
Работа с Базами Данных - MySQL
Автор темы:
Aleks_Simple
, дек 18 2010 09:22
7 ответов в этой теме
#1
Опубликовано 18 Декабрь 2010 - 09:22
Добрый день, в выше начатой теме "Работа с Базами Данных" освещается работа с сервером Баз Данных - FireBird, поэтому предлагаю выделить
в отдельную тему вопросы связанные с работой сервера Баз Данных MySQL, он так же бесплатен как и FireBird и если не использовать сложные
структуры взаимосвязей - достаточно быстр в обработке данных.
В дальнейшем будут рассмотрены следущте темы.
1) Сервер Баз данных MySQL
2) Инструменты для работы с сервром и управлением базами. - EMS MySQL
3) Компоненты Delphi для работы с MySQL
в отдельную тему вопросы связанные с работой сервера Баз Данных MySQL, он так же бесплатен как и FireBird и если не использовать сложные
структуры взаимосвязей - достаточно быстр в обработке данных.
В дальнейшем будут рассмотрены следущте темы.
1) Сервер Баз данных MySQL
2) Инструменты для работы с сервром и управлением базами. - EMS MySQL
3) Компоненты Delphi для работы с MySQL
#2
Опубликовано 29 Декабрь 2010 - 02:34
1) Установка сервера MySQL
1.1 Берем версию соответствующую вашей операционной системе здесь: Загрузить сервер
прикреплен файл установки сервера для Windows (x86, 32-bit) - наиболее используемая.
1.2 Для установки мы должны обладать правами администратора. Запускаем файл установки и следуем по шагам.
Установка и настройка (Linux) - Богомолов
Установка MySQL под Win9x/NT/2000
1.3 Читаем документацию MySQL Docs
1.4 Важные моменты настройки:Установка и администрирование сервера MySQL
1.4.1 Настройка привилегий и безопасности.
1.4.2 Создание собственной Базы Данных.
FAQ Ответы на часто задаваемые вопросы
mysql-essential-5.1.53-win32.rar 37,38 МБ 183 Скачано
1.1 Берем версию соответствующую вашей операционной системе здесь: Загрузить сервер
прикреплен файл установки сервера для Windows (x86, 32-bit) - наиболее используемая.
1.2 Для установки мы должны обладать правами администратора. Запускаем файл установки и следуем по шагам.
Установка и настройка (Linux) - Богомолов
Установка MySQL под Win9x/NT/2000
1.3 Читаем документацию MySQL Docs
1.4 Важные моменты настройки:Установка и администрирование сервера MySQL
1.4.1 Настройка привилегий и безопасности.
1.4.2 Создание собственной Базы Данных.
FAQ Ответы на часто задаваемые вопросы
mysql-essential-5.1.53-win32.rar 37,38 МБ 183 Скачано
Сообщение изменено: Aleks_Simple, 29 Декабрь 2010 - 03:02 .
#3
Опубликовано 29 Декабрь 2010 - 03:51
2) EMS Manager 2005 for MySQL - это удобная графическая утилита для работы с Базами данным на сервере.
Инструкции по работе взяты с сайта: ссылка там же есть интересные статьи по MySQL
Работа с EMS SQL Manager - введение.rar 1,72 МБ 197 Скачано
Работа с EMS SQL Manager - таблицы.rar 975,32 КБ 217 Скачано
Инструкции по работе взяты с сайта: ссылка там же есть интересные статьи по MySQL
Работа с EMS SQL Manager - введение.rar 1,72 МБ 197 Скачано
Работа с EMS SQL Manager - таблицы.rar 975,32 КБ 217 Скачано
Сообщение изменено: Aleks_Simple, 04 Январь 2011 - 09:26 .
#4
Опубликовано 16 Февраль 2011 - 09:42
Добрый день, некотрое время назад узнал, что Оракл приобретя права на MySQL в погоне за прибылью понемногу придушивает самые интересные вещи в этой СУБД.
Благо есть конкуренция и достойным продолжение бесплатной ветки MySQL стала СУБД MariaDB - основанная на коде MySQL и полностью совместимая на клиентском уровне и уровне файлов Базы Данных. Вот ссылка на страницу для скачивания http://askmonty.org/...ariaDB:Download
Я использовал MariaDB для Win32.
Главным приемуществом является развитие двигателя(engine) InnoDB для таблиц - этот двигатель поддерживает транзакции и блокировку на уровне записи,
является быстрым и надежным в отношении данных.
В следующей заметке расскажу об использовании эксперта - позволяющего сохранять тиковые данные по паре в БД MySQL используя библиотеку клиента MySQL.
Благо есть конкуренция и достойным продолжение бесплатной ветки MySQL стала СУБД MariaDB - основанная на коде MySQL и полностью совместимая на клиентском уровне и уровне файлов Базы Данных. Вот ссылка на страницу для скачивания http://askmonty.org/...ariaDB:Download
Я использовал MariaDB для Win32.
Главным приемуществом является развитие двигателя(engine) InnoDB для таблиц - этот двигатель поддерживает транзакции и блокировку на уровне записи,
является быстрым и надежным в отношении данных.
В следующей заметке расскажу об использовании эксперта - позволяющего сохранять тиковые данные по паре в БД MySQL используя библиотеку клиента MySQL.
#5
Опубликовано 13 Март 2011 - 07:35
Хочу предложить вашему вниманию способ сохранения тиковых данных, поступающих в Ваш торговый терминал на платформе МТ4, в СУБД MySQL.
Для этого нам понадобится
1. установленная СУБД MySQL.
2. Созданная БазаДанных, в которой будет сохраняться информация.
3. Эксперт на языке MQL4, который будет выполнять сохранение данных, с использованием Клиентской библиотеки libmysql.dll
Надеюсь с установкой проблем у вас не возникнет, рекомендую использовать MariaDB для Win32.
На создании Базы Данных остановлюсь подробнее ниже.
А про Эксперт расскажу пока вкратце, он найден мной на форуме http://codebase.mql4.com/ru/491 и написан неким
Автор: Collector (20.07.2006 12:14)
Заинтерисовал меня своей простотой и тем, что взаимодействие ведется через DLL.
Первый вопрос, который у меня возник почему это именно эксперт - ведъ это не совсем удобно, можно повесить только лишь один эксперт на график.
Как выяснил позже сохранять тики может только эксперт т.к. только эксперт запускается при поcтуплении каждого нового тика и этот тик можно получить
через переменные Ask и Bid. В отличие от эксперта - Индикатор запускается с каждым новым тиком, но из него не доступны тиковые переменные.
Для работы эксперта необходимо разрешить Импорт DLL в настройках Советников и разместить библиотеку(libmysql.dll) в папаке experts\libraries , которая идет в составе СУБД обычно в папке bin (C:\Program Files\MariaDB 5.2.4\bin>)
Для этого нам понадобится
1. установленная СУБД MySQL.
2. Созданная БазаДанных, в которой будет сохраняться информация.
3. Эксперт на языке MQL4, который будет выполнять сохранение данных, с использованием Клиентской библиотеки libmysql.dll
Надеюсь с установкой проблем у вас не возникнет, рекомендую использовать MariaDB для Win32.
На создании Базы Данных остановлюсь подробнее ниже.
А про Эксперт расскажу пока вкратце, он найден мной на форуме http://codebase.mql4.com/ru/491 и написан неким
Автор: Collector (20.07.2006 12:14)
Заинтерисовал меня своей простотой и тем, что взаимодействие ведется через DLL.
Первый вопрос, который у меня возник почему это именно эксперт - ведъ это не совсем удобно, можно повесить только лишь один эксперт на график.
Как выяснил позже сохранять тики может только эксперт т.к. только эксперт запускается при поcтуплении каждого нового тика и этот тик можно получить
через переменные Ask и Bid. В отличие от эксперта - Индикатор запускается с каждым новым тиком, но из него не доступны тиковые переменные.
Для работы эксперта необходимо разрешить Импорт DLL в настройках Советников и разместить библиотеку(libmysql.dll) в папаке experts\libraries , которая идет в составе СУБД обычно в папке bin (C:\Program Files\MariaDB 5.2.4\bin>)
Сообщение изменено: Aleks_Simple, 13 Март 2011 - 07:41 .
#6
Опубликовано 13 Март 2011 - 07:43
Создание Базы Данных. Запускаем командную строку и
Переходим в папку
cd C:\Program Files\MariaDB 5.2.4\bin
вводим команду(которая запускает SQL клиента по работе с СУБД):
mysql -u root -p
далее вводим пароль для пользователя root, который мы указывали ранее при установке
или ничего не вводим в качестве пароля, если он не был задан. И получаем приглашения для ввода команд SQL.
MariaDB [(none)]>
После успешного подключения вводим команду, которая создает Базу Данных.
create database whc_ticks character set = latin1;
получаем:
Query OK, 1 row affected (0.02 sec)
Далее задействуем созданную Базу:
use whc_ticks;
получаем:
Database changed
MariaDB [whc_ticks]>
Теперь создаем таблицу в которой и будут храниться Тики.
CREATE TABLE `ticks` (
`dt` datetime DEFAULT NULL,
`ask` float(8,5) DEFAULT NULL,
`bid` float(8,5) DEFAULT NULL,
`symbol` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Получаем:
Query OK, 0 rows affected (0.22 sec)
Переходим в папку
cd C:\Program Files\MariaDB 5.2.4\bin
вводим команду(которая запускает SQL клиента по работе с СУБД):
mysql -u root -p
далее вводим пароль для пользователя root, который мы указывали ранее при установке
или ничего не вводим в качестве пароля, если он не был задан. И получаем приглашения для ввода команд SQL.
MariaDB [(none)]>
После успешного подключения вводим команду, которая создает Базу Данных.
create database whc_ticks character set = latin1;
получаем:
Query OK, 1 row affected (0.02 sec)
Далее задействуем созданную Базу:
use whc_ticks;
получаем:
Database changed
MariaDB [whc_ticks]>
Теперь создаем таблицу в которой и будут храниться Тики.
CREATE TABLE `ticks` (
`dt` datetime DEFAULT NULL,
`ask` float(8,5) DEFAULT NULL,
`bid` float(8,5) DEFAULT NULL,
`symbol` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Получаем:
Query OK, 0 rows affected (0.22 sec)
#7
Опубликовано 13 Март 2011 - 07:52
Разберем код эксперта.
Здесь мы инициализируем работу с СУБД
- mysql_init(mysql);
и устанавливаем подключение используя заданные параметры
- mysql_real_connect(mysql,host,user,password,DB,port,socket,clientflag);
Подготавливаем строку запроса:
query = StringConcatenate("insert into ticks(dt,ask,bid,symbol) values( \"",
TimeToStr(CurTime(), TIME_DATE|TIME_SECONDS), "\",",
NormalizeDouble(Ask, 5), ",", NormalizeDouble(Bid, 5),
",\"", Symbol(), "\");");
length = StringLen(query);
и выполняем запрос:
mysql_real_query(mysql, query, length);
анализируем полученный результат:
int myerr = mysql_errno(mysql);
if(myerr > 0)
Print("error=",myerr);
#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Секция импорта указывает, что из файла библиотеки libmySQL.dll мы импортируем нужные нам функции.
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 = "WHC_tics"; 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); }Секция инициализации выполняется единожды при загрузке Эксперта.
Здесь мы инициализируем работу с СУБД
- mysql_init(mysql);
и устанавливаем подключение используя заданные параметры
- mysql_real_connect(mysql,host,user,password,DB,port,socket,clientflag);
//+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { mysql_close(mysql); //---- return(0); }Эта секция выполняется при выгрузке Эксперта, здесь мы закрываем соединение с СУБД.
//+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { string query = ""; int length = 0; query = StringConcatenate("insert into ticks(dt,ask,bid,symbol) values( \"", TimeToStr(CurTime(), TIME_DATE|TIME_SECONDS), "\",", NormalizeDouble(Ask, 5), ",", NormalizeDouble(Bid, 5), ",\"", Symbol(), "\");"); length = StringLen(query); mysql_real_query(mysql, query, length); int myerr = mysql_errno(mysql); if(myerr > 0) Print("error=",myerr); }Эта секция выполняется при получении нового тика:
Подготавливаем строку запроса:
query = StringConcatenate("insert into ticks(dt,ask,bid,symbol) values( \"",
TimeToStr(CurTime(), TIME_DATE|TIME_SECONDS), "\",",
NormalizeDouble(Ask, 5), ",", NormalizeDouble(Bid, 5),
",\"", Symbol(), "\");");
length = StringLen(query);
и выполняем запрос:
mysql_real_query(mysql, query, length);
анализируем полученный результат:
int myerr = mysql_errno(mysql);
if(myerr > 0)
Print("error=",myerr);
Сообщение изменено: Aleks_Simple, 13 Март 2011 - 07:58 .
#8
Опубликовано 13 Март 2011 - 08:11
Заключение:
Полученная сиситема успешно справляется с поставленной задачей!
Если рассматривать данный пример в более широком смысле как технологию взаимодействия МТ4 и СУБД MySQL, то мы сталкиваеся с ограничением
связанным с отсутствием в MQL4 поддержки структур данных при работе с библиотеками. Пэтому мы вынуждены формировать SQL команду в виде текста
и передавать её на выполнение. Процесс получения каких либо данных из MySQL более труден и может быть решен созданием промежуточной библиотеки на одном
из языков программирования, напрмер Delphi, C++
Полученная сиситема успешно справляется с поставленной задачей!
Если рассматривать данный пример в более широком смысле как технологию взаимодействия МТ4 и СУБД MySQL, то мы сталкиваеся с ограничением
связанным с отсутствием в MQL4 поддержки структур данных при работе с библиотеками. Пэтому мы вынуждены формировать SQL команду в виде текста
и передавать её на выполнение. Процесс получения каких либо данных из MySQL более труден и может быть решен созданием промежуточной библиотеки на одном
из языков программирования, напрмер Delphi, C++
Посетителей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных пользователей