エラー、バグ、質問 - ページ 2291

 
Alexey Navoykov:

の場合、どのオブジェクトが上位か下位かをプログラム的に判断することはできません。

オブジェクトがテンプレートに格納される順序を調べてみるのもいいかもしれません。そこに収納されたものが後になればなるほど、他のものよりも高い位置にあると思うんです。
 

.ex5ライブラリは、ドキュメント- "Search for imported EX5 library in the following sequence: point 3 " にあるように、すべてのMetaTrader 5クライアントターミナルの共通ディレクトリ(CommonMQL5Libraries)にある場合は、読み込むことができません。

#import "Test.ex5"
        void f();
#import
void OnStart()
{
        f();
}

結果: ファイル 'Test.ex5' を開くことができません。

Test.ex5がCommonMQL5Librariesフォルダーにあるとき。

 
fxsaber:
オブジェクトがテンプレートに格納される順序を調べてみるのもいいかもしれません。そこに収納されたものが後になればなるほど、他のものよりも高い位置にあると思うんです。
あるオブジェクトを、保存されている順序に関係なく、他のすべてのオブジェクトの上に配置するには、まずすべてのタイムフレームでそのオブジェクトを非表示にし、次に再び表示させる必要があります
 
Tetyana Shcherba:

書き込む場所が適切かどうかわかりませんが、EAのパフォーマンスを監視する役割を果たす私のシグナルに、現実とは全く関係のない警告が表示されました。

""16日間で8割の利益を得た。これは信号の総寿命376日の4%にあたる。""


これはどうしたことか、私が何か勘違いしているのだろうか?

私も昨日気づきました。数式を直しているのでしょう。
 

最適化中に INIT_PARAMETERS_INCORRECT を返したパスは、ログに次のようなエントリーがあります。

Core 3  pass 90 tested with error "incorrect input parameters" in 0:00:00.000
Core 3  pass 91 tested with error "incorrect input parameters" in 0:00:00.125
Core 3  pass 92 tested with error "incorrect input parameters" in 0:00:00.141


同時に、なぜか最適化結果に表示される


スクリーンショットでは、利益順にソートされているのがわかりますが、不正解のパスはこのソートに屈しないようになっています。そのため、リストの下に移動すると、マイナスのパスではなく、不正なパスが表示されるのです。値ゼロは、本来、負のパスが存在しないことを示す。このGUIの動作に惑わされない限り、私はこれらの非常にネガティブなパスを見つけるためにスクロールしなければなりません。


以前は、OnInit と ExpertRemove の NULL は Optimization の結果に表示されませんでした。また、表示されていても、表の行は赤で表示されていた。この動作を復活させることは可能でしょうか?


XMLエクスポート時に、テーブルの一部の行がIncorrect resultsであるという情報を渡しますか?私の理解が正しければ、この正誤フラグは、まだ開かれていないopt-formatに 格納されています。

OnTesterPassで取得できるようになるといいですね。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

エラー、バグ、質問

fxsaber さん 2018.09.13 06:16

Optimisationの最後に、テスターはこのようなものを渡します。
Tester  optimization finished, total passes 691200 (successful 673286 passes)

Expertlは、最後まで到達したパスです。残りはExpertRemoveで中断されます。


TesterはAgentから受け取ったパスをどのフラグで分類していますか?OnTesterPassでこのフラグを読み取るにはどうすればよいですか?


また、Optimizationチャートでは、Incorrect passを表示しないようにするのが良いと思います。


 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

バグ、バグ、質問

fxsaber さん 2018.09.13 06:16

最適化終了後、テスターは次のように出力します。
Tester  optimization finished, total passes 691200 (successful 673286 passes)

Expertlは、最後まで到達したパスです。残りはExpertRemoveで中断されます。


テスターがサクセスドパスについて一言も言わないのは理解できない。

Tester  optimization finished, total passes 1800

ExpertRemoveの割り込みパスがありますが、最後の方の対応は上の引用文にあるように全くありません。

 
Slava:
あるオブジェクトを順序に関係なく他のすべてのオブジェクトの上に配置するには、まずすべてのタイムフレームでそのオブジェクトを非表示にし、その後再び表示させる必要があります
これについては、すでに前のページで書きました。問題は、これをどうやってプログラムで決定するかということでした。
 
Alexey Navoykov:
これについては、すでに最後のページで書きました。では、それをプログラム的にどのように判断するのか、という疑問は別にありました。
いいえ
 
コンパイルエラー
typedef void (*fn1)();
void f1() {}
void g()
{
        fn1 f = f1; //(1) нормально
}
/*...*/
typedef void (*fn2)();
void f2() {}
void OnStart()
{
        fn2 f = f2; //(2) Error: 'f2' - type mismatch
}

どんな違いがあるんだ!?

 
Slava:
いいえ
// В комментарии к чарту выводит текущую Z-глубину всех графических объектов чарта

#define private public
  #include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003
#undef private

#define  STRING_END "\r\n"
#define  OBJECT_NAME "name="
#define  OBJECT_BEGIN ("<object>" + STRING_END)

int GetZObjects( string &Names[], const long Chart_ID = 0 )
{
  const int Size = ArrayResize(Names, ObjectsTotal(Chart_ID));
  string Template = EXPERT::TemplateToString(Chart_ID);  
  
  for (int i = 0; i < Size; i++)
  {
    Template = EXPERT::StringBetween(Template, OBJECT_BEGIN);
    
    Names[i] = EXPERT::StringBetween(Template, OBJECT_NAME, STRING_END);
  }
  
  return(Size);
}

void OnChartEvent( const int id, const long&, const double&, const string& )
{
  if ((id == CHARTEVENT_OBJECT_CHANGE) ||
      (id == CHARTEVENT_OBJECT_CLICK) ||
      (id == CHARTEVENT_OBJECT_CREATE) ||
      (id == CHARTEVENT_OBJECT_DELETE) ||
      (id == CHARTEVENT_OBJECT_DRAG) ||
      (id == CHARTEVENT_OBJECT_ENDEDIT))
  {
    string ZObjects[];
    
    string Str = NULL;
    
    for (int i = GetZObjects(ZObjects) - 1; i >= 0; i--)
      Str += (string)i + " Z: " + ZObjects[i] + "\n";
      
    Comment(Str);
  }
}