라이브러리: 멀티 테스터 - 페이지 20

 

오래전부터 존재했던 것으로 보이는 힙 크래시가 발생하는 까다로운 오류입니다.

    ::ArrayResize(Buf, (int)user32::SendMessageW(Handle, CB_GETLBTEXTLEN, 0, 0 ));
    user32::SendMessageW(Handle, CB_GETLBTEXT, 0, Buf);

CB_GETLBTEXTLEN: 반환 값은 종료 null 문자를 제외한 문자열의 길이(TCHAR)입니다.

CB_GETLBBTEXT: 버퍼에 문자열과 종료 널 문자를 위한 충분한 공간이 있어야 합니다.

다음과 같이 작성해야 합니다.

::ArrayResize(Buf, (int)user32::SendMessageW(Handle, CB_GETLBTEXTLEN, 0, 0 )+1);
 
traveller00:

오랜 시간 동안 쌓여 있는 것 같지만 영리한 실수입니다.


CB_GETLBTEXTLEN: 반환 값은 종료 null 문자를 제외한 문자열의 길이(TCHAR)입니다.

CB_GETLBBTEXT: 버퍼에 문자열을 위한 충분한 공간과 종료 null 문자가 있어야 합니다.

다음과 같이 작성해야 합니다.

Thanks! 사실, 이것이 사용되는 GetExpertName은 거의 기초가 되었습니다.

 
fxsaber:

GetExpertName이 사용되는 곳은 거의 기본이 되었습니다.

어떻게 말하자면, Run에서 가져온 SetExpertName에서 사용되며 실제로 MultiTester의 주요 함수 중 하나입니다. 오류는 드물지만 우연히 발견했습니다.

 
traveller00:

어떻게 말하자면,실행에서 가져온 SetExpertName에서 사용되며 실제로 MultiTester의 주요 기능 중 하나입니다. 이 오류는 드물게 나타나지만 우연히 발견했습니다.

한동안은 그렇지 않았습니다.

 
    Str += iBeginTime ? "FromDate==" + ::TimeToString(iBeginTime, TIME_DATE) + "\n" : NULL;
    Str += iEndTime ? "ToDate==" + ::TimeToString(iEndTime, TIME_DATE) + "\n" : NULL;

추가는 "FromDate==" 및 "ToDate=="의 부호와 같습니까?

 
traveller00:

추가는 "FromDate==" 및 "ToDate=="의 부호와 같습니까?

불필요합니다.

 
안녕하세요. 멀티테스터를 표준 앞으로의 WFO로 사용하고 있지만 표준 1/4 기간 분할기로는 충분하지 않습니다. 귀하의 코드를 이해하고 멀티 테스터가 선물환의 날짜 필드를 채우도록 가르치려고하지만 OOP 지식 없이는 할 수 없습니다. MTTester 파일에서 Run() 함수에 도달했습니다. 더 이상 이해할 수 없습니다. 모든 매개 변수가 한 줄에 붙어 SetSettings2 및 SetSettings로 전달되어 곱해져 클립보드로 전달됩니다. 문자열에 다른 매개 변수가 나타나고 MultiTester가 데이터를 창에 삽입하는 경우 수정해야 할 다른 사항이 무엇인지 알려주시겠습니까? 창 핸들과 앞으로 날짜 텍스트를 하나 더 추가하겠습니다.
그리고 동시에 TesterSettings.Add() 함수에서 INITDEINIT fInit 및 INITDEINIT fDeinit의 목적에 대해 알려주세요.
 
Good Beer:
안녕하세요. 멀티테스터를 표준 앞으로의 WFO로 사용하고 있지만 표준 1/4 기간 분할기로는 충분하지 않습니다. 귀하의 코드를 이해하고 멀티 테스터가 선물환의 날짜 필드를 채우도록 가르치려고하지만 OOP 지식 없이는 할 수 없습니다. MTTester 파일에서 Run() 함수에 도달했습니다. 더 이상 이해할 수 없습니다. 모든 매개 변수가 한 줄에 붙어 SetSettings2 및 SetSettings로 전달되어 곱해져 클립보드로 전달됩니다. 줄에 다른 매개변수가 나타나고 멀티테스터가 데이터를 창에 삽입하는 위치에서 수정해야 하는 부분을 알려주실 수 있나요?

테스터->설정 탭에서 CTRL+C를 누른 다음 텍스트 편집기에서 CTRL+V를 누릅니다. 테스터의 모든 설정이 표시됩니다.

ForwardMode
ForwardDate

이 두 매개 변수는 포워드를 담당합니다(첫 번째 매개 변수가 4인 경우 두 번째 매개 변수가 관련됨).


테스터는 클립보드를 통해 테스터 설정을 관리하며, 텍스트 편집기에 표시되는 내용을 CTRL+V로 작성합니다.

 
fxsaber:


MTTester는 클립보드를 통해 테스터 설정을 관리하며, 텍스트 편집기에서 CTRL+V로 표시되는 내용을 작성합니다.

감사합니다.

작업은 간단합니다. 위에서부터 카운트하여 올바른 줄을 찾아 필요한 텍스트로 바꾸면 됩니다.

 
Good Beer:

작업은 간단합니다. 상단에서 올바른 줄을 찾아 필요한 텍스트로 바꾸면 됩니다.

줄 번호는 변경되지만 중요하지 않습니다.

  static bool Run( const string ExpertName = NULL,
                   const string Symb = NULL,
                   const ENUM_TIMEFRAMES period = PERIOD_CURRENT,
                   const datetime iBeginTime = 0,
                   const datetime iEndTime = 0,
                   const int ForwardMode = 0 )
  {
    string Str = "[Tester]\n";

    Str += (ExpertName != NULL) ? "Expert=" + ExpertName + "\n" : NULL;
    Str += (Symb != NULL) ? "Symbol=" + Symb + "\n" : NULL;
    Str += iBeginTime ? "FromDate=" + ::TimeToString(iBeginTime, TIME_DATE) + "\n" : NULL;
    Str += iEndTime ? "ToDate=" + ::TimeToString(iEndTime, TIME_DATE) + "\n" : NULL;
    Str += "ForwardMode=" + (string)ForwardMode + "\n";

    return(MTTESTER::SetSettings2(Str) &&
           MTTESTER::SetTimeFrame(period) && MTTESTER::ClickStart());