エキスパート: トレーダーのためのMQL5プログラミング - 書籍からのソースコード。第7部 - ページ 5

 
thelux9 #:

これこそ私が必要としていたものだ。

このスレッドで公開された最新のものではありません。

 
直してください。
//+------------------------------------------------------------------+
//| optファイルを読み込んで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();
   }
};

extend()を 明示的に呼び出す必要がないので、より便利で論理的です。

注:添付ファイルには他にも有用な編集が含まれています。

ファイル:
OptReader.mqh  24 kb
 
Stanislav Korotky #:

ありがとう。少し違う形に直しました。

extend()を 明示的に呼び出す必要がないので、より便利で論理的だ。

注:添付ファイルには他にも有用な編集が含まれています。

ありがとうございます。
 

別のトピックからの転送

取引、自動取引システム、取引戦略のテストに関するフォーラム

CalendarRecordById.mq5 - エラー

Ryan L Johnson, 2025.12.19 17:44

MetaQuotesサポート、MQL5ブックのコンテンツで公開されている上記のカレンダーインジケーターには、非推奨のコードが含まれているようです。

このファイルは、Reading event records by ID - Advanced language tools - MQL5 Programming for Tradersで 参照されています。

ファイル自体はhttps://www.mql5.com/ja/code/download/45596/CalendarRecordById.mq5

もちろん、問題を再現するには、含まれているライブラリファイルをダウンロードする必要があります。

エラー

個人的には、私のコードで必要なものを得るために回避策を使用しました。ここでの私の目的は、ドキュメントを最新に保つことです。


 
Ryan L Johnson #:

別のトピックからの転送

もちろん、MQL5は常に変化しており、残念ながらMQはしばしばバックコンパチビリティを壊すような方法でこれを行います。これはプラットフォームを改善する適切な方法とは思えませんが、とにかく私たちにできる唯一のことは、新しい構文に従ってパッチで問題を修正することです。例えば、この場合は1行追加するだけだ:

struct MqlCalendarRecord: public MqlCalendarValue
{
   using MqlCalendarValue::operator=;
   ...
};
MQL5の構文の変更については、公式ニュースに従ってください。