externintCounter = 1; // Счетчик подсчета количества оптимизаций. Если равен 0, то обычная оптимизация...externstringFilename = ""; // Имя файла с оптимизируемыми параметрамиintFilePtr=0; // Положение файлового указателя
関数init()の中に、以下のブロックを挿入してください。
if(IsOptimization() && Counter>0){// Для ускорения процесса будем поддерживать сквозной указатель файловой позиции// с помощью глобальной переменной FilePtr // На первом проходе инициализируем её нулём.if(GlobalVariableCheck("FilePtr")==false || Counter == 1){FilePtr = 0;
GlobalVariableSet("FilePtr",0);
}else{FilePtr = GlobalVariableGet("FilePtr");
}inthandle=FileOpen(Filename,FILE_CSV|FILE_READ,';');
FileSeek(handle,FilePtr, SEEK_SET);
Parametr1=StrToInteger(FileReadString(handle));
Parametr2=StrToInteger(FileReadString(handle));
Parametr3=StrToInteger(FileReadString(handle));
FilePtr = FileTell(handle);
GlobalVariableSet("FilePtr",FilePtr);
FileClose(handle);
}
Vita、いいこと言うね。しかし、汎化能力はEAの特性であると同時に、その能力を正しく認識しなければならない学習アルゴリズムの特性であると言えるでしょう。メタクォート・アルゴリズムはこの能力を明らかにするのではなく、過剰最適化によって破壊してしまうのです。
メタクオートアルゴリズムはこの機能を拾わず、過剰な最適化によって噛み砕かれてしまうのです。-- 例が見たいですね。
その例は枚挙にいとまがない。不明確でした。つまり、「1、2、3!」のような無分別なオプティマイザーの使用は、グレーリストの過剰で不合理な楽観主義につながるということです。 例えば、最近の例では、「FXは私たちに不利に動いているのか?それとも、私が理解していないのか』。または「トレンドアドバイザー(エキスパート)」。フィードバックを待っている』.これらはすべてトリックです。
根こそぎ破壊」について:あるデータセグメントで限界的なカーバフィッティングを行っても、実際のアウトオブサンプルのセグメントで持続的な収益性が得られる確率は極めて低い。 最適なのは過収益と損益分岐の中間で、これはNS学習アルゴリズムに内在するものである。
教えてください、ヴィータ、その純粋な形で私たちの遺伝的最適化装置は、それがテスト/最適化で超超利益であっても、将来のExpert Advisorの収益性を保証するものではありませんか?テスターがどうのこうのという話ではなく、テスターがあればいいんです。
追伸:MQによる遺伝的最適化装置の最初の言及の一つをようやく見つけました。https://www.mql5.com/ru/forum/50805.Filinさんの 投稿とスラワさんの 返信をご覧ください。この答えは、オプティマイザーがExpert Advisorの能力を大まかに 推定するのに役立つだけで、それ以上のものではないことを示しています。グレーリストの大半は、Expert Advisorの「総合」テストの最初で唯一のツールとして使用しています。これは素人考えで、間違った幻想を抱かせることになります。実際、このツールは大まかな見積もりのみを目的としており、明らかにネガティブな結果が出た場合に明らかに悪いExpert Advisorをスクラップ するのに適しているだけ で、Expert Advisorの価値についてポジティブな結論を出すのには適していません...。
Mathemat писал (а):
その例は枚挙にいとまがない。不明確でした。つまり、「1、2、3!」のような無分別なオプティマイザーの使用は、グレーリストの過剰で不合理な楽観主義につながるということです。 例えば、最近の例では、「FXは私たちに不利に動いているのか?それとも、私が理解していないのか』。または「トレンドアドバイザー(エキスパート)」。フィードバックを待っている』.これらはすべて微調整です。
--> 例えば、「最適な運転パラメータはこれです」と正確に言うことができる「賢い」オプティマイザーがあったとします。私は誓う、調整なし!」または「いいえ、みんな、私はこのEAのための作業パラメータを選択することはできませんし、単に曲線に適合しない。 それは時代でしょう! EAに実装された戦略を認定するオプティマイザー! Metaquotesから無料アクセス素晴らしい本当に欲しいです。
--> 「最適はどこかにある」というのは、完全に最適化された「グラール」は将来必ず失敗するから、最後まで最適化しない方がいいとか、「真実は近くにある」とか、そういうことからくる直感的な感覚です。この感覚は、現実とは関係ない。規則性は極限まで最適化することができ、そこで初めてその輝きを発揮するのです。いくらひねっても無駄ですが、最適はどこかにあるという感覚は養われます。
--> そうではなく、オプティマイザの結果にそのような保証を求めるのは不適切だと思います。スマート」、保証を与える、オプティマイザーについては、上記を参照してください。
追伸:MQが遺伝的最適化について最初に言及したものの1つをようやく見つけることができました。
https://www.mql5.com/ru/forum/50805
.Filinさんの 投稿とスラワさんの 返信をご覧ください。この回答から、オプティマイザーはExpert Advisorの能力を大まかに 見積もるのに役立つだけで、それ以上のものではないことがおわかりいただけると思います。グレーリストの大半は、Expert Advisorの「総合」テストの最初で唯一のツールとして使用しています。これは素人考えで、間違った幻想を抱かせることになります。実際、このような大まかな評価のみを目的としたツールは、平均値の法則により、明らかに悪い結果が出た場合に、明らかに悪いExpert Advisorを廃棄するには 十分ですが、Expert Advisorの価値について肯定的な結論を出すには適していません...。
-->「オプティマイザーはEAの能力を大まかに 見積もるのにしか使えない」--ここでも、EAの能力を正確に 見積もることができないオプティマイザーに、実は、EAの戦略を認定するための主張がなされているのである。あとは、ストラテジーを生成するロボットを作り、それをオプティマイザーに送り、その適性についての意見を聞き、保証された お金のカットに行くだけでいいのです。どうですか、この錯視は?
イリュージョンは素晴らしいが、あくまでイリュージョンに過ぎない。しかし、今あるもの(テスター/オプティマイザー)の応用を、MQL4で使える手段で劇的に改善することは可能なのです。そうでなければ、3日に1回、通常のテストのふりをした、フィッティング結果だけのスーパーチョッパーを見ることになる...。
また、メタクオーツについても不満はありません。オプティマイザーは、Expert Advisorのパラメータ空間における遺伝的最適化という、まさにそのために設計されたものであり、実際、それは遺伝的あてはめです。
test()のような標準的な関数があれば、すべての必要なパラメータが明確に指定され、すべてがテストされる履歴ファイルの名前も 含まれます。ファイル名とその内容を厳格に結びつけることは、柔軟な解決策とは言えません。
皆さん、こんにちは。
EAを最適化した後、オプティマイザーが提案するパラメータのセットを十数個もナードアウトサンプリングしなければならないことがよくあります。
Expert Advisorをサンプル外で最適化するアイデアがある。仮に、Expert Advisorに、いくつかのパラメータによる最適化を「課金」したとします。日程を決めた。例えば、1月1日から2006年1月1日から2007年1月1日まで
Expert Advisorは、数千個を受領しています。その後、OPTIMIZATION RESULTSのページを別ファイルとして保存しています。次に、最適化のために次の履歴期間を設定する。つまり、1カ月でも2カ月でも、必要なだけ追加するのである。
この場合、例えば1月1日からと設定します。2007年から2007年6月1日までそしてまた、最適化を使っています。正確には、かなり最適化されていないでしょう。オプティマイザーはEXPERT'S PROPERTIESのパラメータを取らず、最初の最適化の後に保存したファイルからパラメータセットを再選択する必要があります。この2回目の最適化の後、サンプル外で利益を得たvAreAだけが残されます!
その結果、理想的には、後でオンラインでテストするための「理想的なパラメータ」を得ることができるのです
mt4テスターの追加機能として便利だと思います。おそらく、そして最も可能性が高いのは、すでにどこかの誰かが実装していることでしょう。どなたかご存知の方は、ぜひリンクをシェアしてください
私のささやかな知識では、このアイデアを実際にどのように実行に移せばよいのかがわからない。
確かにこのアルゴリズムの実用的な実装はすでにある.フォーラムでは、その派生品しか見つけられませんでしたが...。例えば、『最適化基準をどのように実装するか』とか...。
この問題の解決策を共有したいのですが...。
EAを用意しよう...。外部パラメータを追加してみよう...
関数init()の中に、以下のブロックを挿入してください。
Parametr1、Parametr2、Parametr3 - 最適化すべき外部パラメータ...。
以上である.
確かに、このアルゴリズムはすでに実用化されているのですが...。フォーラムでは、その派生品しか見つけられませんでしたが...。例えば、『最適化基準をどのように実装するか』とか...。
この問題の解決策を共有したいのですが...。
Nikolay Kositsinの記事、例えば「人気のある取引システムに基づくエキスパートと取引ロボット最適化錬金術(続き)」を見てみましょう。
どのように機能するのですか?
時間間隔Aで、パラメータの通常の最適化を実行します(Counter=0) ...
その結果をExcelに転送し、最適化されたパラメータを含むファイルを作成し、ディレクトリ ...\testerfiles に保存する作業を行っています。
Excelで当社のパラメータで列を選択し、コピーしてWordやメモ帳に書式なしテキストとして貼り付ける...。
ワードボードやメモ帳で、各行を「値1;値2;値3」という形式に変換する。
ディレクトリ ...\testerfiles に保存してください。
よほど怠け者でなければ、上記の操作をその場で行うマクロを書けばいいのですが...。
これで時間枠Bの最適 化が実行できる...。これで、最適化パラメータはCounterに なります。最大値(リストの行数)を指定する...
これで問題は解決だ...。がんばってください・・・。
Nikolay Kositsin氏の記事「人気のある取引システムに基づくExpert Advisorsと取引ロボット最適化の錬金術(続)」などをチェックしてみてください。
この記事を読んだのは...私のバリエーションは、もっとシンプルで便利だと思うのですが......。そして何より普遍的であること...。
上記の実装は、支部の作者の希望と完全に一致しているのだが...。
kharko さん、解決策をありがとうございました。使ってみようと思います!