EAの最適化に使用するデータ範囲について質問させてください。つまり、どのタイムフレームで、どのレンジを選択するかということです。例えば、H1の場合、Expert Advisorは月次、3年、年次のデータで最適化すればよいのでしょうか。異なる時間軸でのこれらの値と、少なくともその選択の簡単な裏付けが欲しいところです。
明確な基準があるわけではなく、誰もが意見を持っている。私の意見を述べようと思います。
歴史の全期間にわたる最適化は、純粋な自己欺瞞である。そのため、最適化間隔はテスト期間の半分以上である必要があります。しかし、テスト期間のうち最適化に使う部分は少なければ少ないほどよい。最適化間隔でのパラメータを選択した後、テスト期間として選択した全間隔でテストを実行します。少なくとも100トレード以上のサンプルがあれば、得られた結果を "信じる "ことができるようになります。しかし、それすらも多くの人にとっては物足りない。取引 量が多いほど、より正確なシステム像を把握できることは明らかです。例えば、少なくとも200件の案件をサンプルとして「信じる」ことができるのです。1000トレードが最適だが、完成度に限界はない...。
この問題については、JezevとShumskyが非常にうまく対処している。ここで、彼らが行ったことをまとめると、こんなことが言える。
学習理論の課題は、学習誤差を最小にすることではなく、将来起こりうるすべての例に対して定義される汎化誤差を最小にすることである。こうして最適化されたTSは、最大の予測力を発揮することになる。そして、ここで難しいのは、実際に観測できるのは学習誤差だけであるということです。一般化の誤差は、いくつかの考察に基づいて、推定するしかない。新しいデータに対するテスターの予測 値の誤差は、モデル自身の記述と合わせて、モデルの記述の長さの合計で決まる 。
近似誤差
TCの決定回数は、原則として、その中で調整されるパラメータ数よりもはるかに少ないので、この場合、 近似の平均誤差は、適合パラメータの総数wを通して、以下のように表さ れることになる。 Eapprox= d/w、ここでdはTSが解析する入力パラメータの数である。ほとんどの場合、d=wが満たされている(すべてのフィッティングパラメータがTC入力に集中している)。
学習アルゴリズムの主な問題点として、過学習や 歴史への適合の問題が知られている。この問題の本質は、具体的な例で説明するのが一番わかりやすい。再現したい機能によって学習例が生成されたとする。学習理論では、この機能を「教師」と呼んでいる。有限個の学習例があれば、学習誤差が ゼロ、すなわち学習例集合に対して定義された誤差でテスト実行を構成することが常に可能である。そのためには、適合するパラメータの数が例数より多いTSを取らなければならない。実際、それぞれの例を再現するために、W の未知数に対してP の方程式を用意する必要がある。また、未知数の数が方程式の数より少ない場合、そのような系は過小決定 であり、無限に多くの解を認めることになる。これは大きな問題で、唯一の正解である教師機能を選択するための十分な情報がないのです。その結果,学習サンプルにない新しい例では,Testerが後者を間違いなく再現しても,ランダムに選んだ関数の予測値は低くなってしまう.既知の事例を一般化する のではなく、暗記した のだ。この効果を過学習と いいます。
モデルの複雑さに関連したエラー。
モデルの記述は、基本的にそのサブ調整されたパラメータの値を渡すことに帰着する。 ある精度で記述する場合、約W ビットが 必要になります。したがって、モデルの複雑さに関係する例ごとの具体的な誤差は、以下のように推定できる。Ecomplex=W/P です。 見ての通り、例数(学習時の履歴の長さ)の増加に伴い単調に減少している。
実際、与えられた例の P によって のフィッティングパラメータを一義的に決定 するためには、そのシステムには 方程式のP は 過決定 でなければならない、すなわち、パラメータ W の数は方程式の数より大きくなければならない。過決定の度合いが大きければ大きいほど、学習結果が学習例の部分集合の特定の選択に依存する度合いが低くなる。上で定義した汎化誤差成分は、まさに例数の有限性に起因する解のばらつきに 関係するものである。
そこで、戦略テスターの 汎化誤差の両成分を、 E=Eapprox+ Ecomplex=d/W+W/P>SQRT(d/P) と推定した。重要なのは、これらの成分がフィッティングパラメータの数Wに依存して異なることで、全体の誤差を最小化する最適なサイズを選択できることを意味している。誤差(等号)が最小になるのは、戦略最適化に参加する履歴データの最適な長さ:P=k*W^2/d=k*W、ここでk-定数はおよそ4に等しい。
したがって、ストラテジーテスターで最適化されたフォワードテストにおけるExpert Advisorの予測誤差は、ヒストリカルデータ長がストラテジーテスターのフィッティングパラメータ数の4倍であれば、最小となることになります。
テスターの5つのパラメータ(例えばマッハ周期)を最適化する場合、最適な履歴の長さは、テスターがその上で4*5=20トランザクションを使用するようなものであるべきです。1日~200日の履歴を残すことができますが、すべては採用した戦略次第です。この数を減らすと、テスターを履歴に合わせることになり、増やすと、近似品質の劣化、ひいては予測精度の劣化につながる。
この世界を知る方法はたくさんあります。
ある者は「愛」を通じてそれを知る。瞑想などによるものもあります。私は、論理と数学によって、利息の価値を推定する方法を示した。つまり、あなたの秘密は、まったく秘密ではなく、別の側面に過ぎないのです......。
追伸:上記でお話したことは、あくまでパラメータを最適化するための1つの行為です。最適化されたEAのパフォーマンスを評価するには、1つのポイントでは十分ではありません、あなたは統計を収集する必要があり、統計的に有意な結果は、各パスで過最適化と独立したデータ上で100回の実行で始まる...
ですから、テスターで十分な最適化を行うためのレシピは、単純なものではありません。
皆さん、どうもありがとうございました。特にNeutron さんには詳しい説明をしていただきました。最近、フォーラムで非常に興味深いアイデアを見つけ、それを自分のコードに実装する作業を行っています。同時に、デモでテストしたところ、3日で150%程度とかなり良い結果が出たのですが、ちょっとニュアンスが違うような...。新しいトピックを作らないために、ここで質問させていただきます。
エントリーポイントを定義するとき、同じ方向でn pipsの距離ですでに注文が開かれているかどうかを調べる必要があります。 次のコードは動作しませんが、なぜか理解することができません。
bool buy=true。
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY && OrderOpenPrice()<=Bid && Bid-OrderOpenPrice()<50*Point) buy=false.Buy=false;
}
if (buy) OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0, "MyAdvisor",0,0,Blue)。
その結果、10個のオープンロットを持つEAを実行すると、1つのポイントからすべてオープンしてしまいます。 現在の価格と現在のオープンオーダーの価格との差が50pips以上ある場合にのみ、1つのオーダーをオープンして次のオーダーをオープンするようにしたいのですが......。
to中性子
この2種類のエラーは、どのようなTCにも当てはまるのか、それともニューラルネットワークだけに当てはまるのか?
budimir パラメータの定義にトレンドエリアを選択するのですか?トレンドラインとサイドのトレンドラインは選んでいるのですか?
最も活発なトレンド セクションを選択し、フィッティングセクションでは20~30件しか出てこないが、フィッティングセクションのサンプルは少なくとも100~1000件あるはずである
母性信頼性 - すべてのこれはナンセンスですが、まあ、あなたがフィッティングプロットを取ったとしましょう、未来に直接隣接し、市場の位相を識別 - トレンドやそれは横ばい傾向や方向の変化であり、その後? 市場は静止していないし、将来どこに行くかもわからない。
to ITeXPert > 3日で150%というオーダーをバカにしないでください。
そして、私のTSでは、このようなロットを3日間で150%で十 数個手に入れることができます:о)
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
みなさん、こんにちは。
EAの最適 化に使用するデータ範囲について質問させてください。つまり、どのタイムフレームで、どのレンジを選択するかということです。例えば、H1の場合、1ヶ月、3ヶ月、1年のデータでEAを最適化すればいいのでしょうか?異なる時間軸でのこれらの値と、少なくともその選択の簡単な裏付けが欲しいところです。ありがとうございました。