틱 데이터를 사용한 백테스팅

 

틱 데이터를 사용한 백테스팅

메타트레이더에서 이 작업을 수행하는 좋은 방법을 찾은 것 같습니다. 이 방법을 통해 공정한 방법을 얻었지만 STUCK을 얻었고 최종 단계에서 도움을 요청했습니다.

1) 회사(상업 소스) 기호에서 틱 데이터를 얻었습니다. CL(오일)이 없는 소스 예. dukascopy 등에는 이 기호가 없습니다.
2) 회사 소프트웨어를 사용하여 이 눈금 데이터를 막대 형식으로 렌더링했습니다(해상도 손실 없이). 막대 형식:

날짜, 시간, 시가, 고가, 저가, 종가, 거래량

각 막대에는 1개의 눈금만 있습니다! 따라서 주어진 바에 대해 시가, 고가, 저가, 종가는 모두 동일합니다.

3) 메타트레이더 히스토리 폴더로 이동하여 거기에 있는 관련 파일을 삭제하여 이 틱 데이터를 메타트레이더 전략 테스터로 가져옵니다. 저는 메타트레이더를 오프라인으로 열고 히스토리 센터와 가져오기 기능을 사용하여 데이터를 가져옵니다. 물론, 막대 형식의 틱 데이터이지만 메타 트레이더에서는 허용됩니다. 전략 테스터(물론 여전히 오프라인)를 사용할 때 이 데이터에 액세스할 수 있습니다.

4) 그러나 문제: 메타트레이더에 따르면 이 데이터에는 동일한 날짜와 시간 스탬프를 가진 여러 개의 막대가 있습니다(메타트레이더는 초를 무시하고 가장 작은 것은 분으로 간주하기 때문에). 이에 대한 해결책은 모든 막대가 다른 날짜 및 시간 스탬프를 갖도록 데이터를 변경하는 것이라고 생각합니다(메타 트레이더가 선택할 수 있는 해상도로). 예를 들어, 만약
한 막대에는 18:00:00의 타임스탬프가 있고 다음 막대에는 18:00:08의 타임스탬프가 있습니다. 그러면 이 두 번째 막대는 18:01:00의 타임스탬프를 갖도록 변경되어야 합니다. 따라서 메타 트레이더가 다음 막대로 선택할 수 있습니다. 이것은 물론 모든 타임 스탬프(및 적절한 날짜 스탬프)를 변경하지만 이것이 정말 중요하다고 생각하지 않습니다. 제 질문은 - 어떻게 이 방식으로 모든 날짜와 시간 스탬프를 변경할 수 있습니까?

물론 데이터에는 Excel에 대한 항목이 너무 많습니다. Microsoft Access에 액세스할 수 있습니다.

입력할 때마다 반복적으로 1초를 추가하는 일부 스크립트가 작동할 수 있습니다. 그러나 우리가 올라가면서 그에 따라 시간을 변경하고 물론 날짜를 변경해야 할 것입니다. 이것이 저를 사로잡는 것입니다. 이 작업을 수행하는 방법을 모릅니다.


내 막대 기반 눈금 데이터의 샘플은 아래에 잘라내어 붙여넣습니다.
(CL 데이터-스위트 원유 선물 입니다)

