Experts: MQL5 Programming for Traders – 책의 소스 코드. 파트 7 - 페이지 5

 
thelux9 #:

이것이 바로 저에게 필요한 것이었습니다.

이 스레드에 게시된 가장 최근 업데이트가 아닌 최신 업데이트를 인용하셨으니 최신 업데이트를 받으셨는지 확인하시기 바랍니다.

 
수정해 주세요.
//+------------------------------------------------------------------+
//| 옵파일을 읽고 CSV로 내보내는 메인 클래스 ||
//+------------------------------------------------------------------+
class OptReader
{
   TesterOptCacheHeader header;
   TestCacheInputExtended inputs[];
   uchar bufferOfInputs[];
   int shapshot[];
   AutoPtr<RecordBase> records;
   
   bool read(const int handle)
   {
      SAFE(FileReadStruct(handle, header));
      if(header.parameters_total)
      {
         TestCacheInput temp[];
         SAFE(FileReadArray(handle, temp, 0, header.parameters_total));
         const int n = ArrayResize(inputs, header.parameters_total);
         for(int i = 0; i < n; ++i)
         {
            inputs[i] = temp[i]; // 매개변수 'TestCacheInput'을 'const TestCacheInputExtended&'로 변환할 수 없습니다.
            inputs[i].extend();
         }
      }


//+------------------------------------------------------------------+
//| 문자열화된 필드가 있는 입력 구조체 |
//+------------------------------------------------------------------+
struct TestCacheInputExtended: public TestCacheInput
{
   using TestCacheInput::operator=;
 
fxsaber #:
수정해 주세요.


고마워요. 조금 다르게 수정했습니다.

struct TestCacheInputExtended: public TestCacheInput
{
   ...   
   void operator=(const TestCacheInput &other)
   {
      TestCacheInput::operator=(other);
      extend();
   }
};

확장() 을 명시적으로 호출할 필요가 없으므로 더 편리하고 논리적입니다.

참고: 첨부 파일에 다른 유용한 수정 사항이 포함되어 있습니다.

파일:
OptReader.mqh  24 kb
 
Stanislav Korotky #:

감사합니다. 조금 다르게 수정했습니다.

확장() 을 명시적으로 호출할 필요가 없으므로 더 편리하고 논리적입니다.

참고: 첨부 파일에 다른 유용한 수정 사항이 포함되어 있습니다.

이제 훨씬 더 실용적입니다.
 

다른 주제에서 전달되었습니다:

트레이딩, 자동매매 시스템, 트레이딩 전략 테스트 포럼

CalendarRecordById.mq5 - 오류

라이언 L 존슨, 2025.12.19 17:44

메타쿼츠 지원팀, MQL5 책 콘텐츠에 게시된 위에 참조된 캘린더 표시기에 더 이상 사용되지 않는 코드가 포함된 것 같습니다.

이 파일은 ID로 이벤트 레코드 읽기 - 고급 언어 도구 - 트레이더용 MQL5 프로그래밍에서 참조할 수 있습니다.

파일 자체는 https://www.mql5.com/ko/code/download/45596/CalendarRecordById.mq5 에 있습니다.

물론 문제를 재현하려면 포함된 라이브러리 파일을 다운로드해야 합니다.

오류

개인적으로 저는 코드에서 필요한 것을 얻기 위해 해결 방법을 사용했습니다. 여기서 제 목적은 문서가 최신 상태로 유지되도록 하는 것입니다.


 
Ryan L Johnson #:

다른 토픽에서 전달되었습니다:

물론 MQL5는 끊임없이 변화하고 있으며, 안타깝게도 MQ는 종종 이전 버전과의 호환성을 깨뜨리는 방식으로 이를 수행합니다. 이것이 플랫폼을 개선하는 적절한 방법은 아니라고 생각하지만 어쨌든 우리가 할 수 있는 유일한 방법은 새로운 구문에 따라 패치를 통해 문제를 해결하는 것입니다. 예를 들어, 이 경우에는 한 줄만 추가하면 됩니다:

struct MqlCalendarRecord: public MqlCalendarValue
{
   using MqlCalendarValue::operator=;
   ...
};
MQL5 구문 변경에 대한 공식 뉴스를 따르세요.