記事"直近のピップのプロフィットダウンを抽出"についてのディスカッション - ページ 18

 
fxsaber:

マットの期待値が低いと、結果は崩れる。

私見では、MOE の推定値は今後の TC を評価するのに十分ではない。

履歴を覗いたZigZagのMOEはこちら。https://www.mql5.com/ru/forum/221552/page1630#comment_13582832

記事中のMOは6.17です。

テスター・バランス・チャートとトレード・バランス・チャートのミスマッチ・エラーのような複雑なインジケータが必要なのですが、まだどこでそのような資料を読めるのかわかりません。

 
multiplicator:

続編を書いてください。これらの点について

この記事を簡単な言葉で書こうとした。読者(特に他の言語)には理解されなかったようだ。そして、思いがけず、結果的にそのような状況でよかったと思うことになった。だから、もう十分だと思う。

 
Igor Makanu:

テスターの残高グラフとトレードの残高グラフの乖離の誤差の ような複雑なインジケーターが必要なのだが、そのような資料がどこにあるのかまだ知らない。

ほとんどゼロです。シンクロナイザーは非常にうまく機能している。ただ、手数料で食われているだけです。

 
fxsaber:

ほとんどゼロだ。シンクロナイザーはとてもうまく機能している。ただ、手数料を食いつぶしているだけだ。

MOはMOで、これまでで最も価値のない査定のひとつだと思うが......。まあ、これは僕の意見だけどね(笑)。

ZZに関する私のレポートをご覧になりましたか?https://www.mql5.com/ja/articles/1492 の 記事とZスコアに注目してください。

私のZスコア: Zスコア: -17.44 (99.74%).

あなたのZスコア: -3.52。

MATHEMATICS IN TRADING "の記事によると、あなたはZ-Accountに関する良いデータを持っており、MOはZZよりプラスで多いのですが、ZZはMOが低く、Z-Accountが5倍高いのです(私が持っている端末からのテストではスプレッド)。


ここで私は私の質問への答えを探しています - TSを正しく評価する方法、しかし、私が上に書いたように - MOは全くTSの評価ではありません、私が間違っていない場合、MT4からのティック上のテスターGrailsは負のMOを持っている?- 私は長い間見ていない、私はKBで見る必要がある

 
Igor Makanu:

MOはMOで、最も価値のない査定のひとつだと思う......。まあ、これは私の意見だが......)

だからMOは、コスト(手数料、スリッページなど)を支払わなければならなくなったときにどれだけ大変なことになるかを話しているだけだ。

私のZZレポートをご覧になりましたか?記事https://www.mql5.com/ja/articles/1492、Zアカウントの評価をチェックしてください。

見たよ。未来を見ているので、何を見る必要があるのかよく分からなかった。

私のZスコア:Zスコア: -17.44 (99.74%)。

あなたのZスコア: -3.52。

MATHEMATICS IN TRADING "の記事によると、あなたはZ-Accountについて良いデータを持っていて、MOはZZよりプラスで多いのですが、ZZはMOが低く、Z-Accountが5倍高いのです(私が持っている端末からのテストではスプレッド)。

なぜZZ-TSと比較する必要があるのかよくわからない。覗き込むと、デメリットは全くなかったはずだ。正確には覚えていないが、MOはZZのミニッツニーより2倍高いはずだ。

Zカウントというのは聞いたことがない。定義は読んだよ。自分の目で一連のトレードを見てみないとね。

TSを正しく評価する方法ですが、上に書いたように、MOはTSの評価ではありません。- 私は長い間見ていない、私はKBで見る必要があります。

MOはクローズしたポジションの平均利益です。最適化の基準とかでは全くありません。単なる情報です。


ZY Geneticsでは、以前は次のようなものを使っていました。

sinput int inMinTrades = 0; // 最低取引数(ポジション)。

double OnTester()
{      
  return((TesterStatistics(STAT_TRADES) > inMinTrades) ? TesterStatistics(STAT_PROFIT) : 0);
}

を使うと、多くのゴミをフィルタリングして、GAを多かれ少なかれ興味深い極端に向けることができる。

 
fxsaber:

なぜZZTSと比較しなければならないのかよくわからない。覗き込んだときにマイナスはまったくなかったはずだ。正確には覚えていないが、MOの高さはZZの膝の最小値の2倍だったはずだ。

12217 (99.96%) 損切りトレード (% of all): 5 (0.04%)

損失はなく、決済時の損失のみ。

fxsaber:

Z口座については聞いたことがない。定義は読みました。私は自分のために一連の取引を見る必要があります。

計算式は記事に記載されているので、このZ-accountをオンラインで計算する価値はあると思いますが、Z-accountがさらにどのように振る舞うかを見るには、テスターからの統計を考慮に入れる必要があります。

 

fxsaber:


これは、赤くハイライトされた区間で最適化されたTCの結果である。当時の様子を正確に再現することはできない。しかし、最適化された区間の左側の画像は、もっと快適だったことを覚えている。ほとんど聖杯のようなもので、テスターとまったく同じように実戦に投入され、稼いだ。新年が明けてシステム的な流出が始まったとき、私には取引を止めるだけの知恵と経験があった。損失は以前の10%程度であった。何がスクラップの原因だったのかは不明である。

この話で重要なのは、品格でさえも流出につながるということだ。


サプライヤーがスプレッドを広げたのでは?その期間のティック履歴をダウンロードして、新年前と新年後の平均スプレッドサイズを見ることができる。
 
fxsaber:

Zアカウントなんて聞いたことがない。定義は読んだ。自分の目で一連のトレードを見てみないとね。

ビジュアライザー