날짜, 시간, 시가, 고가, 저가, 종가, 거래량
20100831,18:00:00,71.70,71.70,71.70,71.70,2
20100831,18:00:00,71.70,71.70,71.70,71.70,1
20100831,18:00:00,71.70,71.70,71.70,71.70,1
20100831,18:00:00,71.70,71.70,71.70,71.70,1
20100831,18:00:00,71.70,71.70,71.70,71.70,1
20100831,18:00:01,71.73,71.73,71.73,71.73,2
20100831,18:00:01,71.74,71.74,71.74,71.74,1
20100831,18:00:01,71.73,71.73,71.73,71.73,1
20100831,18:00:01,71.74,71.74,71.74,71.74,1
20100831,18:00:01,71.74,71.74,71.74,71.74,1
20100831,18:00:01,71.74,71.74,71.74,71.74,1
20100831,18:00:01,71.74,71.74,71.74,71.74,1
20100831,18:00:01,71.74,71.74,71.74,71.74,1
20100831,18:00:01,71.74,71.74,71.74,71.74,1
20100831,18:00:01,71.75,71.75,71.75,71.75,7
20100831,18:00:01,71.75,71.75,71.75,71.75,1
20100831,18:00:04,71.75,71.75,71.75,71.75,1
20100831,18:00:05,71.74,71.74,71.74,71.74,1
20100831,18:00:05,71.75,71.75,71.75,71.75,1
20100831,18:00:05,71.75,71.75,71.75,71.75,3
20100831,18:00:08,71.75,71.75,71.75,71.75,7
20100831,18:00:09,71.75,71.75,71.75,71.75,1
20100831,18:00:10,71.75,71.75,71.75,71.75,1
20100831,18:00:10,71.75,71.75,71.75,71.75,1
20100831,18:00:10,71.71,71.71,71.71,71.71,1
20100831,18:00:11,71.70,71.70,71.70,71.70,1
20100831,18:00:11,71.68,71.68,71.68,71.68,1
20100831,18:00:19,71.71,71.71,71.71,71.71,1
20100831,18:00:19,71.71,71.71,71.71,71.71,1
20100831,18:00:19,71.69,71.69,71.69,71.69,1
20100831,18:00:19,71.69,71.69,71.69,71.69,1
20100831,18:00:19,71.68,71.68,71.68,71.68,2
20100831,18:00:19,71.67,71.67,71.67,71.67,1
20100831,18:00:34,71.72,71.72,71.72,71.72,1
20100831,18:00:34,71.72,71.72,71.72,71.72,1
20100831,18:00:35,71.72,71.72,71.72,71.72,1
20100831,18:00:37,71.72,71.72,71.72,71.72,1
20100831,18:00:56,71.71,71.71,71.71,71.71,1
20100831,18:00:56,71.71,71.71,71.71,71.71,1
20100831,18:00:56,71.70,71.70,71.70,71.70,1
20100831,18:01:00,71.71,71.71,71.71,71.71,1
20100831,18:01:02,71.72,71.72,71.72,71.72,1
20100831,18:01:11,71.71,71.71,71.71,71.71,1
20100831,18:01:12,71.71,71.71,71.71,71.71,1
20100831,18:01:13,71.71,71.71,71.71,71.71,1
20100831,18:01:16,71.70,71.70,71.70,71.70,1
20100831,18:01:26,71.70,71.70,71.70,71.70,3
20100831,18:01:26,71.70,71.70,71.70,71.70,5
20100831,18:01:28,71.70,71.70,71.70,71.70,1
20100831,18:01:33,71.71,71.71,71.71,71.71,1
20100831,18:01:36,71.70,71.70,71.70,71.70,4
20100831,18:01:45,71.70,71.70,71.70,71.70,1
20100831,18:01:46,71.71,71.71,71.71,71.71,2
20100831,18:01:46,71.71,71.71,71.71,71.71,4
20100831,18:01:49,71.71,71.71,71.71,71.71,1
20100831,18:02:19,71.70,71.70,71.70,71.70,1
20100831,18:02:25,71.70,71.70,71.70,71.70,1
20100831,18:02:25,71.70,71.70,71.70,71.70,1
20100831,18:02:25,71.70,71.70,71.70,71.70,1
20100831,18:02:25,71.70,71.70,71.70,71.70,1
20100831,18:02:26,71.70,71.70,71.70,71.70,1
20100831,18:02:26,71.70,71.70,71.70,71.70,1
20100831,18:02:39,71.74,71.74,71.74,71.74,1
20100831,18:03:10,71.74,71.74,71.74,71.74,1
20100831,18:03:29,71.75,71.75,71.75,71.75,1
20100831,18:03:34,71.75,71.75,71.75,71.75,1
20100831,18:03:34,71.77,71.77,71.77,71.77,1
20100831,18:03:41,71.78,71.78,71.78,71.78,1
20100831,18:03:41,71.78,71.78,71.78,71.78,5
20100831,18:03:41,71.78,71.78,71.78,71.78,5
20100831,18:03:41,71.79,71.79,71.79,71.79,1
20100831,18:03:44,71.78,71.78,71.78,71.78,1
20100831,18:03:50,71.78,71.78,71.78,71.78,1
20100831,18:03:52,71.79,71.79,71.79,71.79,1
20100831,18:04:14,71.79,71.79,71.79,71.79,1
20100831,18:04:14,71.79,71.79,71.79,71.79,1
20100831,18:04:14,71.80,71.80,71.80,71.80,1
20100831,18:04:14,71.80,71.80,71.80,71.80,2

