ライブラリ: エキスパート - ページ 12

 
Expert AdvisorがDLLをロードする必要がある場合、このチェックボックス自体にチェックは入らないのですか?Expertmodeのようです。インターフェースが見当たりません。自分でコードやテンプレートを編集する必要がありますか?
 
traveller00:
Expert AdvisorがDLLをロードする必要がある場合、このチェックボックス自体にチェックは入らないのですか?Expertmodeのようです。インターフェースが見当たりません。自分でコードやテンプレートを編集する必要があるのでしょうか?

上にDLLを使った例がありました。

 

Parametersメソッドのリターンコードのセマンティクスを明確にしたいと思います。現在、テンプレートで文字列を受け取る際にエラーがある場合、メソッドは0を返します。

それ以外の場合、戻り値は文字列です:

Res = (int)EXPERT::StringBetween(Str, EXPERT_FLAGS, STRING_END);

つまり、テンプレートからexpertmodeの値が返されます。EXPERTは 他のプロジェクト、特にTesterで このように 使用されています

void OnTimerReal()
{
  ...
  if ((this.Symb += BeginTick) && EXPERT::Parameters(0, Params, Names))
  {
    ... открытие рабочего чарта
  }
}

その結果、メソッドが0を返すとTesterは動作しません。なぜでしょうか?実際の取引フラグがリセットされたとしても、テストが禁止されるべきだということにはなりません。さらに、Testerはこの場合何もしません。

 
Stanislav Korotky:

Parametersメソッドのリターンコードのセマンティクスを明確にしたいと思います。現在、テンプレートで文字列を受け取る際にエラーがあった場合、メソッドは0を返します。

戻り値は最初の出版物から変更されています。つまり、歴史的には、戻り値はそこにエラーがあるかどうかについては何も語らないことが判明しています。

他のすべてのケースでは、戻り値は文字列である:

つまり、テンプレートにあるエキスパートモードの値が返される。他のプロジェクト、特に Tester では、EXPERT は このように 使用されます

その結果、メソッドが0を返すとTesterは動作しません。なぜか?実際の取引フラグがリセットされても、テストが禁止されるわけではありません。特にこの場合、Testerは黙って何もしません。

引用されたコードによると、確かに自動売買が無効になっていると動作しません。それがエラーなのか意図的なのかは覚えていない。おそらく、DLLを接続できるようにするためにわざとやったのでしょう。


ZЫ バイブルを更新しなければなりませんね。シーケンスとの共有には強い工夫がある。この機能が必要なのは自分だけなので、アップデートの優先順位は低い。

 

無限ループの検出が 機能したのは、この時だけだった。

ME      3       15:22:12.123    Message Endless loop:
KS      3       15:22:12.123    Message Expert.mqh
IP      3       15:22:12.123    Message 169
DG      3       15:22:12.123    Message bool EXPERT::TemplateApply(const long,const string&,const bool)
FQ      3       15:22:12.123    Message Condition: !::IsStopped()&&::ChartGetInteger(Chart_ID,CHART_COLOR_STOP_LEVEL,0,Value)&&(!(bool)((int)Value>>24))


この時はExpert.mqhで起きた。

      while (_CS(!::IsStopped() && ::ChartGetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL, 0, Value) && (!(bool)((int)Value >> 24))))
        ::Sleep(1); // https://www.mql5.com/ru/forum/170952/page190#comment_18830346


Expert.mqhは毎日積極的に使っているのだが、これに遭遇したのは初めてだ。どうやら非常に稀な状況があるようだ。覚えておいてほしい。

 
素晴らしい出来ですが、今はデフォルトのプリセットでエキスパートをロードするのでしょうか?また、選択したエキスパートのSETファイルを読み込むことができればいいのですが......。
 

EXPER.mqhは素晴らしいです。

1.EXPERT::Run(...)で開いたEAの「アルゴ取引」を有効にするにはどうすればよいですか

2.私は2019バージョンを使用しています。新しいバージョンはありますか?

 
upinsa #:

1.EXPERT::Run(......)で開いたEAで「アルゴ取引」を有効にするには?

こちらを お読みください。

2.2019バージョンを使用しています。新しいバージョンはありますか?

最後のバージョンです。


 
static bool GetInputNames( MqlParam &Parameters[], string &InputNames[] )
  {
    const int Size = ::ArraySize(Parameters);
    bool Res = (Size > 1);

    if (Res)
    {
      ::ArrayResize(InputNames, Size - 1);

      for (int i = 1; (i < Size) && Res; i++)
      {
        InputNames[i - 1] = EXPERT::GetInputName(Parameters[i]);
        Res &= (InputNames[i - 1] != NULL);
      }
    }

    return(Res);
  }

入力グループ「【ラベル1】」;

この状況は考慮されていないようです。パラメータがグループの場合、具体的な値はなく、受信した値はnullとなるため、グループ以降のパラメータは受信されません。

 
hini #:

入力グループ「【label1】」;

この状況は考慮されていないようです。パラメータがグループの場合、具体的な値はなく、受信した値はnullとなるため、グループ以降のパラメータは受信されません。

もし問題があれば、再現可能な mq5 ファイルをください。