ライブラリ: Report - ページ 9

 
link76:
MT4 バックテストで生成されたレポートに MagicNumber または Comment 列を追加できますか?

これらの列はレポートに存在します。

 

興味を持たれる方もいらっしゃるかもしれない。

レポートの上部にインタラクティブなグラフがある。これを拡大すると、「ズームをリセット」ボタンが表示される。この美しいグラフを左下 隅から右上隅まで一直線に並べたとすると、このボタンは最も興味深い場所、つまり最近のグラフの動きをブロックしてしまう。だからボタンを左に移動した。テンプレートのアライメントを右から左に変更した。

 
traveller00:

誰かが興味を持ってくれるかもしれない。

レポートの上部にインタラクティブなグラフがある。これを拡大すると、「ズーム・リセット」ボタンが表示される。この美しいグラフを左下から 右上への直線として見た場合、このボタンは最も興味深い場所、つまり最近のグラフの動きをブロックしてしまう。だからボタンを左に移動した。テンプレートのアライメントを右から左に変更した。

私はHTMLもスクリプトもまったく知らない。これらはすべて他のコードから拝借したものだ。

おそらく、すべての詳細とグラフを含む非常に便利なHTMLレポートを作ることは可能だろう。しかし、それは私の能力ではない。それに興味を持っている人に会ったこともない。

もちろん、MT4/5自体にレポートを出力するマーケット製品はある。

 
更新された。
 

念のため、includeは例で指定された順序で行わなければならないことに注意してほしい。

#include <MT4Orders.mqh> // https://www.mql5.com/ja/code/16006
// https://www.mql5.com/ja/code/22577
#include <Report.mqh>

そうしないと、ビルドには成功しても、defineの適用順序が間違っているために期待通りに動作しないことがあります。

 
#define  REPORT_REJECTS            // 取引注文の執行品質の分析.

これでFillRateのレベルがわかります。


キッチンではもちろん100%です。

 
fxsaber:

FillRate レベルが表示されるようになりました。

キッチンではもちろん100%です。

100%が100%のところはどこでも厨房らしい。例えば、Signalsのスキャルパーは、ほとんどそのような厨房で働いている。

 

それを使う過程で、2つの特徴が発見された。

1.ゲイングラフが常にゼロ。これはまだ作られていないからだ。これはあるべき姿である。

2.REPORT_REJECTSを使うことは、利食いによって 決済することを意味する。そして、統計はそこからしか取れません。リミッターとCloseByでクローズすれば、常に100%フィルを表示します。グラフはサーバーのレジェットを表示するだけで、リミットが設定されていても、最終的にそれが満たされず、ボットによってキャンセルされた場合は、フィルグラフには影響しません。

 

変更要求

1.ゲイングラフを削除。どうせ空なので、スペースを取らない。

2.日以内の時間間隔を追加。私は自分のために使っているが、もしかしたら他の誰かにとっても便利かもしれない。更新するたびに自分の変化を測定する必要もなくなるしね。

  datetime EndTime;
+  datetime StartInterval;
+  datetime EndInterval;
  bool Anonym;
  REPORT_FILTER( void ) : Symb(ALL_SYMBOLS), Magic(ALL_MAGICS), Pending(true), Balance(true), StartTime(0), EndTime(INT_MAX),
                          StartInterval(0), EndInterval(INT_MAX), Anonym(false), MinLot(0), NegativeSlip(false), MinPositionLength(0), Swap(false)
  bool IsSingle( void ) const
  {
+    datetime OrderTimeOnly=OrderOpenTime() % (60*60*24);
    return((OrderCloseTime() >= this.StartTime) && (OrderCloseTime() < this.EndTime) &&
+           (OrderTimeOnly >= this.StartInterval) && (OrderTimeOnly < this.EndInterval) &&
           (!this.NegativeSlip || this.IsNegative()) &&
           ((this.Balance && (OrderType() > OP_SELLSTOP)) || (((this.Pending && (OrderType() > OP_SELL) && (OrderType() < OP_BALANCE)) ||
 
traveller00:

2.日以内の時間間隔を追加する。僕は自分のために使っているんだけど、もしかしたら誰かの役に立つかもしれない。更新するたびに自分の変化を測る必要もなくなるしね。

あなたのバリアントでは、始値によってのみ動きます。これがBestIntervalアプローチの結果であることは明らかです。しかし、一般的なケースでは、それはおそらくかなり正しくありません。

とはいえ、このライブラリは2.5人が使っていることを考慮すると、「正しい」ものにする意味はない。このようなフィルターを導入する


また、インターバルが真夜中の場合、EndIntervalを設定するのはこの形式ではあまり便利ではない。