無料でロボットをダウンロードする方法を見る
Telegram上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
ライブラリ

シングルテスター・キャッシュ - MetaTrader 5のためのライブラリ

ビュー:
70
評価:
(16)
パブリッシュ済み:
2025.04.03 11:15
\MQL5\Include\fxsaber\SingleTesterCache\
String.mqh (1.79 KB) ビュー
\MQL5\Scripts\fxsaber\ \MQL5\Include\
MQL5フリーランス このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

このライブラリを使用すると、tstファイル(MT5-Testerシングルパス・フォーマット)を読み書きできます。


いくつかの使用方法

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

    MetaTrader 5プラットフォームベータビルド2155:MQL5の可視性の領域、戦略テスターと内蔵ホスティングのグローバルアップデート

    fxsaber、2019.10.04 07時18分。

    tstファイルのフォーマットを開き、テスターのキャッシュフォルダをサンドボックスに置くと、テスター結果の分析/修正ツールとなる新しいタイプのマーケット商品を作成することができます。


    例えば、キャッシュ内で利用可能な全てのシングルパスを表示するMarket-combineを作成することができます。

    • 必要なものをマウスで選択すると、結合された統計が表示されます。
    • 不要なパスからキャッシュを削除します。
    • パスから適切な加重係数を用いて最適なポートフォリオを計算します。
    • 各パスの最適な取引間隔を表示します。
    • フィルタを含む統計の独自のインタラクティブな視覚化を提供します。
    • 最適なMMを計算します。
    • 履歴の各ヘッジ・ポジションについて、OrderOpenPriceBest(ポジション存続期間中の最良の始値)、OrderClosePriceBest(類似)、OrderOpenPriceLength(ポジション存続期間中、価格がOrderOpenPriceより悪くならなかった期間)、OrderClosePriceLength(類似)、OrderProfitBest(元のポジション存続期間中、類似ポジションの可能な最高利益)を表示。
    • 各ヘッジポジションの効率を表示します。
    • レイテンシーが有効な場合の結果を計算します。
    • 異なる注文執行 設定(スライドするかどうかなど)と手数料での結果を計算します。
    • 異なるティック履歴でのTSの結果を表示します。
    • ...

    各項目を実装するためにテスターを起動する必要はありません。

    キャッシュフォルダをmklink経由でサンドボックスに入れれば、これらすべてが今すぐできる。必要なのはtst-formatだけだ。

    自分に力を感じる人は、このような製品を書き始めるべきだろう。私は喜んでその開発者のチームに参加し、購入するだろう。ニッチは完全に空いている。


    もしcache-folderがサンドボックス化されなければ、他の言語で書かれた同様の製品がMQエコシステムの外に現れる可能性が高まるかもしれない。


    例:

    #include <fxsaber\SingleTesterCache\SingleTesterCache.mqh> // テスターのシングルパスデータ。
    
    void OnStart()
    {  
      SINGLETESTERCACHE SingleTesterCache; // テスターキャッシュオブジェクトを作成しました。
      
      SingleTesterCache.Set(); // 入札の本当のストーリーを入れよう。
      
    // .. \MQL5Files/Test.tst.
      Print(SingleTesterCache.Save("Test.tst")); // テスターにインポートできるファイルに書き込む。
    }

    このスクリプトは、リアル口座の取引履歴をtst形式に整理します。このスクリプトは以下のようにTesterにインポートされる。


    このようになる。


    DLL-ソリューションはKBに入れることができないので、以下はKB配信には含まれない別のスクリプトのソースコードです。

    #include <fxsaber\SingleTesterCache\SingleTesterCache.mqh> // テスターのシングルパスデータ。
    
    #include <Graphics\Graphic.mqh>
    #include <fxsaber\MultiTester\MTTester.mqh> //https://www.mql5.com/ja/code/26132
    
    #define  MIN_WIDTH 10
    
    // グラフを作成する。
    string GraphPlot( const double &Y1[], const double &Y2[],
                      int Width = 0, int Height = 0, const ENUM_CURVE_TYPE Type = CURVE_NONE,
                      const string CurveName1 = NULL, const string CurveName2 = NULL, string ObjName = NULL )
    {
      Width = Width ? Width : (int)::ChartGetInteger(0, CHART_WIDTH_IN_PIXELS);
      Height = Height ? Height : (int)::ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS);
      ObjName = (ObjName == NULL) ? __FUNCTION__ : ObjName;
    
      CGraphic Graphic;
    
      const bool Res = (::ObjectFind(0, ObjName) >= 0) ? Graphic.Attach(0, ObjName) : Graphic.Create(0, ObjName, 0, 0, 0, Width, Height);
    
      if (Res)
      {
        const int Size1 = ::ArraySize(Y1);
        const int Size2 = ::ArraySize(Y2);
    
        Graphic.CurveAdd(Y1, ((Type == CURVE_NONE) && Size1) ? ((Width / Size1 < MIN_WIDTH) ? CURVE_LINES : CURVE_POINTS_AND_LINES) : Type, CurveName1);
        Graphic.CurveAdd(Y2, ((Type == CURVE_NONE) && Size2) ? ((Width / Size2 < MIN_WIDTH) ? CURVE_LINES : CURVE_POINTS_AND_LINES) : Type, CurveName2);
    
        Graphic.CurvePlotAll();
        Graphic.Update();
      }
    
      return (Res ? Graphic.ChartObjectName() : NULL);
    }
    
    void OnStart()
    {  
      uchar Bytes2[];
      
      if (MTTESTER::GetLastTstCache(Bytes2) != -1) // 1回の実行の最後のキャッシュ・レコードを読むことができる場合
      {
        const SINGLETESTERCACHE SingleTesterCache(Bytes2); // それを対応するオブジェクトに打ち込む。
    
        SingleTesterCache.SaveSet(NULL, true, "Created by " + __FILE__); // セットファイルを詳細とともに保存する。
        
        double Balance[];
        double Equity[];
      
        // バランス・チャートとエクイティ・チャートを印刷する。
        if (SingleTesterCache.GetBalance(Balance) && SingleTesterCache.GetEquity(Equity))
          GraphPlot(Balance, Equity, 1200, 500, CURVE_NONE, "Balance", "Equity");
          
        Print(SingleTesterCache.Header.ToString());  // シングルパスのヘッダーを出力する。
        Print(SingleTesterCache.Summary.ToString()); // Statistica.
        Print(SingleTesterCache.Inputs);             // 入力パラメータ。
      }
    }


    このスクリプトは、最後のシングルパスのデータを自動的にピックアップし、バランス/エクイティグラフを含むそのデータを出力します。


    謝辞

    テスター・キャッシュを作成し、そのフォーマットの解凍を手伝ってくれた開発者に感謝する。

    MetaQuotes Ltdによってロシア語から翻訳されました。
    元のコード: https://www.mql5.com/ru/code/27611

    書籍「MQL5を使用したアルゴリズム取引のためのニューラルネットワーク」からの例 書籍「MQL5を使用したアルゴリズム取引のためのニューラルネットワーク」からの例

    本書「MQL5を使用したアルゴリズム取引のためのニューラルネットワーク」は、人工知能とニューラルネットワークの理論的基礎と、MQL5プログラミング言語を使った金融取引への応用の実践的側面の両方を網羅した包括的なガイドブックです。

    トレーダーのためのMQL5プログラミング - 書籍からのソースコード。第7部 トレーダーのためのMQL5プログラミング - 書籍からのソースコード。第7部

    本書最後となる第7部では、MetaTrader 5のプログラムを開発する際に役立つMQL5 APIの高度な機能について説明します。これには、カスタム金融銘柄、組み込みの経済指標カレンダーイベント、およびネットワーキング、データベース、暗号化などの汎用テクノロジーが含まれます。

    カレンダー カレンダー

    カレンダー - 歴史とリアルタイムのファンダメンタル分析。

    新しいバーやローソク足の始まりを検知する 新しいバーやローソク足の始まりを検知する

    Expert AdvisorのOnTick()イベントハンドラで新しいバーまたはローソク足の開始を検出する。