私たちのファンページに参加してください
- ビュー:
- 23
- 評価:
- パブリッシュ済み:
- 2025.04.04 10:54
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
MT4Orders またはVirtualを介して 実装されたMT4スタイルの取引コマンドのためのReport ライブラリの高速JavaScriptバージョン。
動作はReportの最大10倍速く、NTMLファイルサイズは小さく、最大540万行のレポートをアップロードして表示できます(以下のスクリーンショット)。
機能:(Reportと同じ)
- MT4、MT5、テスターまたはバーチャル・テスターで 執行された取引を表示します。
- チャートを表示
- レポートを含むHTMLファイルをブラウザで開きます(DLLの使用許可と#define REPORT_BROWSERコマンドが必要です)。
レポートとの違い
- MT5側のコードでは、レポート用のすべてのデータは、HTMLコードで行を組み立てることなく、直ちに配列としてファイルに出力されます。この結果、速度が大幅に向上し、ファイルサイズが削減されます。
- 統計の計算、チャート作成、取引行を含むHTMLコードの生成は、ブラウザ側のJavaScriptコードで行われます。必要なページを表示するページネーターが作られる。
- チャートは、ディール番号による均一なスケールではなく、時間スケールでディールを表示する。したがって、あるExpert Advisorが1週目に1000件の取引を行い、さらに52週間活動していないことがわかる。
同じ取引が両方のチャートに配置されています。
上のチャートは、(MetaQuotesテスターが現在表示しているように)取引間のステップを統一して 作成されています。期待できそうだ。
下のチャートは時間スケールで 作成され、Expert Advisorが5年間で数週間しか取引していないことを示しています。
下のチャートによると、最初のうちは2年間取引がなく、その後数週間の取引があり、その後また2年半取引がないことが一目瞭然である。このような取引は、最初のチャートから受ける印象ほど面白いものではない。 - スリッページなし、手数料なし、手数料とスリッページなしのオプションによる残高チャートを、同じオプション(残高操作なし)による利益チャート(P/L)に置き換えた。
- 残高操作の入出金を表示する別の残高チャートを追加しました。これにより、P/Lチャート上の取引操作と、残高操作による取引金額を別々に確認することができます。
- 任意のチャートをクリックすると、インタラクティブなGoogle.chartsが開きます。そこで拡大し、取引の詳細を見ることができます。4つのP/Lチャートに10万件の取引が10秒間表示されています。
-
TurnOverチャートは、買いと売りのP/Lとその金額が表示されたチャートに置き換えられています。このようにして、あなたのストラテジーが強気なのか弱気なのかを理解することができます。利益が出ない場合は、取引方向の1つをオフにすることもできます。レートが上がれば買いが利益を生み、レートが下がれば売りが損失を生む。複数の商品がある場合、価格が一緒に表示されてしまうので、フィルターで1つの商品だけを選択し、その価格だけを見るようにするとよいでしょう。
-
スリッページのチャートと、始値、終値の累積スリッページとその合計を追加。このアイデアはここhttps://www.mql5.com/ru/blogs/post/760817 から引用した。
- レポートの列を少し並べ替えましたが、Report-e のように並べ替えるチェックボックスがあります。慣れている方は、こちらをご覧ください。
- バーチャルで作業している場合、QuickReportを複数回呼び出して、各バーチャル(複数ある場合)や実際のMT5テスターのレポートを作成することができます。
使用例:
- MT4Orders
を使用した簡単なもの。#include <MT4Orders.mqh> #define REPORT_BROWSER // Open report in browswer automatically. Require DLL. //#include <Report.mqh> #include <MT4Orders_QuickReport.mqh>// void OnInit(){} void OnTick(){ strategy (); } void OnDeinit(const int reason ){ QuickReport("report", true); } int TimeHour ( datetime time ){return((int)((time / 3600) % 24));}//日中の現在時刻。毎時3600秒 void strategy (){ string Symb = _Symbol; MqlTick Tick; if (SymbolInfoTick(Symb, Tick)){ if(TimeHour(TimeCurrent())<23 && TimeHour(TimeCurrent())>0 ){return;} OrderSend(Symb, OP_BUY, 10, Tick.ask, 0, Tick.bid, Tick.bid, NULL, 1000); OrderSend(Symb, OP_SELL, 10, Tick.bid, 0, Tick.ask, Tick.ask, NULL, 1000); } }
- 大規模なテストコード
- バーチャルを使用した単純なもの
#include <MT4Orders.mqh> #include <fxsaber\Virtual\Virtual.mqh> #define REPORT_BROWSER // Open report in browswer automatically. Require DLL. //#include <Report.mqh> #include <MT4Orders_QuickReport.mqh> double OnTester() { //or OnDeinit() for (int v = 0 ; v <= VIRTUAL::Total(); v++){if (VIRTUAL::SelectByIndex(v)){QuickReport("report_"+(string)v, true, v);}} //各テスターのレポートを表示する return(AccountInfoDouble(ACCOUNT_BALANCE)); }
- コールパラメータの説明
void QuickReport(string file_name, bool is_open_file_in_browser=true, int virtual_number=0, bool hide_account_and_name=false, bool common_path=false, bool fileANSI=true){...}
file_name - 記録用のファイル 名
is_open_file_in_browser - 計算が完了すると自動的にブラウザでファイルを開きます(DLL のパーミッションが必要)。
virtual_number - (Virtual で動作させるため) 仮想テスターの番号 (-1 - 自動的に決定、0 - MT5 テスター、>0 - 仮想テスター)
hide_account_and_name - 口座番号と名前を隠す
common_path - 端末の共通フォルダーに保存。最適化中に他のエージェントによってファイルが上書きされるのを防ぐため、ファイル名にエージェント番号 (3000, 3001,...) が追加されます。
fileANSI - ANSI エンコーディングまたは UNICODE で保存します。UNICODEファイルのサイズは2倍大きく、処理に時間がかかるので、例えば1GBのような大量のデータをアップロードする場合は、ANSIを使用した方が経済的です。UNICODEが必要な場合は、サードパーティ・サービスとの互換性のために追加されます。
540万トランザクションのレポート例:
( 私のコンピュータでは10万行を超えるレポートがある仮想は、すべてのメモリを消費し、ハングアップします。このため、JavaScriptバージョンを作りました)。
このレポートはFirefoxで表示されました。Chromeはハングアップするため、より小さなファイルを必要とする。
540万行以上をファイルにアップロードできるが、Firefoxブラウザはそれ以上処理できない。
このレポートをロードする際、ブラウザは約6GBのメモリーを使用し(処理時間は約1分)、その後解放され、レポートがページに表示される:(レポートは8-10万行から5-6GBを使用)。
任意のチャートをクリックすると、そのチャートのインタラクティブ・チャートが表示され、ズームインして詳細を見ることができます。
オプションは2つある:
- デフォルトは無料のGoogle.charts
- Highchartsを 接続することもできます。Highchartsは 商用製品で、より高速で便利ですが、プログラマーが開発中に無料で使用できるだけで、プロジェクトや製品をリリースする際にはライセンスを購入し、毎年更新する必要があります。詳しくはこちらhttps://shop.highcharts.com/
Logarithmic -対数 スケールを選択できます。Highchartsでは、さらにOrdinal - 一様ステップ(MetaQuotesのテスターレポートのように)を選択できます。
Google.chartの 例 : (マウスホイールでズーム).
Highchartsの 例 : (マウスで必要な領域を選択してスケールを変更)。
実行された MT5 保留注文
未決注文がトリガーされた結果表示された注文については、[Type] フィールドに未決注文の種類 (Buy limit、Sell limit、Buy stop、Sell stop)、設定から注文がトリガーされるまでの時間 (秒)、有効化された注文/ポジションの種類が紺色で表示されます。この情報はMT5ターミナルまたはテスターにのみ表示されます。バーチャルテスターまたはMT4ではこの情報は提供されません。
時間別および曜日別の損益グラフ。
MQテスターとは異なり、利益と損失は発生した時点ではなく、取引をエントリーした時間ごとに表示されます。これにより、ある時間帯のエントリーはほとんど利益にならないことを理解しやすくなり、単純にこの時間帯のエントリーをオフにすることができます。
さらに、売買のチャートも作成した。
これらのチャートのどれかをクリックすると、時間別、日別の正確な金額の表が表示される。また、入力から時間と日を無効にするためのチェックボックスもあります - チャートと表は再構築され、追加テストなしで結果を評価することができます。これはFxsaberのBestIntervalの アナログですが、より粗く(1時間のステップ)、自動化されていません。ステップを減らすために M10 インターバルが追加された。
これらのチャートでは、1時間足や1日足で、小さなテスト期間でも利益が出ることがある。上のチャートは、上昇トレンドの1ヶ月間のテストである。つまり、買いは利益、売りは損失である。テスト期間を1年以上に延ばすと、双方向の大きなトレンドが何度か通過することになり、すべてが均等にまぶされ、通常は利益が出なくなる。
同じストラテジーで1年間テストした結果がこれだ。
そのため、戦略の基本にはなりにくい。
注文のフィルタリング。
さまざまなパラメータで注文を表示するフィルターが追加された。
Buy、Sell、Buy limit、Sell limit、Buy stop、Sell stop、Balance - レポートからあらゆるタイプの注文を削除することができます。
Symbols - 使用されている商品の全リストを表示し、必要なものだけを選択することができます。
Magic - 指定されたマジックの注文のみを表示することができます。
Min Lot, Max Lot - 必要なロットの注文を選択することができます。
Negative Slippage - 新規注文または決済注文とは別に、マイナスのスリッページがある注文を表示することができます。
Swap - スワップ > 0 の注文を表示します。0
Min LengthTime - 指定した時間 (日、時、分、秒) 以上の注文
Max LengthTime - 指定した時間未満の注文
Open Time - 指定した日時から注文が開始された時間
Close Time - 指定した日時から注文が終了した時間
TP、SL - TPまたはSLが発動して終了した注文
Profits, Losses - 利益または損失のある注文 (手数料とスワップは含まれません。最終利益がマイナスになる可能性があります)
Rejects - 未約定の注文。
Reset]ボタンをクリックすると、フィルターを初期値にリセットし、フィルターなしですべての注文を表示できます。
追加オプション:
- フォワードテストの開始日を指定できます。フォワードテストが適用されると、フルプロット、指定日前のプロット (BackTest) および指定日後のプロット (ForwardTest) の統計が計算されます。グラフには、この日付の垂直線が表示されます。
- 古い列の並び順 - 列の並び順はレポート・ライブラリのように並び替えられます。
追伸:取引に関するコメントが多いほど、表示できる行数が少なくなります。540万行のレポートには「テスト終了」以外のコメントがなかった。したがって、レポートが400万以上の取引になる場合は、コメントを付けない方がよい。
追伸:MT5でもMT4でも動作します。MT4用に修正してくれたfxsaberに感謝する。
改善オプション:
- レポートをバイナリファイルにアンロードしてブラウザで読んでみると、540万行という大きな行数でも動作するかもしれません。しかし、その場合、セキュリティ上の制限により、手動でバイナリファイルを選択する必要があります。つまり、テストの直後にレポートを自動的に開くことはできません。
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/47816

標準インディケータiCHO(Chaikin Oscillator, CHO)とカスタムインディケータ'CCIDualOnMA'に基づく戦略

CDialogクラスをベースにしたパネル。現在のシンボルでの作業。ポジショングループの削除、利益確定、ブレークイーブンの設定