string ZToString( const double Commission = 0, const int Length = 80 )
{
  const int Size = OrdersHistoryTotal();
  string Str = NULL;
  
  StringReserve(Str, Size + Size / Length);
  
  for (int i = 0, Count = 0; i < Size; i++)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderType() <= OP_SELL))
    {
      Str += (OrderProfit() + Commission> 0) ? "+" : "-";
      
      if (++Count >= Length)
      {
        Str += "\n";
        
        Count = 0;
      }
    }
    
  return(Str);
}


この取引(上の線は手数料なし、青い線は手数料あり)。



Zアカウントは0.76 (55.27%) - 手数料なし。そして、このように見えます。


明らかに、Zカウントは手数料に依存している。私はそれを分析には考慮しない。私はディールの分析というトピックを掘り下げたことはない。

 
fxsaber:

ビジュアライザー

使い方は?- 本当に必要です!

fxsaber:

Z-account は 0.76 (55.27%) - 手数料なし。そして、それは次のように表示されます。

つまり、トレードのエントリーやエグジットは、インプットとアウトプットの前と次のペアにほとんど依存しないということです。つまり、あなたのTSは価格チャートとのランダムな相関関係を実験的に見つけ(テスターのGA)、この相関関係がしばらくの間続いた可能性が高い。

これが私の考えで、もしそれが正しければ、そのようなTSはより頻繁に再最適化する必要があり、損益系列間の相関が高いTSはより頻繁に再最適化すべきではない。でも、ここでもZアカウントの変化を監視する必要がありそうですね。


ZY:記事のテスターのレポートを全部見たいのですが、トレードは面白くないのですが、帽子が面白いので、ZZと比較したいのですが、差し支えなければ共有してください。

 
multiplicator:

業者がスプレッドを広げたのでは?その期間のティック履歴をダウンロードして、新年前と新年後の平均スプレッドサイズを見ることができます。

これが週ごとの時間加重平均スプレッドです(単位はpips)。

2018.06.04 00:05:09   33.21
2018.06.11 00:05:11   41.86
2018.06.18 00:05:01   36.99
2018.06.25 00:05:19   45.40
2018.07.02 00:05:20   41.26
2018.07.09 00:05:21   39.09
2018.07.16 00:05:14   40.79
2018.07.23 00:05:19   36.06
2018.07.30 00:05:04   33.86
2018.08.06 00:05:17   33.03
2018.08.13 00:05:04   37.92
2018.08.20 00:06:08   40.94
2018.08.27 00:05:04   39.02
2018.09.03 00:05:13   37.99
2018.09.10 00:05:11   40.37
2018.09.17 00:05:16   42.10
2018.09.24 00:05:12   38.52
2018.10.01 00:05:13   32.12
2018.10.08 00:05:12   30.94
2018.10.15 00:05:16   35.96
2018.10.22 00:05:18   32.76
2018.10.29 00:05:02   36.59
2018.11.05 00:05:14   30.08
2018.11.12 00:05:09   30.41
2018.11.19 00:05:14   30.16
2018.11.26 00:05:32   34.95
2018.12.03 00:05:07   26.41
2018.12.10 00:05:15   25.50
2018.12.17 00:05:15   28.62
2018.12.24 00:05:13   33.06
2018.12.31 00:05:09   78.09
2019.01.07 00:05:11   49.78
2019.01.14 00:05:03   33.54
2019.01.21 00:05:20   43.68
2019.01.28 00:05:07   45.67
2019.02.04 00:05:12   44.24
2019.02.11 00:05:10   40.00
2019.02.18 00:05:20   40.66
2019.02.25 00:05:20   46.09
2019.03.04 00:05:15   41.78
2019.03.11 00:05:10   43.28
2019.03.18 00:05:03   44.42
2019.03.25 00:09:06   47.47
2019.04.01 00:05:12   44.14
2019.04.08 00:05:12   47.25
2019.04.15 00:05:09   45.61
2019.04.22 00:05:13   56.57
2019.04.29 00:05:19   48.09
2019.05.06 00:28:42   49.82
2019.05.13 00:05:13   58.00
2019.05.20 00:05:13   58.75
2019.05.27 00:05:12   60.43

エクセルでプロットしてみましょう。目で見て、スプレッドが拡大しているように見えます。これが理由のようです。


// 各週の時間加重平均スプレッド(pips)。テスターで実際のティックで実行。
#define  MACROS(A, B)               \
  int Time##A( const datetime dt ) \
  {                                \
    MqlDateTime mdts;              \
                                   \
    TimeToStruct(dt, mdts);        \
                                   \
    return(mdts.B);                \
  }                                \
                                   \
  int A() { return(Time##A(TimeCurrent())); }

  MACROS(Day, day)
  MACROS(Month, mon)
  MACROS(Year, year)
  MACROS(DayOfYear, day_of_year)
  MACROS(DayOfWeek, day_of_week)
#undef  MACROS

void OnTick()
{
  static double SumSpread = 0;
  static long SumInterval = 0;  
  
  static MqlTick PrevTick = {0};
  static int PrevDay = 0;  
    
  MqlTick Tick;
  
  if (SymbolInfoTick(_Symbol, Tick) && (Tick.time - PrevTick.time) < 60)
  {
    const long Interval = Tick.time_msc - PrevTick.time_msc;
    
    SumSpread += (PrevTick.ask - PrevTick.bid) * Interval / _Point;
    SumInterval += Interval;    
  }

  const int Day = DayOfWeek();
  
  if (Day < PrevDay)
  {    
    if (SumInterval)
      Print(DoubleToString(SumSpread / SumInterval, 2));
      
    SumSpread = 0;
    SumInterval = 0;        
  }
  
  PrevTick = Tick;  
  PrevDay = Day;
}