모든 거래의 테이블. MQL5를 통한 액세스 - 페이지 3

 
prostotrader :

누군가가 무엇이 잘못되었는지 알고 있습니까?

표시기가 올바르게 작동하지만 더 많은 막대가 표시됩니다.

설정에서 완료한 것보다

코드는 보이지 않았지만 각각의 새 막대가 나타난 후 표시줄 도 자동으로 왼쪽으로 이동한다는 사실(차트를 보면)은 고려되지 않는다고 가정하겠습니다. 즉, 새로운 막대가 나타난 후 표시선을 오른쪽으로 이동해야 합니다(차트를 보면).
 
Karputov Vladimir :
코드는 보이지 않았지만 각각의 새 막대가 나타난 후 표시줄 도 자동으로 왼쪽으로 이동한다는 사실(차트를 보면)은 고려되지 않는다고 가정하겠습니다. 즉, 새로운 막대가 나타난 후 표시선을 오른쪽으로 이동해야 합니다(차트를 보면).
덕분에 버그를 찾았습니다.
파일:
DealsLent.mq5  10 kb
 
prostotrader :
마무리 손질..

마지막이 아닌 것으로 밝혀졌습니다...

한 번 더 최적화가 필요합니다.

끝내고 테스트 해볼께요...

 
그러한 술이 사라졌으므로 미결제 이자 표시기인 틱 표시기 를 유지하십시오(거래소에 연결된 실제 계정에서 실행).
파일:
 
Karputov Vladimir :
그러한 술이 사라졌으므로 미결제 이자 표시기인 틱 표시기 를 유지하십시오(거래소에 연결된 실제 계정에서 실행).
고맙습니다.
 

심각한 문제가 있습니다.

시작 시간이 다른 틱 중복 :(

 int copied= CopyTicks ( Symbol (),ticks, COPY_TICKS_ALL ,start_time, 0 );

start_time이 다르고 다음과 같은 경우 틱이 다시 복사됩니다.

그들은 같은 시간을

내일 자세히 설명하겠습니다.

가장 최근 빌드

파일:
DealsLent.mq5  12 kb
 

뭔가 잠이 오지 않아, 나는 무슨 일이 일어나고 있는지 쓰기로 결정했습니다.

( 위 게시물의 전체 표시기 코드 .)

거래소의 진드기는 시간대에 따라 엄격하게 터미널에 오지 않으며,

그러나 블록(스크린샷 참조) 블록 1, 블록 2 등

터미널은 이를 "저장"하고 거래소에서 블록별로 수신할 때 테이블에 표시합니다.

블록 모두 같은 시간에 트랜잭션이 있을 수 있습니다.

실시간이 아닌 CopyTicks()를 호출하면(다음 날 또는 몇 초 후),

그러면 CopyTicks() 함수가 정확한 데이터를 반환합니다.

실시간으로 발생하는 일은 다음과 같습니다.

 int copied= CopyTicks ( Symbol (),ticks, COPY_TICKS_ALL ,start_time, 0 );

start_time = (23:49:58.114)이면 블록 1 전체를 얻습니다(빨간색 원).

그런 다음 블록 2(녹색 원)를 얻기 위해 시간이 변경될 때까지 기다립니다.

블록 1의 중복을 피하기 위해(OnBookEvent는 매우 빠르게 실행될 수 있음)

시간이 변경되었는지 확인 추가

if (start_time== ulong (ticks[copyed- 1 ].time_msc)) return ;

start_time = (23:49:58.596)일 때 블록 2를 가져와야 합니다.

그러나 CopyTicks() 함수는 블록 2와 시간 경과에 따른 모든 틱 (23:49:58.114)을 모두 반환합니다.

블록 2(23:49:58.114)에 같은 시간에 하나 이상의 틱이 있는 경우 .

정말 안타까운 소식이네요... :(

개발자가 이를 수정하지 않으면 실시간으로 거래 피드를 받을 수 없습니다.


 
prostotrader :


그리고 시간별로 요청하면 틱이 지정된 시간에서 다운로드되어 기록으로 깊숙이 들어가는 이유는 무엇이라고 생각하십니까? 실제로 시간별로 틱을 요청하면 지정된 시간에서 FUTURE로 틱이 다운로드됩니다. 예를 들어:

입력 데이터(20000틱 요청), 시간 2016.08.25 20-00-00 :

요청 20000틱, 시간 2016.08.25 20-00-00:


우리는 다음을 얻습니다:

 2016.08 . 26 07 : 22 : 06.852 CopyTicks_1_02 (SBRF- 9.16 ,M1)   Получено тиков: 10823 код ошибки: 0
2016.08 . 26 07 : 22 : 06.852 CopyTicks_1_02 (SBRF- 9.16 ,M1)   Тик: 2016.08 . 25 20 : 00 : 00 bid: 14377.0 ask: 0.0 last: 0.0 [ 0 ]
2016.08 . 26 07 : 22 : 06.852 CopyTicks_1_02 (SBRF- 9.16 ,M1)   Тик: 2016.08 . 26 00 : 02 : 08 bid: 0.0 ask: 0.0 last: 0.0 [ 10822 ]
2016.08 . 26 07 : 22 : 06.852 CopyTicks_1_02 (SBRF- 9.16 ,M1)   Size 0 Mb

즉, 요청한 시간 2016.08.25 20:00:00 부터 FUTURE 방향으로 틱이 수신됩니다(마지막 틱의 시간은 2016.08.26 00:02:08 ).

파일:
 
Karputov Vladimir :

그리고 시간별로 요청하면 틱이 지정된 시간에서 다운로드되어 기록으로 깊숙이 들어가는 이유는 무엇이라고 생각하십니까? 실제로 시간별로 틱을 요청하면 지정된 시간에서 FUTURE로 틱이 다운로드됩니다. 예를 들어:

입력 데이터(20000틱 요청), 시간 2016.08.25 20-00-00 :



우리는 다음을 얻습니다:

즉, 요청한 시간 2016.08.25 20:00:00 부터 FUTURE 방향으로 틱이 수신됩니다(마지막 틱의 시간은 2016.08.26 00:02:08 ).

나는 그것이 깊지 않다고 생각하지만 그들이 깊이에서 "움켜잡고" 있는 것을 봅니다.

왜 생각해?

표시기를 실행하고 직접 확인하십시오!

그리고 당신은 쓰여진 것을 읽습니까?

Если мы вызываем CopyTicks () НЕ в реальном времени (скажкем, на следующий день),

то функция CopyTicks () будет возвращать точные данные.
 
저녁에 거래가 적었을 때 나는 이것을 아주 우연히 발견했습니다.