기고글 토론 "SQLite: MQL5로 SQL 데이터베이스의 처리"

 

새로운 기고글 SQLite: MQL5로 SQL 데이터베이스의 처리 가 게재되었습니다:

트레이딩 전략을 개발하는 일은 많은 양의 데이터를 처리하는 것과 관련이 있습니다. 이제 MQL5에서 SQLite를 기반으로 하는 SQL 쿼리를 사용하여 데이터베이스로 작업할 수 있습니다. 이 엔진에서 중요한 점 전체 데이터베이스가 사용자의 PC에 있는 단일 파일에 저장된다는 것입니다.

MetaEditor에서 SQL 쿼리 디버깅

데이터베이스 작업을 위한 모든 함수는 코드가 실패한 경우 오류 코드를 반환합니다. 네 가지 간단한 규칙을 따르면 함수를 사용하는 데 문제가 발생하지 않습니다.

  1. 모든 쿼리 핸들은 DatabaseFinalize()에서 사용한 후에 삭제되어야 합니다.
  2. 데이터베이스는 완료 전에 DatabaseClose()로 닫혀야 합니다.
  3. 쿼리 실행 결과를 확인해야 합니다.
  4. 오류가 발생하면 쿼리가 먼저 소멸되고 데이터베이스는 나중에 닫힙니다.

가장 어려운 것은 쿼리가 생성되지 않은 경우에 오류가 무엇인지를 알아보는 것입니다. MetaEditor를 사용하면 *.sqlite 파일을 열고 SQL 쿼리를 사용하여 작업할 수 있습니다. 예를 들어 company.sqlite 파일을 사용하여 이 작업을 수행하는 방법에 대해 알아보겠습니다.

1. 공통 터미널 폴더에서 company.sqlite 파일을 엽니다.

2. 데이터베이스를 열면 내비게이터에서 COMPANY 테이블을 볼 수 있습니다. 그것을 두 번 클릭하십시오.

3. 상태 표시줄에 "SELECT * FROM COMPANY" 쿼리가 자동으로 생성됩니다.

4. 쿼리가 자동으로 실행됩니다. F9 키를 누르거나 실행을 클릭하여 실행할 수도 있습니다.

5. 쿼리 실행 결과를 참조하십시오.

6. 뭔가 잘못되면 저널에 오류가 표시됩니다.


SQL 쿼리를 사용하면 합계 및 평균과 같은 테이블 필드에 대한 통계를 얻을 수 있습니다. 쿼리를 만들고 작동하는지 확인합시다.

작성자: MetaQuotes

 

이 작업의 구현을 알아낸 사람은 이 작업의 구현을 보여주세요.

  1. 터미널이 두 개 있습니다.
  2. 터미널1에서 터미널2의 해당 사용자 지정 심볼로 한 심볼의 실시간 시세를 전송해야 합니다.
 
유용한 애플리케이션에 대한 기사와 좋은 예시를 제공해 주셔서 감사합니다.
 
fxsaber:

누가 그것을 알아 냈는지, 그러한 작업의 구현을 보여주세요.

  1. 터미널이 두 개 있습니다.
  2. 터미널1에서 터미널2의 해당 사용자 지정 기호로 한 심볼의 실시간 따옴표를 전송해야 합니다.

이 작업의 프레임 워크 내에서 두 경우 모두 (터미널 2에서베이스를 읽고 터미널 1에서베이스에 쓸 때) 트랜잭션 메커니즘을 통해 차단되어야한다는 것을 올바르게 이해합니까?


데이터베이스가 업데이트되었는지 확인하는 가장 저렴한 방법은 무엇인가요?

 
fxsaber:

이 작업의 프레임 워크 내에서 두 경우 (터미널 2에서베이스를 읽고 터미널 1에서베이스에 쓸 때) 트랜잭션 메커니즘을 통해 차단해야한다는 것을 올바르게 이해합니까?

아니요, 이것은 다른 잠금입니다. 베이스가 이미 다른 MQL5 프로그램이나 메타에디터에서 열려 있는 경우 수정하려고 할 때 5124 오류가 발생합니다.

 
Rashid Umarov:

아니요, 이것은 다른 잠금입니다. 베이스가 다른 MQL5 프로그램이나 MetaEditor에서 이미 열려 있는 경우 수정하려고 할 때 5124 오류가 발생합니다.

데이터 교환이 파일을 통한 것보다 가능성이 적다는 것이 밝혀졌나요?

 
fxsaber:

데이터 공유가 파일보다 가능성이 적은 것 같나요?

데이터베이스 구현 자체에 따라 다릅니다.

파일은 항상 불편합니다 - 순차적 액세스 및 단일 파일로 작업할 때 동일한 문제가 발생합니다.

 
fxsaber:

데이터 공유가 파일보다 가능성이 적은 것 같나요?

SQLite는 서버 측 데이터베이스가 아니라 임베디드 데이터베이스입니다. 따라서 서로 다른 프로세스에서 공동 및 동시 사용을 제공할 수 없습니다.

그 용도는 MQL5의 내부 사용 및 다른 시스템과의 공유(동시 사용이 아님)/전송입니다.

내장된 사내 데이터베이스의 장점은 모든 에이전트에서 사용할 수 있으며 원격 및 전략 테스터에서 편리하게 데이터 작업을 할 수 있다는 것입니다.


하나의 터미널에서 실행되는 여러 MQL5 Expert Advisor의 프레임워크 내에서 동일한 데이터베이스를 공유할 수 있습니다.

 
Renat Fatkhullin:

SQLite는 서버 측 데이터베이스가 아니라 임베디드 데이터베이스입니다. 따라서 서로 다른 프로세스에서 공유 및 동시 사용 기능을 제공할 수 없습니다.

동일한 터미널에서 실행되는 서로 다른 전문가 내에서 동일한 데이터베이스를 공유할 수 있습니다.

이제 이해했습니다.

 

µl5에 대해 설명된 내용을 µl4에서 사용할 수 있나요?

기능과 라이브러리 작업이 호환 가능한가요? 아니면 µl5 전용인가요?

 
Chiripaha:

µl5에 설명된 내용을 µl4에서도 사용할 수 있나요?

기능과 라이브러리 작업이 호환 가능한가요? 아니면 µl5 전용인가요?

기본 SQLite 지원은 메타트레이더 5 및 MQL5에서만 가능합니다.

이는 라이브러리가 아니라 전략 테스트 에이전트를 포함한 전체 시스템에 긴밀하게 통합된 표준 MQL5 기능입니다.