'CopyTicks' 테스트 - 페이지 23

 
Renat Fatkhullin :

자신에게 필요한 것을 한 번 깊이 다운로드한 다음 마이크로초 내에 가까운 캐시에서 새 것만 다운로드하는 것이 가장 좋습니다.

디스크 오류로 깊은 쿼리를 수행할 때마다 당연히 책임이 있습니다.

9월 첫째 주에 대한 틱 기록을 얻는 가장 최적의 방법의 코드를 보여줄 수 있습니까?
 
fxsaber :
9월 첫째 주에 대한 틱 기록을 얻는 가장 최적의 방법의 코드를 보여줄 수 있습니까?

자신을 작성하십시오, 그것은 어려운 작업이 아닙니다.

정확한 날짜를 보려면 로컬 배열에 쿼리하고 저장합니다. 캐시 외부에서 작업할 때 최적성은 없습니다. 최적화는 캐시에서 마지막 4096틱을 재개할 때만 의미가 있습니다.

 
Renat Fatkhullin :

자신을 쓰십시오, 그것은 어려운 작업이 아닙니다.

정확한 날짜를 보려면 로컬 배열에 쿼리하고 저장합니다.

따라서 필요한 간격에 몇 개의 틱이 있었는지 미리 아는 것은 불가능합니다. count 매개변수가 정의되지 않았습니다. 이것이 문제가 있는 곳입니다.

물론 count = 조로 설정하면 9월 초부터 ALL 이력을 다운로드하는 것도 가능하다. 그런 다음 이진 검색으로 배열에서 종료 날짜를 찾아 잘라냅니다.

그러나 이 조는 전혀 기술적 접근이 아닙니다. from, to가 있는 함수 오버로드 가 필요합니다. 또는 인덱스로 데이터베이스에 액세스합니다.

[삭제]  
Renat Fatkhullin :

최적화는 캐시에서 마지막 4096틱을 재개할 때만 의미가 있습니다.

도움말에서:

발급 속도: 터미널은 빠른 액세스를 위해 캐시의 각 심볼에 대해 4096개의 마지막 틱을 저장합니다(러닝 글라스가 있는 심볼의 경우 - 65536 틱).

그리고 약 65536 틱 (유리 포함) - 더 최적화되지 않습니까?
 

다음 빌드에서 CopyTicks에 대한 개선 사항을 준비할 것입니다.

  • 아마도 우리는 빠른 캐시를 128k 틱까지 자동 확장하여 적응형으로 만들 것입니다. 그러면 프로그램을 더 쉽게 작성할 수 있습니다.
  • &에서 정확한 날짜가 포함된 따옴표를 사용할 수 있도록 함수의 추가 버전을 추가하십시오.
 
Renat Fatkhullin :

다음 빌드에서 CopyTicks에 대한 개선 사항을 준비할 것입니다.

  • 아마도 우리는 빠른 캐시를 128k 틱까지 자동 확장하여 적응형으로 만들 것입니다. 그러면 프로그램을 더 쉽게 작성할 수 있습니다.
  • &에서 정확한 날짜가 포함된 따옴표를 사용할 수 있도록 함수의 추가 버전을 추가하십시오.

고맙습니다!

& to에서 완전히 다운로드된 기록은 아마도 null GetLastError 로 표시될 것입니다.

지금은 (그리고 당신이 지적한 개선 사항의 도입으로) from time 이전의 틱을 얻는 것이 극히 어렵다는 점에 유의하십시오. 따라서 나는 count를 음수로 만들 것을 제안합니다. 요청은 미래(오른쪽)뿐만 아니라 과거(== 0에서와 같이)에도 적용됩니다.

그러면 이전 기록을 쿼리하는 것이 항상 편리하고 최적(귀하의 구현)이 될 것입니다.

[삭제]  
fxsaber :

고맙습니다!

& to에서 완전히 다운로드된 기록에 대해서는 GetLastError가 0이 될 것입니다.

지금은 (그리고 당신이 지적한 개선 사항의 도입으로) from time 이전의 틱을 얻는 것이 극히 어렵다는 점에 유의하십시오. 따라서 나는 count를 음수로 만들 것을 제안합니다. 요청은 미래(오른쪽)뿐만 아니라 과거(== 0에서와 같이)에도 적용됩니다.

그러면 이전 기록을 쿼리하는 것이 항상 편리하고 최적(귀하의 구현)이 될 것입니다.

CopyTicks() 오버로드를 다른 Copy...() 함수와 동일하게 즉시 만드는 것이 좋습니다.
 
Alexey Kozitsyn :
CopyTicks() 오버로드를 다른 Copy...() 함수와 동일하게 즉시 만드는 것이 좋습니다.
그런 다음 기본 개수 및 시작을 포기해야 합니다.
[삭제]  
fxsaber :
그런 다음 기본 개수 및 시작을 포기해야 합니다.

왜요? CopyBuffer를 예로 사용하면 다음과 같습니다.

int 복사 버퍼 (  
    정수         Indicator_handle , // 표시기 핸들  
    정수         buffer_num , // 표시 버퍼 번호  
    날짜 시간    start_time , // 어떤 날짜부터  
    정수         count , // 복사할 양  
    더블      완충기[]                // 데이터를 복사할 배열  

);

count와 from(start_time)이 있습니다.

다음을 추가하는 것이 좋습니다.

int 복사 버퍼 (  
    정수         Indicator_handle , // 표시기 핸들  
    정수         buffer_num , // 표시 버퍼 번호  
    날짜 시간    start_time , // 어떤 날짜부터  
    날짜 시간    stop_time , // 날짜  
    더블     완충기[]                // 데이터를 복사할 배열  

);

양방향으로 복사할 수 있습니다. 맞죠? datetime 대신 ulong(마이크로초 단위)만.

앞으로는 다른 목적을 위해 다음과 같은 과부하를 추가하는 것이 좋습니다.

int 복사 버퍼 (
    정수         Indicator_handle , // 표시기 핸들
    정수         buffer_num , // 표시 버퍼 번호
    정수         start_pos , // 시작 위치
    정수         count , // 복사할 양
    더블      완충기[]                // 데이터를 복사할 배열
);

그리고 그게 다야.

[삭제]  
fxsaber :
그런 다음 기본 개수 및 시작을 포기해야 합니다.

처음에는 무심코 읽었습니다 ... 네,해야합니다. 그래서 무엇? 개발자가 캐시를 확장하면 충분히 큰 틱 기록 을 로드할 때만 속도가 느려지므로 종종 수행할 필요가 없습니다. 그리고 어떤 식으로든 실시간 로딩에 영향을 미치지 않습니다(캐시에서 가져옴).

기본 설정을 저장하는 것보다 날짜부터 로드하는 것이 훨씬 더 중요하다고 생각합니다.