スクリプト: ThirdPartyTicks

 

ThirdPartyTicks:

サードパーティのチックアーカイブを扱うためのライブラリです。


作者: fxsaber

 

しかし、mt5のストラテジー・テスターはそのティック・データでは動作しません。:(

ティックデータからMT5用の人工的なシンボルを作成するスクリプトをコーディングして、この人工的なシンボル(複数可)をテストし、1つのローカルティックデータで最適化できるようにしていただけませんか?

== グーグル翻訳

しかし、MT5のストラテジー・テスターはティック・データでは動作しません。 :(

MT5 用の人工シンボルをティックデータから作成し、この人工シンボルを自分のローカルのティックデータを使用してテストおよび最適化できるようにするスクリプトをコーディングしていただけませんか?
 
Carl Schreiber:

しかし、mt5のストラテジー・テスターはそのティック・データでは動作しません。:(

ティックデータからMT5用の人工的なシンボルを作成し、この人工的なシンボルを1つのローカルティックデータでテストし、最適化できるようにするスクリプトを作成してもらえますか?

このスクリプトは、Strategy Testerでのテストに使用できるカスタムシンボルを 作成します。

 
//https://www.mql5.com/ja/code/20225
#include <fxsaber\ThirdPartyTicks\Web.mqh>
#include <fxsaber\ThirdPartyTicks\String.mqh>
#include <fxsaber\ThirdPartyTicks\Data.mqh>

struct SYMBOL_PROFILE 
{
  string Name;
  
  double BuyLots;
  double SellLots;
  
  bool operator ==( const SYMBOL_PROFILE &Value) const
  {
    return(this.Name == Value.Name);
  }
  
  string ToString( void ) const
  {
    return(this.Name + " +" + ::DoubleToString(this.BuyLots, 2) + " -" + ::DoubleToString(this.SellLots, 2));
  }
};

class SYMBOLS_PROFILE : public DATA<SYMBOL_PROFILE >
{
private:
  static const uchar CensoredURL[];
  
public:
  SYMBOLS_PROFILE( const string URL = NULL )
  {
    uchar Bytes[];
    
    if (WEB::Get(Bytes, (URL == NULL) ? ::CharArrayToString(SYMBOLS_PROFILE::CensoredURL) : URL))
    {
      string Str = ::CharArrayToString(Bytes);
      
      STRING::Between(Str, "<tbody>", "</tbody");
      STRING::Between(Str, "<tbody>", "</tbody");
      Str = STRING::Between(Str, "<tbody>", "</tbody");
      
      SYMBOL_PROFILE SymbProfile;
      
      while (::StringLen(Str) > 400)
      {
        SymbProfile.Name = STRING::Between(Str, "<td width=\"10%\">", "</td>");
        SymbProfile.BuyLots = (double)STRING::Between(Str, "<span>", "</span>");
        SymbProfile.SellLots = (double)STRING::Between(Str, "<span>", "</span>");
        
        this.Add(SymbProfile);
      }
    }
  }
  
  string ToString(void ) const
  {
    string Res = NULL;
    
    const uint Size = this.GetAmount();
    
    for (uint i = 0; i < Size; i++)
      Res += this[i].ToString() + "\n";
    
    return(Res);
  }
};

static const uchar SYMBOLS_PROFILE::CensoredURL[] =
{
  0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x72, 0x61, 0x6E, 0x6E, 0x66, 0x6F,
  0x72, 0x65, 0x78, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x72, 0x75, 0x2F, 0x73, 0x68, 0x6F,
  0x77, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x2F
};

// プロフィール
void OnStart()
{
  SYMBOLS_PROFILE Symbols;
  
  Print(Symbols.ToString());
}


結果

AUDCAD +0.06 -0.00
AUDCHF +0.02 -0.03
AUDUSD +0.05 -0.04
CADCHF +0.02 -0.03
CHFJPY +0.00 -0.01
DAX30 +0.00 -0.10
DJI30 +0.90 -0.00
EURAUD +0.16 -0.08
EURCAD +0.12 -0.00
EURCHF +0.00 -0.03
EURGBP +1.35 -19.99
EURJPY +0.00 -0.28
EURNZD +0.10 -0.00
EURRUB +0.00 -0.02
EURUSD +0.29 -0.19
GBPAUD +0.04 -0.03
GBPCAD +0.22 -0.54
GBPCHF +0.00 -0.06
GBPNZD +0.00 -0.05
GBPUSD +0.02 -0.02
NZDCAD +0.00 -0.01
NZDUSD +0.00 -0.01
USDCAD +0.09 -0.01
USDCHF +0.05 -0.01
USDJPY +0.15 -0.02
USDRUB +0.00 -0.02
USDZAR +0.00 -0.01
XAGUSD +0.00 -0.01
XAUUSD +0.02 -0.00
XBRUSD +0.00 -0.10
 

ThirdPartyTicks-quotesで、このライブラリの 助けを借りて指値注文のスリッページを無効にしない場合、テスターで次のような画像が得られます。

final balance 10005004.00 RUR
OnTester result 10004391
2018.04.04 23:59:57   deal #397 balance -613.00 [withdrawal] done
TESTER_Censored,M1: 6268667 ticks, 57486 bars generated. Environment synchronized in 0:00:00.468. Test passed in 0:00:03.416 (including ticks preprocessing 0:00:00.811).
TESTER_Censored,M1: total time from login to stop testing 0:00:03.884 (including 0:00:00.468 for history data synchronization)

すなわち、利益は5004ピップスであり、631ピップス(8ピップスごと)はテスターからの「ボーナス」である。


指値注文のスリッページを無効にした場合。

final balance 10004391.00 RUR
OnTester result 10004391
TESTER_Censored,M1: 6268667 ticks, 57486 bars generated. Environment synchronized in 0:00:00.031. Test passed in 0:00:03.432 (including ticks preprocessing 0:00:00.827).
TESTER_Censored,M1: total time from login to stop testing 0:00:03.463 (including 0:00:00.031 for history data synchronization)

ボーナス」はありません。

SlipPage
SlipPage
  • 投票: 20
  • 2016.08.25
  • fxsaber
  • www.mql5.com
Проскальзывания при исполнении ордеров вносят несистемные прибыль/убыток. Данный скрипт выводит величины этих проскальзываний в валюте счета. Можно оценить качество исполнения ордеров торговавшей ТС — вклад несистемных проскальзываний в ее мат. ожидание. Тестер в режиме...
 

MOにキャスト・キャラクターを使うということですが、もう少し詳しく教えてください。

現在のバージョンでは裁定取引だと理解しています。あるいは、他のデータをロードするオプションはありますか?

また、別のオープン・リアルタイム・ターミナルからデータをロードすることにも興味があるのですが、ライブラリを通してこれをより正しく実装するにはどうすればよいでしょうか?

 
Maxim Dmitrievsky:

MOにキャストを起用するとおっしゃっていましたが、もう少し詳しく教えてください。

私はMoDに歴史を提案しました。説明はしていません。カスタム記号はMQLとテスターで同時に使えるので便利です。

現在のバージョンでは裁定取引だと理解しています。それとも他のデータをロードするバリエーションがあるのでしょうか?

現在のバージョンとは?私自身は他のソースを使う理由が見当たりません。

また、別のオープンターミナルからリアルタイムでデータをロードすることにも興味があります。

リアルタイムのカスタムは非常に簡単に実装できます。例えば、リアルタイムのEquity-symbol(自動的に生成されるM1と "tick "履歴付き)は、純粋なMQLで5~10行のコードで作成できます。

私自身は今のところ、Tester/OptimiserをベースにTSを作成するためだけにカスタム・シンボルを使用しています。この目的のために、私はこのツールキットをソースとして使用しています。

私は他のツールを使ってTester/Optimiserのスピードアップと調整を行っています。

 
fxsaber:

現在のバージョンとは?他の情報源を使う理由が見当たらない。

現在のバージョン - サードパーティのソースからの引用を使用するという意味では、いくつかのマクロ経済指標などを追加することは可能ですが、これはMoDのための研究の主題に過ぎません。

しかし、異なる相場での裁定取引(多通貨テスト)については、非常に興味深く、興味深いモデルを書くことができるが、これも研究課題である。

また、任意の分布の値をカスタム・シンボルに 変換するアイデアもある。)

 
Maxim Dmitrievsky:

現在のバージョン-第三者ソースの引用を使うという意味で、マクロ経済指標などを詰め込むことは可能だが、これはあくまで国防総省の研究課題である。

しかし、異なる相場での裁定取引(多通貨テスト)については、非常に興味深く、興味深いモデルを構築できるが、これも研究課題である。

また、任意の分布の値をカスタム・シンボルに変換するアイデアもあります...しかし、それをどのように応用するかも研究課題です :)

このスレッドはカスタム・シンボルの使用方法についてではありません。ここにあるのは、まさにこれらのシンボルの形をしたサードパーティのティック履歴 です。

そして、なぜそれが選ばれたのか - 説明を見てください。

 
fxsaber:

このスレッドは、結局のところ、カスタムシンボルの使用方法についてではない。ここにあるのは、まさにこれらのシンボルの形をしたサードパーティのティック履歴に 過ぎない。

そして、なぜそれが選ばれているのか - 説明を見てください。

ただ声を大にして考えているだけです、すみません、私は以前の投稿を削除することができます、私はすべきでしょうか?)