실제로 솔루션에 도움이 될 수 있는 몇 초 없이 몇 분 만에 데이터를 렌더링할 수 있습니다.

20100831,18:00,71.70,71.70,71.70,71.70,2
20100831,18:00,71.70,71.70,71.70,71.70,1
20100831,18:00,71.70,71.70,71.70,71.70,1
20100831,18:00,71.70,71.70,71.70,71.70,1
20100831,18:00,71.70,71.70,71.70,71.70,1
20100831,18:00,71.73,71.73,71.73,71.73,2
20100831,18:00,71.74,71.74,71.74,71.74,1
20100831,18:00,71.73,71.73,71.73,71.73,1
20100831,18:00,71.74,71.74,71.74,71.74,1
20100831,18:00,71.74,71.74,71.74,71.74,1
20100831,18:00,71.74,71.74,71.74,71.74,1
20100831,18:00,71.74,71.74,71.74,71.74,1
20100831,18:00,71.74,71.74,71.74,71.74,1
20100831,18:00,71.74,71.74,71.74,71.74,1
20100831,18:00,71.75,71.75,71.75,71.75,7
20100831,18:00,71.75,71.75,71.75,71.75,1
20100831,18:00,71.75,71.75,71.75,71.75,1
20100831,18:00,71.74,71.74,71.74,71.74,1
20100831,18:00,71.75,71.75,71.75,71.75,1
20100831,18:00,71.75,71.75,71.75,71.75,3
20100831,18:00,71.75,71.75,71.75,71.75,7
20100831,18:00,71.75,71.75,71.75,71.75,1
20100831,18:00,71.75,71.75,71.75,71.75,1
20100831,18:00,71.75,71.75,71.75,71.75,1
20100831,18:00,71.71,71.71,71.71,71.71,1
20100831,18:00,71.70,71.70,71.70,71.70,1
20100831,18:00,71.68,71.68,71.68,71.68,1
20100831,18:00,71.71,71.71,71.71,71.71,1
20100831,18:00,71.71,71.71,71.71,71.71,1
20100831,18:00,71.69,71.69,71.69,71.69,1
20100831,18:00,71.69,71.69,71.69,71.69,1
20100831,18:00,71.68,71.68,71.68,71.68,2
20100831,18:00,71.67,71.67,71.67,71.67,1
20100831,18:00,71.72,71.72,71.72,71.72,1
20100831,18:00,71.72,71.72,71.72,71.72,1
20100831,18:00,71.72,71.72,71.72,71.72,1
20100831,18:00,71.72,71.72,71.72,71.72,1
20100831,18:00,71.71,71.71,71.71,71.71,1
20100831,18:00,71.71,71.71,71.71,71.71,1
20100831,18:00,71.70,71.70,71.70,71.70,1
20100831,18:01,71.71,71.71,71.71,71.71,1
20100831,18:01,71.72,71.72,71.72,71.72,1
20100831,18:01,71.71,71.71,71.71,71.71,1
20100831,18:01,71.71,71.71,71.71,71.71,1
20100831,18:01,71.71,71.71,71.71,71.71,1
20100831,18:01,71.70,71.70,71.70,71.70,1
20100831,18:01,71.70,71.70,71.70,71.70,3
20100831,18:01,71.70,71.70,71.70,71.70,5
20100831,18:01,71.70,71.70,71.70,71.70,1
20100831,18:01,71.71,71.71,71.71,71.71,1
20100831,18:01,71.70,71.70,71.70,71.70,4
20100831,18:01,71.70,71.70,71.70,71.70,1
20100831,18:01,71.71,71.71,71.71,71.71,2
20100831,18:01,71.71,71.71,71.71,71.71,4
20100831,18:01,71.71,71.71,71.71,71.71,1
20100831,18:02,71.70,71.70,71.70,71.70,1
20100831,18:02,71.70,71.70,71.70,71.70,1
20100831,18:02,71.70,71.70,71.70,71.70,1
20100831,18:02,71.70,71.70,71.70,71.70,1
20100831,18:02,71.70,71.70,71.70,71.70,1
20100831,18:02,71.70,71.70,71.70,71.70,1
20100831,18:02,71.70,71.70,71.70,71.70,1
20100831,18:02,71.74,71.74,71.74,71.74,1
20100831,18:03,71.74,71.74,71.74,71.74,1
20100831,18:03,71.75,71.75,71.75,71.75,1
20100831,18:03,71.75,71.75,71.75,71.75,1
20100831,18:03,71.77,71.77,71.77,71.77,1
20100831,18:03,71.78,71.78,71.78,71.78,1
20100831,18:03,71.78,71.78,71.78,71.78,5
20100831,18:03,71.78,71.78,71.78,71.78,5
20100831,18:03,71.79,71.79,71.79,71.79,1
20100831,18:03,71.78,71.78,71.78,71.78,1
20100831,18:03,71.78,71.78,71.78,71.78,1
20100831,18:03,71.79,71.79,71.79,71.79,1
20100831,18:04,71.79,71.79,71.79,71.79,1
20100831,18:04,71.79,71.79,71.79,71.79,1
20100831,18:04,71.80,71.80,71.80,71.80,1
20100831,18:04,71.80,71.80,71.80,71.80,2
20100831,18:04,71.80,71.80,71.80,71.80,1
20100831,18:04,71.80,71.80,71.80,71.80,3
20100831,18:04,71.80,71.80,71.80,71.80,17
20100831,18:04,71.80,71.80,71.80,71.80,1
20100831,18:04,71.80,71.80,71.80,71.80,4
20100831,18:04,71.79,71.79,71.79,71.79,1

 
테스터는 FXT 파일을 사용하며 초도 있습니다. 불행히도 이러한 FXT 파일은 각 연속 테스트에서 덮어쓰여지므로 사용자는 자신의 데이터를 저장할 수 없습니다(이전 버전의 MT4에서는 가능 -> https://www.mql5.com/en/forum/103180/page6#321081 ). . 이 장애를 극복하는 방법이 있습니다... 자세한 정보는 여기 참조 -> http://eareview.net/tick-data .
 

그 웹 사이트는 모든 진드기에 대한 표준 답변 인 것 같습니다.

그러나 내가하려고하는 것은 다른 것입니다 (내 틱 데이터가 해당 웹 사이트에서 가정하는 것과 동일한 소스가 아니기 때문에 다른 경로로 이동했습니다. 시작점이 다르므로 제공된 변환에 적합한 기질이 아닙니다. 파일/시스템).

실제로 내 방법을 사용하면 이전 메타 트레이더 버전을 사용할 필요가 없습니다. 내가 맞다면. 저도 거의 다 왔어요. 마지막 마지막 단계에서 도움이 필요합니다.

 

어떻게 생각하세요?

1) 유효한 경로에 있습니까?

