トレーダーの自己欺瞞:フォワードへの不信感。 - ページ 2 123456789...17 新しいコメント Yuri Evseenkov 2015.07.13 12:21 #11 Youri Tarshecki:デモ口座で取引結果を得て、同じシステムを同じ設定でテスターで同じ期間動かすという、最もシンプルな体験は誰にでもできることです。つまり、実機とテスト用の仮想フォワードを用意して、それを比較するのです。 これは、ストラテジーテスターが バーのオープン、クローズ、マックス、ミンの4つのクォートのみを使用しているため、有効な比較ではありません。 原則として、Expert Advisorsはデモまたはリアル口座のすべてのバー内クォートを使用して動作します。ユリ・タルシェキ実際、最適化されていない期間の履歴で動作させてシステムの動作をシミュレーションすることは、トレーダーにとって最も効率的な分析方法と言えます。もちろん、リアリティチェックは最も確実な方法ですが、残念ながら、実際のアカウントですべてのバリエーションを経験するには、永遠に生き続けなければならないのです。つまり、過去に進むようなモデリングが、最も効果的な研究方法なのです。しかし、それならなぜフォワードは議論に全く参加しないのでしょうか?複数のテストの結果を、前後左右に加工して分析する便利なソフトがないからでしょうか。私も同感です。よくやっているようですね。このような分析に適した金融ツールを教えてください。バーオープン時にのみトリガーされるEAがあるのですが、同様のモデリングでテストしてみたいのです。 Youri Tarshecki 2015.07.13 14:25 #12 Скажите пожалуйста какой финансовый инструмент Вы предпочитаете для подобного анализа. У меня есть советник который срабатывает только на открытие бара. Хочу проверить его подобным моделированием. どういうことかというと、ツールに関係なく、テスト手法にはフォワードを入れるべきだということです。しかし、人々はそれを一斉に無視する。使っている人は、原則として目分量で見積もっています。つまり、フォワードの評価に客観的な基準を導入するようなプログラムは存在しないのです。 Yuri Evseenkov 2015.07.13 18:55 #13 Youri Tarshecki: どういうことかというと、ツールに関係なく、テスト手法にはフォワードを入れるべきだということです。しかし、人々はそれを一斉に無視する。使っている人は、原則として目分量で見積もっています。つまり、フォワードの評価に客観的な基準を導入するようなプログラムはないのです。 商品が異なれば、市場行動の特性も異なる。フォワードテストに「収益性の慣性」を含める。そこでお聞きしたいのですが、他の条件が同じで、実験で最も良い結果を示す機器(または機器の一種)を見つけられたのでしょうか? Vasiliy Sokolov 2015.07.13 19:33 #14 Youri Tarshecki: どういうことかというと、機器に関係なく、テスト方法はフォワードを含むべきだということです。しかし、人々はそれを一斉に無視する。使う人は、原則として目分量で見積もる。つまり、フォワードプライシングに客観的な基準を導入するようなプログラムは存在しないのです。フォワードテストを大量に無視する。理由は簡単で、フォワードに成功したのは、フォワード区間の相場が最適化区間と同様であることを示すだけだからだ。ストラテジーテスターは、現在の市場ダイナミクスに完璧に適応します。その結果、最適化区間を12の前方部分に分割した後、12個の関連性のないパラメータセットを得ることになり、それぞれが12の時間部分のうち11個を流すことになるのです。むしろ、あるパラメータから別のパラメータへと急ぐよりも、長い歴史の中で、平均化されたとはいえ、一つのパラメータを見つける方が良いのです。市場は変化しない。各取引システムが市場のある特定の状態だけを捉えているだけで、市場には多くの状態があるのだ。 TheXpert 2015.07.13 20:58 #15 フォワードを信用するよりも、信用しないほうがいい。また、その場合は、WFAを使用した場合のみとなります Youri Tarshecki 2015.07.14 04:44 #16 Vasiliy Sokolov:フォワードテストを大量に無視する。理由は簡単で、フォワードに成功したのは、フォワード区間の相場が最適化区間と同様であることを示すだけだからだ。ストラテジーテスターは、現在の市場ダイナミクスに完璧に適応します。その結果、最適化区間を12の前方部分に分割した後、12個の関連性のないパラメータセットを得ることになり、それぞれが12の時間部分のうち11個を流すことになるのです。むしろ、あるパラメータから別のパラメータへと急ぐよりも、長い歴史の中で、平均化されたとはいえ、一つのパラメータのセットを見つける方が良い。市場は変わらない。ただ、それぞれのトレーディングシステムが市場のある特定の状態だけを捉えているだけで、市場にはその状態が数多く存在する。フォワードは定義上、最適化されていない区間なので、「最適化された区間を12個のフォワードに分割する」ことはできないのです。つまり、フォワードチェックの方法そのものと、単に平均化という概念を対比しているわけです。フォワードの目的は、最適化されていない未来の状況下で、アドバイザーがどのように振る舞うかを知ることです。あなたが言っていることは、最適化のために最適な歴史の断片を見つけることと、より関係があります。つまり、もしあなたが長い歴史の方がうまくいくと信じているなら、問題なく、2年前-1年前のテスターをロードしてみましょう。そして、2ヶ月戻る-1ヶ月進むを12回。もし、第一アプローチのフォワード性能が第二アプローチのフォワード性能の合計よりも優れていれば、第一アプローチの方が優れており、その逆もまた然りである。Expert Advisor を最適化するということは、市場の慣性を信じているが、それがかなり大きな期間に現れると信じているに過ぎない。しかし、30年という利用可能な歴史のすべてにわたって最適化するわけではないので、市場のボラティリティも考慮することになります。不変と可変という永遠の矛盾ですが、異なるテスト期間のフォワードを比較することで、この矛盾が現実にはどのように解決されるのかをより正確に理解することができます。確認するまで - あなたの発言は、純粋に直感的なものなのか、それとも単なる習慣的なものなのか。 Stanislav Korotky 2015.07.14 23:08 #17 Youri Tarshecki: 私がテストしているEAのコードでOnTesterPassを使用するとします。この実行が、通常の可変最適化実行ではなく、フォワードルッキングなものであることを、どうやって知ることができるのでしょうか?また、仮にできたとしても、それは異なるファイルであり、1つのEAの多くのフォワードに対して1つのテーブルが必要です。そして、別のテーブル、別のテーブルのためのテーブルと、全部を1つのファイルにまとめています。私の記憶では、最初のトレードの時間をフレームに保存した、これが「バランス」です。したがって、1つのファイルにすべての実行のパラメータと指標を記録する場合、バックテストとフォワードを2つの特徴的な日付で区別することは容易である。すべての実行を正確に1つのファイルに保存しています(OnTesterInitで開き、OnTesterDeinitで閉じます)。詳細はこちらでした。 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム フレームを使う スタニスラフ・コロツキー 2014.11.07 15:23 OnTester ハンドラでは、FrameAdd を使ってデータ付きの独自のフレームを追加することができます。重要なのは、これがすべてリモート(例えばクラウド)にあるテストエージェントで 行われることです。OnTesterInit, OnTesterDeinit, OnTesterPassは、テスト/最適化プロセスが開始される端末で呼ばれ、そこからタスクがエージェントに分配されます。OnTesterPassの内部では、以下のようにFrameAddを使ってテストエージェントに追加されたすべてのフレームにアクセスできます(古いEAからかじったものなので、コンパイルできないかもしれません)。void OnTesterPass() { string name; ulong pass; long id; double value, data[]; string params[]; uint par_count; string output = ""; ushort eq = StringGetCharacter("=", 0); while(FrameNext(pass, name, id, value, data)) // data - массив положенный во фрейм с помощью FrameAdd { output = pass + ";" + (data[0]); for(int i = 1; i < 10; i++) output += ";" + data[i]; if(FrameInputs(pass, params, par_count)) { for(uint i = 0; i < par_count; i++) { string pair[]; int n = StringSplit(params[i], eq, pair); if(n == 2) { long pvalue, pstart, pstep, pstop; bool enabled = false; if(ParameterGetRange(pair[0], enabled, pvalue, pstart, pstep, pstop)) { if(enabled) { output += ";" + pair[1]; } } } } } output += "\n"; // TODO: FileWriteString(fhandle, output); } } とこちらをご覧ください。 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム フレームを使う スタニスラフ・コロツキー さん 2014.11.07 20:15 上に書いたように、走行中にフレームを追加するとよいでしょう。アイデアとしては、EAにパラメータがある場合、データと一緒にフレーム内に取得すること、つまり、paramsが空であってはならないことです。以下は、同じExpert Advisorの他のコードです。int fhandle = -1; void OnTesterInit() { // готовим каким-то образом файл, как нам нужно fhandle = FileOpen("tester-" + _Symbol + GetTickCount() + ".csv", FILE_WRITE|FILE_CSV|FILE_ANSI); FileWriteString(fhandle, "Pass;First;LR;Profit;Expected Payoff;Profit Factor;Recovery Factor;Sharpe Ratio;Custom;Equity DD %;Trades\n"); } void OnTesterDeinit() { FileClose(fhandle); } double OnTester() { // собираем данные по эквити double LR = CountChannels(Equity); // конструируем собственный критерий оптимизации double result = MathAbs(LR) * TesterStatistics(STAT_PROFIT) * TesterStatistics(STAT_PROFIT_FACTOR) * TesterStatistics(STAT_TRADES) * (100 - TesterStatistics(STAT_EQUITY_DDREL_PERCENT)); // рассчитываем еще какие-то данные //... // складываем все в массив double data[10]; // data[0] = first; // data[1] = LR; // data[2] = TesterStatistics(STAT_PROFIT); // ... // data[7] = result; // ... // data[9] = ... // отправляем данные в терминал if(!FrameAdd(MQL5InfoString(MQL5_PROGRAM_NAME), 1, LR, data)) Print("Frame add error: ", GetLastError()); else Print("Frame added, Ok"); return(result); } Aleksey Vyazmikin 2015.07.15 22:49 #18 個人的には、直近の相場変動が最も大きいので、未来ではなく、過去の結果を確認する方が理にかなっていると思います。15分間、最適化を行い、不要な結果をふるい落とし、残った5~10個をセットに保存して、最適化の瞬間まで履歴で実行し、チャートでベストなものを選びました。また、これらの動作を自動化する作業も考えていたのですが...。単純な解決策としては、EA自体で切り替え可能な時間帯に取引制限を かけるだけで、結果的に1回のリアルランに対して2回のバーチャルランが発生し、エクセルで簡単に比較することができるようです。 Youri Tarshecki 2015.07.16 04:57 #19 -Aleks-:個人的には、直近の相場変動が最も大きいので、未来ではなく、過去の結果を確認する方が理にかなっていると思います。15分間、最適化を行い、不要な結果をふるい落とし、残った5~10個をセットに保存して、最適化の瞬間まで履歴で実行し、チャートでベストなものを選びました。また、これらの動作を自動化する作業も考えていたのですが...。単純な解決策としては、EA自体で切り替え可能な時間帯に取引制限を かけるだけで、結果的に1回のリアルランに対して2回のバーチャルランが発生し、エクセルで簡単に比較することができるようです。 ラスト・チェンジにこだわるのも、自己欺瞞の一種だ。当然ながら、取引には新鮮な設定を用いる必要があります。しかし、直近の期間に最適化することに限定してしまうと、Expert Advisorが将来の変化に強いかどうかを把握することができません。私の投稿の2番目の写真を見てください。フォワードとは、過去との比較のことです。あなたのやり方は、フォワード・アナリシスとは関係ない。ほぼすべてのExpert Advisorは、素晴らしいバックテストに最適化することができます。ここでは、設定を最適化すればするほど、バックテストが美しくなるというパターンを紹介しています。そして、醜いのは前方です。フォワードは、より長期的なパターンを使用するロジックを正確に見つけるのに役立ち、したがって、より有望である。 khorosh 2015.07.16 06:33 #20 フォワードは便利なチェック機能ですが、万能ではありません。最適化の 結果、良いフォワードが得られるパラメータのバリエーションを選択することは可能ですが、これは実機での良い結果を保証するものではありません。 123456789...17 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
デモ口座で取引結果を得て、同じシステムを同じ設定でテスターで同じ期間動かすという、最もシンプルな体験は誰にでもできることです。つまり、実機とテスト用の仮想フォワードを用意して、それを比較するのです。
これは、ストラテジーテスターが バーのオープン、クローズ、マックス、ミンの4つのクォートのみを使用しているため、有効な比較ではありません。 原則として、Expert Advisorsはデモまたはリアル口座のすべてのバー内クォートを使用して動作します。
実際、最適化されていない期間の履歴で動作させてシステムの動作をシミュレーションすることは、トレーダーにとって最も効率的な分析方法と言えます。もちろん、リアリティチェックは最も確実な方法ですが、残念ながら、実際のアカウントですべてのバリエーションを経験するには、永遠に生き続けなければならないのです。つまり、過去に進むようなモデリングが、最も効果的な研究方法なのです。しかし、それならなぜフォワードは議論に全く参加しないのでしょうか?複数のテストの結果を、前後左右に加工して分析する便利なソフトがないからでしょうか。
私も同感です。よくやっているようですね。このような分析に適した金融ツールを教えてください。バーオープン時にのみトリガーされるEAがあるのですが、同様のモデリングでテストしてみたいのです。
Скажите пожалуйста какой финансовый инструмент Вы предпочитаете для подобного анализа. У меня есть советник который срабатывает только на открытие бара. Хочу проверить его подобным моделированием.
どういうことかというと、ツールに関係なく、テスト手法にはフォワードを入れるべきだということです。しかし、人々はそれを一斉に無視する。使っている人は、原則として目分量で見積もっています。つまり、フォワードの評価に客観的な基準を導入するようなプログラムはないのです。
どういうことかというと、機器に関係なく、テスト方法はフォワードを含むべきだということです。しかし、人々はそれを一斉に無視する。使う人は、原則として目分量で見積もる。つまり、フォワードプライシングに客観的な基準を導入するようなプログラムは存在しないのです。
フォワードテストを大量に無視する。理由は簡単で、フォワードに成功したのは、フォワード区間の相場が最適化区間と同様であることを示すだけだからだ。ストラテジーテスターは、現在の市場ダイナミクスに完璧に適応します。その結果、最適化区間を12の前方部分に分割した後、12個の関連性のないパラメータセットを得ることになり、それぞれが12の時間部分のうち11個を流すことになるのです。むしろ、あるパラメータから別のパラメータへと急ぐよりも、長い歴史の中で、平均化されたとはいえ、一つのパラメータを見つける方が良いのです。
市場は変化しない。各取引システムが市場のある特定の状態だけを捉えているだけで、市場には多くの状態があるのだ。
フォワードテストを大量に無視する。理由は簡単で、フォワードに成功したのは、フォワード区間の相場が最適化区間と同様であることを示すだけだからだ。ストラテジーテスターは、現在の市場ダイナミクスに完璧に適応します。その結果、最適化区間を12の前方部分に分割した後、12個の関連性のないパラメータセットを得ることになり、それぞれが12の時間部分のうち11個を流すことになるのです。むしろ、あるパラメータから別のパラメータへと急ぐよりも、長い歴史の中で、平均化されたとはいえ、一つのパラメータのセットを見つける方が良い。
市場は変わらない。ただ、それぞれのトレーディングシステムが市場のある特定の状態だけを捉えているだけで、市場にはその状態が数多く存在する。
フォワードは定義上、最適化されていない区間なので、「最適化された区間を12個のフォワードに分割する」ことはできないのです。つまり、フォワードチェックの方法そのものと、単に平均化という概念を対比しているわけです。
フォワードの目的は、最適化されていない未来の状況下で、アドバイザーがどのように振る舞うかを知ることです。あなたが言っていることは、最適化のために最適な歴史の断片を見つけることと、より関係があります。つまり、もしあなたが長い歴史の方がうまくいくと信じているなら、問題なく、2年前-1年前のテスターをロードしてみましょう。そして、2ヶ月戻る-1ヶ月進むを12回。もし、第一アプローチのフォワード性能が第二アプローチのフォワード性能の合計よりも優れていれば、第一アプローチの方が優れており、その逆もまた然りである。Expert Advisor を最適化するということは、市場の慣性を信じているが、それがかなり大きな期間に現れると信じているに過ぎない。しかし、30年という利用可能な歴史のすべてにわたって最適化するわけではないので、市場のボラティリティも考慮することになります。不変と可変という永遠の矛盾ですが、異なるテスト期間のフォワードを比較することで、この矛盾が現実にはどのように解決されるのかをより正確に理解することができます。確認するまで - あなたの発言は、純粋に直感的なものなのか、それとも単なる習慣的なものなのか。
私がテストしているEAのコードでOnTesterPassを使用するとします。この実行が、通常の可変最適化実行ではなく、フォワードルッキングなものであることを、どうやって知ることができるのでしょうか?また、仮にできたとしても、それは異なるファイルであり、1つのEAの多くのフォワードに対して1つのテーブルが必要です。そして、別のテーブル、別のテーブルのためのテーブルと、全部を1つのファイルにまとめています。
私の記憶では、最初のトレードの時間をフレームに保存した、これが「バランス」です。したがって、1つのファイルにすべての実行のパラメータと指標を記録する場合、バックテストとフォワードを2つの特徴的な日付で区別することは容易である。すべての実行を正確に1つのファイルに保存しています(OnTesterInitで開き、OnTesterDeinitで閉じます)。
詳細はこちらでした。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
フレームを使う
スタニスラフ・コロツキー 2014.11.07 15:23
OnTester ハンドラでは、FrameAdd を使ってデータ付きの独自のフレームを追加することができます。重要なのは、これがすべてリモート(例えばクラウド)にあるテストエージェントで 行われることです。
OnTesterInit, OnTesterDeinit, OnTesterPassは、テスト/最適化プロセスが開始される端末で呼ばれ、そこからタスクがエージェントに分配されます。OnTesterPassの内部では、以下のようにFrameAddを使ってテストエージェントに追加されたすべてのフレームにアクセスできます(古いEAからかじったものなので、コンパイルできないかもしれません)。
とこちらをご覧ください。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
フレームを使う
スタニスラフ・コロツキー さん 2014.11.07 20:15
上に書いたように、走行中にフレームを追加するとよいでしょう。アイデアとしては、EAにパラメータがある場合、データと一緒にフレーム内に取得すること、つまり、paramsが空であってはならないことです。以下は、同じExpert Advisorの他のコードです。
個人的には、直近の相場変動が最も大きいので、未来ではなく、過去の結果を確認する方が理にかなっていると思います。
15分間、最適化を行い、不要な結果をふるい落とし、残った5~10個をセットに保存して、最適化の瞬間まで履歴で実行し、チャートでベストなものを選びました。
また、これらの動作を自動化する作業も考えていたのですが...。
単純な解決策としては、EA自体で切り替え可能な時間帯に取引制限を かけるだけで、結果的に1回のリアルランに対して2回のバーチャルランが発生し、エクセルで簡単に比較することができるようです。
個人的には、直近の相場変動が最も大きいので、未来ではなく、過去の結果を確認する方が理にかなっていると思います。
15分間、最適化を行い、不要な結果をふるい落とし、残った5~10個をセットに保存して、最適化の瞬間まで履歴で実行し、チャートでベストなものを選びました。
また、これらの動作を自動化する作業も考えていたのですが...。
単純な解決策としては、EA自体で切り替え可能な時間帯に取引制限を かけるだけで、結果的に1回のリアルランに対して2回のバーチャルランが発生し、エクセルで簡単に比較することができるようです。