하나의 터미널에서 실행된 서로 다른 MQL5 Expert Advisor 내에서 동일한 데이터베이스를 공유할 수 있습니다( ).
하나의 터미널에서 동일한 데이터베이스로 두 명의 Expert Advisor의 작업을 테스트했습니다. 오류 없이 작동하며 두 Expert Advisor 모두 2초의 타이머에 따라 하나의 파일에 데이터를 씁니다.
파일은 첨부되어 있으며 전문가 어드바이저의 이름만 다릅니다.
2020.02.1917:56:14.624 SecondExpertDataBase (GBPUSD,H1) 16:56:14: added 1 record on GBPUSD to timer.sqlite
2020.02.1917:56:16.627 SecondExpertDataBase (GBPUSD,H1) 16:56:16: added 1 record on GBPUSD to timer.sqlite
2020.02.1917:56:18.616 SecondExpertDataBase (GBPUSD,H1) 16:56:18: added 1 record on GBPUSD to timer.sqlite
2020.02.1917:56:20.630 SecondExpertDataBase (GBPUSD,H1) 16:56:20: added 1 record on GBPUSD to timer.sqlite
2020.02.1917:56:22.078 FirstExpertDataBase (USDCHF,H1) 16:56:21: added 1 record on USDCHF to timer.sqlite
2020.02.1917:56:22.629 SecondExpertDataBase (GBPUSD,H1) 16:56:22: added 1 record on GBPUSD to timer.sqlite
2020.02.1917:56:24.071 FirstExpertDataBase (USDCHF,H1) 16:56:24: added 1 record on USDCHF to timer.sqlite
2020.02.1917:56:24.619 SecondExpertDataBase (GBPUSD,H1) 16:56:24: added 1 record on GBPUSD to timer.sqlite
2020.02.1917:56:26.070 FirstExpertDataBase (USDCHF,H1) 16:56:26: added 1 record on USDCHF to timer.sqlite
2020.02.1917:56:26.619 SecondExpertDataBase (GBPUSD,H1) 16:56:26: added 1 record on GBPUSD to timer.sqlite
2020.02.1917:56:28.079 FirstExpertDataBase (USDCHF,H1) 16:56:27: added 1 record on USDCHF to timer.sqlite
2020.02.1917:56:28.625 SecondExpertDataBase (GBPUSD,H1) 16:56:28: added 1 record on GBPUSD to timer.sqlite
2020.02.1917:56:30.079 FirstExpertDataBase (USDCHF,H1) 16:56:30: added 1 record on USDCHF to timer.sqlite
2020.02.1917:56:30.617 SecondExpertDataBase (GBPUSD,H1) 16:56:30: added 1 record on GBPUSD to timer.sqlite
2020.02.1917:56:32.069 FirstExpertDataBase (USDCHF,H1) 16:56:32: added 1 record on USDCHF to timer.sqlite
2020.02.1917:56:32.627 SecondExpertDataBase (GBPUSD,H1) 16:56:32: added 1 record on GBPUSD to timer.sqlite
2020.02.1917:56:34.073 FirstExpertDataBase (USDCHF,H1) 16:56:33: added 1 record on USDCHF to timer.sqlite
2020.02.1917:56:34.627 SecondExpertDataBase (GBPUSD,H1) 16:56:34: added 1 record on GBPUSD to timer.sqlite
2020.02.1917:56:36.616 SecondExpertDataBase (GBPUSD,H1) 16:56:36: added 1 record on GBPUSD to timer.sqlite
2020.02.1917:56:38.079 FirstExpertDataBase (USDCHF,H1) 16:56:38: added 1 record on USDCHF to timer.sqlite
2020.02.1917:56:38.615 SecondExpertDataBase (GBPUSD,H1) 16:56:38: added 1 record on GBPUSD to timer.sqlite
2020.02.1917:56:40.072 FirstExpertDataBase (USDCHF,H1) 16:56:40: added 1 record on USDCHF to timer.sqlite
2020.02.1917:56:40.618 SecondExpertDataBase (GBPUSD,H1) 16:56:40: added 1 record on GBPUSD to timer.sqlite
2020.02.1917:56:42.630 SecondExpertDataBase (GBPUSD,H1) 16:56:42: added 1 record on GBPUSD to timer.sqlite
2020.02.1917:56:44.617 SecondExpertDataBase (GBPUSD,H1) 16:56:44: added 1 record on GBPUSD to timer.sqlite
Database file is by default stored to . If you specify a full path as database filename, it's used. Terminal data path TERMINAL_DATA_PATH can be known by the following instruction. Open MT4 Open [File] menu Click "Open Data Folder" Sample Many sample scripts in under . Precautions Argument mess MT4 build 610 has a weird bug when dll function...
터미널1에서 터미널2의 해당 사용자 지정 기호로 한 심볼의 실시간 따옴표를 전송해야 합니다.
또 다른 뉘앙스가 있습니다. 따옴표 (날짜가 증가하는)와 같이 흩어지지 않고 증가하는 가치와 함께 일관된 데이터를 데이터베이스에 저장하는 것은 매우 비용이 많이 드는 작업입니다. 트리의 균형이 맞지 않고 한 가지가 무한정 자라며 엔진이 트리의 균형을 정기적으로 재조정합니다(이것은 쓰레기 수집보다 더 나쁩니다). 아마도 이것은 인덱싱 된 테이블에만 적용될 수 있습니다. 아니면 내가 사용하지 않은 몇 년 동안 이미 해결되었을 수도 있습니다. 시도해 봐야겠습니다. 개발자들조차도 분석할지도 모르니 관심을 가져야 할 것입니다.
voidOnStart()
{
string filename="DOMdb.db";
int database=DatabaseOpen(filename, DATABASE_OPEN_READWRITE );
DatabaseImport(database, // DatabaseOpen에서 받은 데이터베이스 핸들"DOMtb", // 데이터 삽입을 위한 테이블 이름"AllDOM.csv", // 데이터 가져오기 파일 이름0, // 플래그 조합";", // 데이터 구분 기호 0, // 건너뛸 첫 줄 수 "//"// 주석을 정의하는 문자열
);
}
2020.02.20 15:09:27.171 MQL5 'DOMcopy.ex5'에 지원되지 않는 최신 버전이 있습니다. 클라이언트 터미널을 업데이트하세요.
long DatabaseImport(
int database, // DatabaseOpen에서 받은 데이터베이스 핸들conststring table, // 데이터 삽입을 위한 테이블 이름conststring filename, // 데이터 가져오기 파일 이름uint flags, // 플래그 조합conststring separator, // 데이터 구분 기호 ulong skip_rows, // 건너뛸 첫 줄 수 conststring skip_comments // 주석을 정의하는 문자열
);
DatabaseExport 테이블 또는 SQL 쿼리 실행 결과를 CSV 파일로 내보냅니다. 파일은 UTF-8 인코딩으로 생성됩니다.
long DatabaseExport(
int database, // DatabaseOpen에서 받은 데이터베이스 핸들 conststring table_or_sql, // 테이블 이름 또는 SQL 쿼리 conststring filename, // 데이터 내보내기를 위한 CSV 파일 이름 uint flags, // 플래그 조합 conststring separator // CSV 파일의 데이터 구분 기호
);
DatabasePrint 테이블 또는 SQL 쿼리 실행 결과를 Expert Advisor 로그에 인쇄합니다.
long DatabasePrint(
int database, // DatabaseOpen에서 받은 데이터베이스 핸들conststring table_or_sql, // 테이블 또는 SQL 쿼리uint flags // 플래그 조합
);
MQL5: 파일 또는 폴더를 생성/열기 위한 시스템 대화 상자를 호출하는 FileSelectDialog 함수가 추가되었습니다.
int FileSelectDialog(
string caption, // 창 제목string initial_dir, // 시작 폴더string filter, // 확장 필터uint flags, // 플래그 조합string& filenames[], // 파일 이름이 있는 배열string default_filename // 기본 파일 이름
);
이 새로운 함수를 통해 MQL5 프로그램과 편리한 사용자 상호 작용을 구현할 수 있습니다.
.
MQL5: 거래 수행에 대한 지불인 DEAL_FEE가 ENUM_DEAL_PROPERTY_DOUBLE 열거형에 추가되었습니다. 실제로 이는 브로커가 부과할 수 있는 별도의 수수료 유형입니다.
.
테스터: 전략을 테스트할 때 거래 한도, 마진 설정, 수수료 등 트레이딩 계좌 설정을 직접 설정할 수 있는 기능이 추가되었습니다. 따라서 브로커의 다양한 거래 조건을 시뮬레이션 할 수있는 더 많은 가능성을 얻게됩니다. .
일반 설정 이 섹션에서는 계좌에 동시에 보유할 수 있는 최대 개설 주문 수와 포지션 수를 설정할 수 있습니다. 또한 여기에서 테스트 프로그램이 거래가 허용되지 않는 세션을 설정할 수 있습니다.
마진 여기에서 마진을 예약하는 방법과 테스트 중에 사용할 포지션 계좌 시스템을 완전히 제어할 수 있습니다:
.
위험 관리 - 위험 관리 모델: 장외 및 거래소 거래, 네팅 및 헤징. 이에 대한 자세한 정보는 도움말에서 확인할 수 있습니다( ).
"마진콜" 수준 - 계좌의 자금 수준이며, 이 수준에 도달하면 마진콜 상태로 전환됩니다.
"스톱 아웃" 레벨 - 계좌가 주문을 인출하고 거래 포지션을 청산해야 하는 자금 수준입니다. 두 레벨 모두 퍼센트와 금액으로 지정할 수 있습니다. 첫 번째 경우 레벨은 계좌의 "자금" 표시기의 값으로 정의됩니다. "백분율" 옵션을 선택하면 계좌의 "마진 레벨" 표시기의 값(자금/마진*100)으로 레벨이 정의됩니다.
미실현 - 이 필드는 현재 미실현 손익을 여유 증거금에서 어떻게 계산할지 지정합니다( ).
미실현 수익/손실 사용 안 함 - 계산 시 오픈 포지션을 고려하지 않습니다.
미실현 손익 사용 - 계산에 오픈 포지션의 손실과 이익을 사용합니다.
미실현 이익 사용 - 이익만 사용합니다.
미실현 손실 사용 - 손실만 사용합니다.
일일 고정 - 이 필드는 거래일 동안 트레이더가 고정시킨 손익을 자유계약가능 잔여금에 반영하는 방법을 지정합니다( ).
일일 고정 손익 사용 - 거래일 동안 고정된 손익을 프리마진에 고려합니다.
일일 고정 손실 사용 - 거래일 동안 고정된 손실만 프리마진에 고려합니다. 하루 동안 누적된 수익은 별도의 계좌 필드에 고정됩니다("잠김"). 거래일이 끝나면 누적된 수익이 해제(제로화)되어 계좌 잔고에 반영됩니다(여유 마진으로 계산).
하루가 끝날 때 누적 수익 릴리스 - 이 옵션은 "일일 고정 손실 사용" 옵션이 활성화된 경우에만 사용할 수 있습니다. 이 옵션을 활성화하면 거래일이 끝나면 하루 동안 누적된 수익이 해제되어 잔고에 기록됩니다(따라서 여유 마진에 계상됩니다). 그렇지 않으면 그렇지 않습니다.
수수료 이 섹션에서는 모든 거래에 대해 수수료가 부과되는 방식을 완전히 제어할 수 있습니다.
수수료는 단일 또는 다단계, 즉 거래량/매출액에 관계없이 동일한 금액으로 부과되거나 거래 규모에 따라 달라질 수 있습니다. 관련 정보는 사양에 표시되어 있습니다.
수수료는 거래 체결 즉시 또는 거래일/월말에 부과될 수 있습니다.
수수료는 거래 방향에 따라 진입, 청산 또는 두 가지 유형의 거래 모두에 대해 부과될 수 있습니다.
수수료는 랏당 또는 거래당 부과될 수 있습니다.
수수료는 금액, 퍼센트 또는 핍 등 다양한 금액으로 부과될 수 있습니다.
테스터: "마켓 스캔" 모드에서 "마켓 워치"의 모든 종목에 대해 여러 차례 테스트를 통과하면 작업이 최적화되고 속도가 크게 빨라집니다. .
테스터: 핍 단위로 수익을 계산할 때 이제 거래 또는 포지션의 크기가 고려됩니다. 이전에는 한 랏에 대해 거래량을 고려하지 않고 계산했습니다.
테스터: 최적화 결과 차트 관리가 개선되었습니다. 일반 최적화 차트를 확대할 때 이제 차트를 스크롤할 수 있습니다. 이제 차트의 한 지점을 두 번 클릭하면 합격률 표에서 해당 결과가 강조 표시됩니다. .
메타에디터: "탐색기"에 SQLite 데이터베이스 파일(*.db;*.sdb;*.sqlite;*.db3;*.s3db;*.sqlite3) 표시가 추가되었습니다.
Renat Fatkhullin:
하나의 터미널에서 실행된 서로 다른 MQL5 Expert Advisor 내에서 동일한 데이터베이스를 공유할 수 있습니다(
).
하나의 터미널에서 동일한 데이터베이스로 두 명의 Expert Advisor의 작업을 테스트했습니다. 오류 없이 작동하며 두 Expert Advisor 모두 2초의 타이머에 따라 하나의 파일에 데이터를 씁니다.
파일은 첨부되어 있으며 전문가 어드바이저의 이름만 다릅니다.
메타에디터에서 데이터베이스가 어떻게 보이는지는 다음과 같습니다.
µl5에 설명된 내용을 µl4에서도 사용할 수 있나요?
MQL4에서는 MQL용 래퍼를 통해 네이티브 Sqlite3_32.dll로 작업할 수 있습니다.
이 래퍼는 MQL용 래퍼이므로 SQLite3Wrapper.dll과 혼동하지 마세요.
그러나 여전히 온라인 상태인지 여부는 모르겠지만 이전에 사용했습니다.
업데이트: https: //github.com/Shmuma/sqlite3-mt4-wrapper누가 그것을 알아 냈는지, 그러한 작업의 구현을 보여주세요.
또 다른 뉘앙스가 있습니다. 따옴표 (날짜가 증가하는)와 같이 흩어지지 않고 증가하는 가치와 함께 일관된 데이터를 데이터베이스에 저장하는 것은 매우 비용이 많이 드는 작업입니다. 트리의 균형이 맞지 않고 한 가지가 무한정 자라며 엔진이 트리의 균형을 정기적으로 재조정합니다(이것은 쓰레기 수집보다 더 나쁩니다). 아마도 이것은 인덱싱 된 테이블에만 적용될 수 있습니다. 아니면 내가 사용하지 않은 몇 년 동안 이미 해결되었을 수도 있습니다. 시도해 봐야겠습니다. 개발자들조차도 분석할지도 모르니 관심을 가져야 할 것입니다.
데이터베이스 가져오기()
간단한 스크립트
2020.02.20 15:09:27.171 MQL5 'DOMcopy.ex5'에 지원되지 않는 최신 버전이 있습니다. 클라이언트 터미널을 업데이트하세요.
버전 5 빌드 2323 최신 메타 편집기는 동일하며 디버깅이 작동하지 않습니다.
미완성된 부분이 있나요?
데이터베이스 가져오기 기능은 아직 일반에 공개되지 않았습니다.
출시될 때까지 기다려주세요.
데이터베이스 가져오기 함수는 아직 일반에 공개되지 않았습니다.
출시될 때까지 기다려주세요.
버전 5 빌드 2326도 마찬가지이므로 안정적인 버전이 나올 때까지 기다려주세요.
버전 5 빌드 2326은 언제까지 안정 버전을 기다려야 하는 건가요?
트레이딩, 자동매매 시스템, 트레이딩 전략 테스트에 관한 포럼.
메타트레이더 5 빌드 2340 새 버전: 테스터에서 계좌 설정 관리 및 파이썬과의 통합 확대
MetaQuotes, 2020.02.20 14:55
2020년 2월 21일 금요일에 메타트레이더 5 플랫폼의 업데이트 버전이 출시됩니다. 업데이트에는 다음과 같은 변경 사항이 포함되어 있습니다:
이전 플랫폼 업데이트에서 MQL5에서 직접 SQLite 데이터베이스로 작업할 수 있는 지원이 추가되었습니다. 이제 메타에디터 사용자 인터페이스(
)를 통해 주요 기능을 사용할 수 있습니다.
작동 방식
데이터베이스를 빠르게 만들려면 "MQL5 마법사"를 사용하세요. 여기에서 즉시 첫 번째 테이블을 만들고 해당 필드 목록을 정의할 수 있습니다.
데이터베이스를 만들면 "내비게이터"의 새 섹션으로 이동합니다. 데이터에 대한 모든 작업은 이 섹션에서 수행됩니다.
왼쪽 부분에는 데이터베이스 테이블이 표시됩니다. 처음 1,000개의 레코드를 빠르게 쿼리하려면 테이블 이름을 두 번 클릭합니다. 여기에서 다른 데이터베이스를 만들고 열고 테이블로 작업할 수도 있습니다.
편집기의 주요 부분은 데이터로 테이블을 채우고, 검색 및 선택을 하고, SQL 쿼리를 입력하는 등 데이터베이스 작업을 하는 곳입니다(
).