내가 말했듯이 - 나는 그 웹 사이트 (Birt EA)를 시작 지점에 유효하지 않기 때문에 경로를 사용할 수 없습니다.

2) 그렇다면 - 내가 겪고 있는 이 마지막 난관을 극복할 생각이 있습니까?

 
당신이 Birt의 방법을 이해하지 못하거나 내가 당신을 이해하지 못합니다. 다음은 의미가 없습니다.


mikey :

[...]

4) 그러나 문제: 메타트레이더에 따르면 이 데이터에는 동일한 날짜와 시간 스탬프를 가진 여러 개의 막대가 있습니다(메타트레이더는 초를 무시하고 가장 작은 것은 분으로 간주하기 때문에). 이에 대한 해결책은 모든 막대가 다른 날짜 및 시간 스탬프를 갖도록 데이터를 변경하는 것이라고 생각합니다(메타 트레이더가 선택할 수 있는 해상도로). [...]

테스터는 히스토리 센터에서 수행하는 작업에 관계없이 항상 먼저 Ticks를 보간하여 백테스트하기 때문에 아무 것도 해결되지 않습니다. Birt의 방법 뒤에 있는 주요 아이디어는 보간된 틱 파일을 테스터가 테스트할 실제 틱이 포함된 파일로 교체하는 것입니다. 현재 시도에 성공하더라도 테스터는 여전히 틱을 보간하여 테스트하므로 의미가 없습니다.


