//---ティックデータをランダムに入れ替える
tempvalue.bid_d=m_differenced[i].bid_d;
tempvalue.ask_d=m_differenced[i].ask_d;
tempvalue.vol_d=m_differenced[i].vol_d;
tempvalue.volreal_d=m_differenced[i].volreal_d;
m_differenced[i].bid_d=m_differenced[j].bid_d;
m_differenced[i].ask_d=m_differenced[j].ask_d;
m_differenced[i].vol_d=m_differenced[j].vol_d;
m_differenced[i].volreal_d=m_differenced[j].volreal_d;
m_differenced[j].bid_d=tempvalue.bid_d;
m_differenced[j].ask_d=tempvalue.ask_d;
m_differenced[j].vol_d=tempvalue.vol_d;
m_differenced[j].volreal_d=tempvalue.volreal_d; Swap(m_differenced[i], m_differenced[j]);
template < typename T> void Swap( T &Value1, T &Value2 ) { const T Value = Value1; Value1 = Value2; Value2 = Value; }
同じことが、構造データの対数変換や逆変換の方法にも当てはまります。などなど。
ティック変換は珍しいトピックです。通常、これは1つの価格(例えばビッド)とバーだけで行われる。
この話題を提起してくれた著者に感謝している。
ごく最近、ロシア語のスレッドでこのトピックに関する話題があった。そこでは、最高の機械学習手法を用いて、市場パターンを失わないようにティック履歴を生成しようと試みられていた。明確な基準があった。
残念ながら、パターンを失わないようにする試みはすべて失敗に終わった。単にティックを混ぜるだけでなく、もっと洗練された方法があった。
ここだけ成功したことがある。
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Машинноеобучениевтрейдинге:теория, модели, практика и алготорговля
fxsaber, 2023.09.07 07:33
いくつかのアルゴリズムを試してみました。わかりやすくするために、そのうちのいくつかを紹介します。
POはAvg価格で固定という条件で建てています。 min.ニー
- 緑の点はチーク 配列の 3Z頂点の インデックス。
- 紫 - 頂点間の平均インデックス。
このアイデアは、ティックの配列を実行し、見つかったインデックスの位置にさらなる増分をランダムに割り当てることである。
タイムスタンプ、インクリメントの絶対値(Avg-price)、スプレッドは完全に保持されることがわかった。
結果によると
- 緑色のインデックス(ドレイン)のみで実行した。明らかに、このようなランダム化は、最終的なグラフをまっすぐにする(ZZの数を減らす)。
- 私は紫色のものに沿ってのみ実行 -聖杯は強いです, より高い最小条件。
- 私はプラムの両色を走ります。
- 2023.09.03
- www.mql5.com
//+------------------------------------------------------------------+ //|対数変換を適用するヘルパー・メソッド //+------------------------------------------------------------------+ bool CPermuteTicks::LogTransformTicks(void) { //---必要に応じて、m_logticksのサイズを変更する。 if(m_logticks.Size()!=m_ticks.Size()) ArrayResize(m_logticks,m_ticks.Size()); //---関連するデータ・メンバーだけを対数変換し、負の値やゼロの値を避ける。 for(uint i=0; i<m_ticks.Size(); i++) { m_logticks[i].bid_d=(m_ticks[i].bid>0)?MathLog(m_ticks[i].bid):MathLog(1 e0); m_logticks[i].ask_d=(m_ticks[i].ask>0)?MathLog(m_ticks[i].ask):MathLog(1 e0); m_logticks[i].vol_d=(m_ticks[i].volume>0)?MathLog(m_ticks[i].volume):MathLog(1 e0); m_logticks[i].volreal_d=(m_ticks[i].volume_real>0)?MathLog(m_ticks[i].volume_real):MathLog(1 e0); } //--- return true; }
мы хотим, чтобы p-значения были как можно ближе к нулю, в диапазоне 0,05 и ниже.
完全な公式を以下に示す:
z+1/r+1
ここでrは実行された並べ替えの数、zは最高の性能を持つテストの総数である。
元のシンボルで最適化し、並べ替えで実行する。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索

新しい記事「MetaTrader 5でのモンテカルロ並べ替え検定」はパブリッシュされました:
この記事では、Metatrader 5のみを使用して、任意のエキスパートアドバイザー(EA)でシャッフルされたティックデータに基づいて並べ替え検定を実施する方法を見てみましょう。
明らかに、ファイルをエクスポートした後、保存場所をメモし、任意のスプレッドシートアプリを使って開きます。下の図は無料のOpenOffice Calcを使用したもので、表の一番下に新しい行が追加されています。これ以上先に進む前に、計算の一部とすべきでない記号の行を削除したほうがいいでしょう。該当する各列の下で、カスタムマクロを使ってp値が計算されます。マクロの計算式は、各列の並べ替え銘柄のパフォーマンスメトリクスと同様に、並べ替え銘柄のパフォーマンスメトリクス(示されたドキュメントの18行目)を参照します。 マクロの完全な計算式を図に示します。
表計算アプリケーションを使う以外に、xmlファイルを解析するモジュールが豊富にあるpythonを使うこともできます。MQL5に習熟していれば、簡単なスクリプトでファイルを解析することも可能です。テスターから最適化の結果をエクスポートする際には、アクセス可能なディレクトリを選ぶことを忘れないでください。
作者: Francis Dube