메타트레이더 5에서 데이터베이스 작업에 대한 자세한 내용은"SQLite: MQL5에서 SQL 데이터베이스 네이티브 작업" 문서를 참조하세요().
).
).
편집기에서 스크립트를 실행하려면 "컴파일"(
)을 클릭합니다.
파이썬으로 작업하려면 메타에디터의 "설정/컴파일러" 섹션에서 파이썬 경로를 지정하는 것을 잊지 마세요. 메타트레이더 5 라이브러리로 작업하려면
명령을 사용하여 설치하십시오.
).
새 명령 이름
기존 명령의 이름이 변경되었습니다:
MT5Shutdown -> shutdown
MT5TerminalInfo -> terminal_info
MT5Version -> version
MT5CopyRatesFrom -> copy_rates_from
MT5CopyRatesFromPos -> copy_rates_from_pos
MT5CopyRatesRange -> copy_rates_range
MT5CopyTicksFrom -> copy_ticks_from
MT5CopyTicksRange -> copy_tick_range
새로운 명령
지원되는 명령어 목록이 대폭 확장되었습니다.
거래 및 거래 내역 작업, 금융상품 및 현재 계좌에 대한 정보 가져오기 기능이 추가되었습니다.
.
차트에서 Python 스크립트 실행
이제 일반 MQL5 프로그램과 유사하게 플랫폼의 차트에서 Python 스크립트를 직접 실행할 수 있습니다. 스크립트는 "탐색기"에 특수 아이콘과 함께 표시됩니다.
.
스크립트 메시지는 "도구/전문가" 섹션에 표시됩니다. 스크립트가 메타트레이더 5 라이브러리를 사용하는 경우 상품, 계좌 및 거래에 대한 정보를 수신할 수 있습니다.
파이썬 스크립트는 다른 MQL5 스크립트 및 전문가 조언자와 동일한 차트에서 병렬로 실행할 수 있습니다. 스크립트 실행이 반복되는 경우 스크립트를 중지하려면 차트에서 스크립트를 제거하면 됩니다.
추가 보호
타사 Python 라이브러리 사용 시 계정을 더욱 보호하기 위해 터미널 설정에 "외부 Python API를 통한 자동 거래 비활성화" 옵션이 추가되었습니다(
).
이 옵션이 명시적으로 비활성화된 경우에만 파이썬 스크립트 거래가 허용됩니다.
.
.
DatabaseImport
파일에서 테이블로 데이터를 가져옵니다.
.
DatabaseExport
테이블 또는 SQL 쿼리 실행 결과를 CSV 파일로 내보냅니다. 파일은 UTF-8 인코딩으로 생성됩니다.
DatabasePrint
테이블 또는 SQL 쿼리 실행 결과를 Expert Advisor 로그에 인쇄합니다.
이 새로운 함수를 통해 MQL5 프로그램과 편리한 사용자 상호 작용을 구현할 수 있습니다.
.
.
.
일반 설정
이 섹션에서는 계좌에 동시에 보유할 수 있는 최대 개설 주문 수와 포지션 수를 설정할 수 있습니다. 또한 여기에서 테스트 프로그램이 거래가 허용되지 않는 세션을 설정할 수 있습니다.
마진
여기에서 마진을 예약하는 방법과 테스트 중에 사용할 포지션 계좌 시스템을 완전히 제어할 수 있습니다:
.
).
).
).
수수료
이 섹션에서는 모든 거래에 대해 수수료가 부과되는 방식을 완전히 제어할 수 있습니다.
.
.
.
.
업데이트는 라이브업데이트 시스템을 통해 제공됩니다.
안정적인 버전 5 빌드 2340 DatabaseImport는 실행 시 동일한 DatabaseImport를 표시합니다.
2020.02.22 14:01:42.338 MQL5 'DOMcopy.ex5'에 지원되지 않는 최신 버전이 있음, 클라이언트 터미널을 업데이트하세요.
안녕하세요!
인디케이터에서 데이터베이스에 대한 연결을 만들려고 했지만 어떤 이유로 작동하지 않았습니다.
데이터베이스를 사용할 수 있는 프로그램이 어디에도 나와 있지 않은 이유는 무엇인가요?