나는 이것을 읽고 -> https://www.mql5.com/en/articles/1511 그리고 Birt의 튜토리얼 을 다시 살펴보는 것이 좋습니다. 당신의 목표는 테스터에 의해 생성된 FXT 파일을 대체하기 위해 실제 틱으로 적절한 FXT 파일을 만드는 것입니다. Birt의 방법을 사용하여 "재계산"을 비활성화하고 테스터가 FXT 파일을 사용하도록 할 수 있습니다(실제 눈금 포함).

 

모든 것은 이것에 달려 있습니다.

1) 메타 트레이더는 막대 내에서만 틱을 보간합니까? (그렇다고 생각한다)

2) 그리고 이것은 막대의 주어진 값(시가, 고가, 저가, 종가)에 의해 유도되고 제한되는 대로 수행합니다.

[1]과 [2]가 참이면 내 방법에서 각 막대에 1개의 눈금만 있기 때문에 내 방법이 유효하다고 생각합니다. 따라서 시가, 고가, 저가 및 종가는 모두 가치가 동일합니다. 따라서 메타 트레이더가 틱을 보간하기 위해 이것을 사용할 때 보간된 모든 틱에는 정확히 동일한 값/가격이 제공됩니다. 따라서 메타 트레이더의 새 틱 보간은 문제가 되지 않습니다. 아무 것도 변경하지 않습니다.

나는 문제를 이해하고 있다고 생각하고 일을 하는 더 나은 방법이라고 믿는 길을 가고 있다고 생각합니다. 그러나 나는 시정되어야 한다. 어쩌면 내가 순진한 것일 수도 있습니다.

 
mikey :

1) 메타 트레이더는 막대 내에서만 틱을 보간합니까? (그렇다고 생각한다)

2) 그리고 이것은 막대의 주어진 값(시가, 고가, 저가, 종가)에 의해 유도되고 제한되는 대로 수행합니다.

[1]과 [2]가 참이면 내 방법에서 각 막대에 1개의 눈금만 있기 때문에 내 방법이 유효하다고 생각합니다. 따라서 시가, 고가, 저가 및 종가는 모두 가치가 동일합니다. 따라서 메타 트레이더가 틱을 보간하기 위해 이것을 사용할 때 보간된 모든 틱에는 정확히 동일한 값/가격이 제공됩니다. 따라서 메타 트레이더의 새 틱 보간은 문제가 되지 않습니다. 아무 것도 변경하지 않습니다. [...]

알겠습니다... 명확히 해 주셔서 감사합니다. 막대가 O=C=H=L이고 볼륨=1이면 실제로 1틱만 형성되어야 합니다. 그러나 그것은 평균 막대 볼륨으로 시간 척도를 '늘어나고 있음'을 의미합니다. 그리고 막대마다 부피가 다르지만 '균일하게' 늘이고 있습니다. 이것은 대부분의 전문가에게 심각한 영향을 미칩니다. 그것은 또한 테스트 보고서의 날짜/시간이 늘어나야 하고 교환해야 하는 것보다 셀 수 없이 많은 시간이 소요될 것임을 의미합니다. 이것은 매우 신뢰할 수 없는 것으로 들리며 대부분의 전문가에게 '작동'하지 않을 것이라고 생각합니다.


