トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 3182

 
fxsaber #:

ありがとう、MathRandインクリメントを試してみるよ。

アレクシー・ニコライエフ#:

最も普遍的なものは、おそらくモンテカルロです。

面白いランダム生成があるようだ。

double GetAvgPrice( const MqlTick &Tick )
{
  return((Tick.bid + Tick.ask) / 2);
}

void SetAvgPrice( MqlTick &Tick, const double Price )
{
  const double Spread = (Tick.ask - Tick.bid) / 2;
  
  Tick.bid = NormalizeDouble(Price - Spread, 8);
  Tick.ask = NormalizeDouble(Price + Spread, 8);
  
  return;
}

// Случайный знак приращения средней цены.
bool RandomPrice( MqlTick &Ticks[] )
{  
  const int Size = ArraySize(Ticks) - 1;
  
  if (Size > 0)
  {
    Print("Random price...");
    
    MqlTick PrevTick = Ticks[Size];
    double PrevPrice = GetAvgPrice(PrevTick);
    
    MathSrand((int)TimeLocal());
    
    for (uint i = Size; (bool)i--;)
    {
      const double Diff = GetAvgPrice(PrevTick) - GetAvgPrice(Ticks[i]);
      
      PrevTick = Ticks[i];

      SetAvgPrice(Ticks[i], PrevPrice += !(MathRand() & 1) ? Diff : -Diff);
    }
  }
  
  return(Size >= 0);
}

上が実シンボル、下がランダム。

RandomPriceは繰り返し適用できる。スプレッドと時間は保持される。


本当は対数で計算するのが正しいのだろうが、あえてそうしなかった。これを改良すれば、必要な統計的特性を持つランダム・シンボルをモンテカルロ法で生成するための最良の選択肢になるかもしれない。

 
fxsaber #:

for Monte Carlo is probably the best option for generating a random symbol with the desired statistical characteristics.

同じセットを使ったシラミテスト。

上が本物、下がランダム。

失敗。

 

その違いは、最適化結果には何も書かれていないことです。つまり、最初の5つの最適化結果は、これまでOOSで実行されたことがありません。

 

トレーディング、自動トレーディングシステム、トレーディング戦略のテストに関するフォーラム

トレーディングにおける機械学習:理論、モデル、実践、アルゴ・トレーディング

ヴァレリー・ヤストレムスキー, 2023.08.17 10:44 AM

偽陽性や偽陰性の確率が減少することは論理的であるように思えますが、私にとってはエラーに対する万能薬ではありません。

train_optim+test_forward モデルを(train+test)_optimよりも 信頼すべきだと思いますか?

 
Aleksey Vyazmikin #:

エラーはない。

別のサンプルを取ってみた - 47%のユニットと5倍少ない例 - 2、3回のパスの後、それはすでに多くの量子セグメントを見つけたと言うことができる。

ータとータイプのータイプとータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのータイプのー何か考えはありますか?

私はグラフを作りました - 一致があれば "-1"、一致がなければ "+1"、私はそのようなバランスを得ました。

多くの傾向がありますが、どう思いますか?

 
fxsaber #:

上は本物、下はランダム。

実際のシンボルと生成されたシンボルで同じ設定で最適化を行った。


リアル。


ランダム。


ランダムではトレーニングされていない。

 
fxsaber #:

実際のキャラクターと生成されたキャラクターで、同じ設定で最適化を行った。


リアル


ランダム。


ランダムでは訓練されていない。

ランダム記号は何回生成されたのか?)明らかに、シーケンスが長ければ長いほど、それに取り組むにはより多くの回数を生成する必要がある。
 
fxsaber #:

違いは、最適化結果には何も検索されていないことだ。つまり、最初の5つの最適化結果は、これまで一度もOOSで実行されたことがない。

簡単に言うとこうだ。

テストでの最適化の後、OOS上で "手作業で "より良いバリアントを選んでも、それはフィットしない...。

アルゴリズムが最適化後にOOS上で最良のバリアントを選択すれば、それはすでにフィッティングしている...なぜ?

オプションのフルセットから最良のオプション/変種を選択することは最適化です....手作業でやろうがアルゴリズムでやろうが関係ない。

おそらくあなたはMTのテスターとしか働いたことがなく、最適化そのものやその適用方法について少し定型的に考えているのでしょう。


 
fxsaber #:

実際のキャラクターと生成されたキャラクターで、同じ設定で最適化を行った。


リアル


ランダム。


ランダムで訓練されていない

ランダムは価格特性と一致するか? 平均、標準偏差、共分散?
 

Maxim Dmitrievsky #:
Сколько раз был сгенерирован рандом символ?)

ひとつ。

シーケンスが長ければ長いほど、それに取り組むために生成する回数も多くなるのは明らかだ。

この文が理解できない。次の2つの選択肢は何を意味するのでしょうか?

  1. ランダム化を 何度も繰り返さないとうまくいかない。
  2. ランダム化されたキャラクターをたくさん作れば、その中に動作可能なものが存在する確率が高くなる。

一見単純なことだが、異なる実シンボルであっても同じTCは機能しないからだ。

ランダム化のアルゴリズムは以下の 通りである:

  1. 実際のティック履歴を取る。
  2. そこから平均価格((bid+ask)/2)の増分シーケンスを作成する。
  3. このシーケンスでは、各項がランダムに+1または-1されます。
  4. 新しいティック履歴は、時間とスプレッドがポイント 1 と一致する、一連の増分から収集される。
  5. 新しいティック履歴はカスタム・シンボルで書き込まれる。
つまり、実際のシンボルが無作為化される。項目 3 は何度でも適用でき、項目 5 の後に 5 つのポイントすべてが繰り返される場合、項目 3 を 2 回繰り返すのと同じことになります。
理由: