거래 로봇을 무료로 다운로드 하는 법을 시청해보세요
당사를 Twitter에서 찾아주십시오!
당사 팬 페이지에 가입하십시오
당사 팬 페이지에 가입하십시오
스크립트가 마음에 드시나요? MetaTrader 5 터미널에서 시도해보십시오
- 게시자:
- Michael Schoen
- 조회수:
- 19
- 평가:
- 게시됨:
-
이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동
우연히 MQL5를 접하게 되어 MySQL 라이브러리를 가져와야 했습니다. 어떤 라이브러리든 예제를 통해 라이브러리를 어떻게 사용할 수 있는지 알 수 있기를 바랍니다. 어떤 라이브러리든 실제로 가장 중요한 것은 사용 방법 예제입니다.)
예제:
데이터 읽기
#include <EAX\EAX_Mysql.mqh> EAX_Mysql *db = new EAX_Mysql(); db.connect("myhost.mydomain.com", "myusername", "mypassword", "mydatabase", "mytable"); int iResults = db.read_rows("SELECT password, COUNT(*) as Hits FROM users GROUP BY password"); for (int i=0; i < iResults; i++) { string password = (string) db.get("password",i); int hits = (int) db.get("Hits", i); }
데이터 공급하기
#include <EAX\EAX_Mysql.mqh> // 글로벌 EAX_Mysql *db = new EAX_Mysql(); void OnInit() { db.connect("myhost.mydomain.com", "myusername", "mypassword", "metatrader", "Ticks"; } void OnTick() { MqlTick tick; SymbolInfoTick(_Symbol,tick); // 테이블 Ticks에 대한 새 데이터 집합 추가 db.AddNew("Ticks"); // 값으로 채우기... db.set("symbol", _Symbol); // MySQL이 숫자를 변환할 수 있는 경우 숫자를 숫자로 DB 필드로 보낼 수 있습니다. db.set("ask", tick.ask); db.set("bid", tick.bid); db.set("last", tick.last); db.set("time", TimeToString(tick.time,TIME_DATE) + " " + TimeToString(tick.time,TIME_SECONDS)); db.set("volume", tick.volume); db.write(); } void OnDeinit() { // 메모리 정리 delete db; }
데이터와 상호 작용하기
EAX_Mysql *db = new EAX_Mysql(); db.connect("myhost.mydomain.com", "myusername", "mypassword", "metatrader", "mytable") (올바른 기본 키를 식별하는 데 필요함) // 테이블 AgentsOnline을 선택합니다. db.select("AgentsOnline"); // 기본 키 5로 데이터 세트 읽기 db.read("5"); // 열을 수정합니다, db.set("lastupdate", (string) TimeLocal()); // 다시 쓰기 db.write();
설치하기:
- MQL5 데이터 디렉토리(MQL5)를 확인합니다.
- 메타트레이더 환경(32 또는 64비트)에 맞는 커넥터/C(libmysql )를 다운로드하고 libymsql.dll을 "MQL5\Libraries"에 넣습니다.
- 포함 아래에 EAX 폴더를 만듭니다.
- "MQL5\Include\EAX"에 EAX_Mysql.mqh를 넣습니다.
문제:
- 내부적으로 공유 연결 포인터를 사용하기 때문에 라이브러리가 한 번에 하나 이상의 DB 연결을 처리할 수 없습니다(연결 풀링을 추가/마이그레이션할 필요가 없었습니다).
- 실제 오류(mysql) 처리, DB 연결 끊김 없음.
- DB에 대한 오류 처리/재연결 없음(=> DB 풀링).
- 여러 열 기본 키를 지원하지 않습니다.
- 아직 베타 버전 - 베타/테스트를 원하시면 이메일을 보내주세요.
- 데이터 유형이 처리되지 않음(내부적으로 문자열만 처리됨) 코드/데이터베이스에 있어야 합니다.
- 데이터베이스 통신은 ISO입니다 - 포인터/ 문자열 연산을 UTF-8에 맞게 조정하기에는 너무 느립니다.
크레딧:
- http://mqlmagazine.com/mql-programming/mql5-connecting-to-mysql/
- https://www.mql5.com/ko/articles/364
MetaQuotes Ltd에서 영어로 번역함.
원본 코드: https://www.mql5.com/en/code/855