어쨌든, '그것을하는 방법'에 대한 귀하의 질문에 대답하기 위해. 각 막대가 단일 눈금을 나타내는 M1 HST 파일을 생성하기만 하면 됩니다. 이것은 스크립트를 통해 수행할 수 있습니다. HST 파일 구조는 매뉴얼(터미널 도움말)에 문서화되어 있으며 csv2fxt 스크립트 에서 일부 코드를 재사용할 수 있습니다.


ps 테스터에서 보간이 수행되는 방법에 관심이 있는 경우 MT5 테스터에서 수행되는 방법에 대한 좋은 기사가 있습니다... MT4 테스터에서 진행 중인 작업과 매우 유사해야 합니다(동일하지 않은 경우) - > https://www.mql5.com/en/articles/75 .

 

내 마지막에 대한 추가 설명으로:

각 틱에는 고유한 M1 막대가 제공됩니다(고유한 날짜 및 시간 스탬프가 있는 막대, 전체 분 단위로 시간이 표시됨).

따라서 이것은 시간이 이동됨을 의미합니다. 눈금 막대는 해당 눈금이 실제로 발생한 시간과 매우 다를 수 있습니다.

그러나 이것은 나에게 문제가 되지 않습니다. 시간을 정확히 알 필요는 없다. 나는 백테스트 에 어떤 데이터를 넣었는지(이 날짜부터 그 날짜까지) 알고 있으며 이 방법으로 이 기간 말에 손익이 발생했는지 마지막에 알게 됩니다. (출력 그래프의 정확한 날짜/시간은 나와 상관 없음)

다시 - 나는 정정당당하다. 이 모든 것이 소리입니까 아니면 광기입니까? 저를 Birts에 대해 언급하기 보다는 시간을 내어 ive가 말한 내용을 이해하도록 하십시오. 왜냐하면 내가 이것을 제대로 전달하고 전달할 수 있고 그것이 건전하다면 - 그것이 일을 하는 더 좋은 방법일 수 있다고 생각하기 때문입니다.

 

mikey :

[...] 하지만 이것은 나에게 문제가 되지 않습니다. 시간을 정확히 알 필요는 없다. 나는 백테스트에 어떤 데이터를 넣었는지(이 날짜부터 그 날짜까지) 알고 있으며 이 방법으로 이 기간 말에 손익이 발생했는지 마지막에 알게 됩니다. (출력 그래프의 정확한 날짜/시간은 나와 상관 없음) [...]

확인. 그러나 이것이 전문가에게 영향을 미치지 않을 것이라고 절대적으로 확신합니까? 예를 들어 - 시간 프레임 고려 사항에 의존하는 모든 전문가 또는 시간 프레임을 기반으로 하는 인디는 예상대로 작동하지 않습니다. 또한 스왑을 0으로 재설정해야 제대로 계산되지 않습니다. 내가 지금 생각하지 않는 다른 부작용이 있을 수 있습니다... 나에게 매우 위험하게 들립니다.
 
BTW, MT4에서 계산되는 방식과 관련이 없기 때문에 볼륨 데이터를 스크랩해야 합니다(볼륨 = 막대에 수신된 틱 수).
 

네. 당신의 답장은 내가 마지막으로 보냈을 때 왔습니다.

RE: 볼륨...- 내 EA가 볼륨을 "읽지" 않으면 이것으로 안전합니까? 그것에 대해 걱정할 필요가 없습니까? 나는 볼륨에 대해 생각하지 않았지만 내가 말했듯이 내 EA는 아무 것도 "읽지" 않습니다. 그래서, 명확히하기 위해 - 볼륨을 무시할 수 있습니까? 아니면 모든 막대에 대해 볼륨을 1로 설정해야 합니까?