라이브러리: 온틱멀티 - 페이지 2

 

fxsaber #:

double OnTester()

{return AccountInfoDouble(ACCOUNT_BALANCE); }

이 줄은 무슨 용도인가요?

 
lynxntech #:

이 줄은 무슨 용도인가요?

원하는 잔액 값을 반환하기 위해서입니다.

 

귀사의 솔루션에서 틱들이 시간적으로 얼마나 잘 동기화되어 있는지 확인해 보셨나요?

일반적인 테스트에서 서로 다른 기호로 틱을 요청하면, 서로 1틱 정도 차이가 발생합니다. 이를 확인하기 위해 1분 간격으로 틱이 발생하는 커스텀 코드를 작성해 보았습니다.

 
Rorschach #:

귀하의 솔루션에서 틱들이 시간적으로 얼마나 잘 동기화되어 있는지 확인해 보셨나요?

모든 것이 정상적으로 작동합니다. 기본 테스터에서도 정상입니다. 그렇지 않다면 보여 주세요.

 
fxsaber #:
기본 테스터에서는 정상입니다. 그렇지 않다면 보여주세요.

편의를 위해 EUR과 GBP의 1분 차트에서 커스텀 틱을 생성했습니다

EUR는 정확하지만, GBP는 틱 하나 앞당겨져 있습니다(시간과 가격을 확인해 보세요)

파일:
1.mq5  3 kb
 
Rorschach #:

편의상 EUR 및 GBP 분 단위 차트를 기반으로 커스텀 티크를 생성했습니다

EUR는 정확하고, GBP는 틱 하나 앞당겨져 있습니다(시간과 가격을 확인해 주세요)

시간이 동일한 틱은 동시에 도착하지 않습니다. 모두 순차적으로 도착합니다. 만약 EURUSD의 시간이 더 늦은 틱이 먼저 도착했다면, 그 시점에서는 두 번째로 도착할 GBPUSD의 동일한 시간 틱에 대해서는 아무것도 알 수 없습니다. 따라서 첫 번째 EURUSD 틱이 도착하는 시점에는 두 번째 GBPUSD 틱이 단순히 존재하지 않고, 이전 GBPUSD 틱의 데이터만 존재합니다.
 
fxsaber #:
같은 시간의 틱은 동시에 도착하지 않습니다. 모두 순차적으로 도착합니다. 만약 EURUSD의 시간이 더 큰 틱이 먼저 도착했다면, 그 시점에서는 두 번째로 도착할 GBPUSD의 같은 시간 틱에 대해서는 아무것도 알 수 없습니다. 따라서 첫 번째 EURUSD 틱이 도착하는 시점에는 두 번째 GBPUSD 틱이 단순히 존재하지 않으며, 대신 이전 GBPUSD 틱의 데이터만 존재합니다.

테스터에서는 이것이 단점이며, 차익거래를 위해서는 데이터가 동기화되어야 합니다.

그리고 이는 차익거래뿐만이 아닙니다. 시스템이 상품 간의 상관관계에 기반을 둔다면, 미래를 예측하려는 경향이 나타납니다.

 
Rorschach #:

테스터에서는 이것이 단점이며, 차익거래를 위해서는 동기화가 필요합니다.

그리고 차익거래뿐만이 아닙니다. 시스템이 상품 간의 상관관계에 기반을 둔다면, 미래를 예측하려는 경향이 나타납니다.

이러한 경우를 위해 테스터에서 실행 지연 시간을 설정할 수 있습니다.
 
fxsaber #:
이러한 경우를 위해 테스터에서 실행 지연 시간을 설정할 수 있습니다.
제 경우에는 구현이 좀 복잡했습니다. 인이테에서 커스텀 테스터로 입력값을 읽어와 배열에 저장한 다음, 테스터의 OnTick에서 입력값을 읽어와 동기화했습니다.
 
Rorschach #:

테스터에서는 이것이 단점이며, 차익거래를 위해서는 동기화가 필요합니다.

그리고 차익거래뿐만이 아닙니다. 시스템이 상품 간의 상관관계에 기반을 둔다면, 미래를 예측하려는 경향이 나타납니다.

미래 예측은 없습니다. 왜냐하면 시간 X에 여러 심볼에 대한 틱이 존재한다면, 한 상품에서 첫 번째 이벤트가 발생할 때 다른 심볼들(이벤트가 아직 대기 중인 경우)에는 다음 틱이 아닌 이전 틱이 표시되기 때문입니다 (예시에서처럼, 00:04는 00:05 이전이지, 이후가 아닙니다).

동기화를 위해서는 코드 내에서 알고리즘적으로 이를 보장해야 합니다. 예를 들어, OnTick 핸들러에서 거래를 시작하기 전에 관련된 모든 종목의 틱 시간을 조회하는 방식입니다. 하지만 원칙적으로, 만약 차익거래가 틱 단위(바나 분이 아닌)로 이루어진다면, 특정 종목의 틱이 실제로 몇 초 동안 나타나지 않을 수 있기 때문에 신뢰할 수 있는 동기화를 기대하기 어렵습니다.