記事"Expert Advisors最適化のカスタム基準作成"についてのディスカッション - ページ 2 123 新しいコメント sigma7i 2012.07.21 09:56 #11 Karlson:つまり、以下のようなコードということですか?if(balance <3000)ExpertRemove(); は機能しないということですか?そうです。最適化は中断されるが、結果は表示される。カールソンでも、私が言ったのはそういうことではありません。そのような故障(少なくとも以前は機能していた)が、最終的に遺伝子の離脱につながったということです。 その通りです。しかし、OnTester()の結果をゼロにリセットしたり、上記のように(マイナス値-777を代入する)すると、OnTester()の戻り値だけで結果に対して選択が実行されるため、遺伝学は本当に予測不可能な振る舞いをする可能性があります。 sigma7i 2012.07.21 09:57 #12 しかし、レポートから不要な結果を削除する方法はありません。MT4にはそのようなものがありました:開発者がそのような機能を完全に削除したので、MQL5ツールの助けを借りればできるはずだ。もちろん、すべてをエクセルにコピーすることもできますが、私は新しいプラットフォームを活用したいと思っています。ExpertRemove()を 使えば可能です。レポートの無駄な結果をスキップすることはできますか? Vladimir Gomonov 2012.07.21 15:06 #13 sigma7i:レポートの中で無駄な結果をスキップするのはどうですか?標準レポートではできませんし、その必要もありません(私は反対です)。 独自のレポートを作成しましょう。最適化の段階(https://www.mql5.com/ja/docs/optimization_frames)で、必要な形式でレポートを作成できるようになりました。そしてすぐに(ほーほー)、遺伝子を自分で管理できるようになる。 Ingvar Engelbrecht 2013.12.07 14:52 #14 素晴らしい。私は以前、ニューラルネットと遺伝的アルゴリズムによる先物予測の分野で仕事をしていたときから、エクイティ曲線が適度に直線的であることの重要 性に気づいていました。そして、それを考慮するためにいくつかのルーチンを書きました。これは本当に予測システムの「頑健性」の尺度である。 Ingvar Engelbrecht 2013.12.22 16:53 #15 そして今、私はついにその可能性をテストし、探求し始めた。そして私はそう思う。まったく新しい世界が開ける。とてもパワフルなツールだ。記事をありがとう Ingvar Engelbrecht 2013.12.23 00:19 #16 実践的な作業の発見。真直度モジュールは良いスタートだが不完全。利益がゼロでも非常に良い評価を得ることは可能だ。だから、利益は方程式に入れなければならない。利益の合計から何らかの指標を加えるだけではうまくいかない。ではうまくいかない。序盤に勝ちがあり、中盤にドローダウンがあり、終盤により良い勝ちがあることで、良い価値のある非常に直線的なラインを得ることができる。そうすれば、フィット感の良い水平な直線が引け、利益も出るだろう。しかし、それは私たちが求めているものではありません。私たちが本当に求めているのは、うまくフィットして上向きに上昇する回帰線なのです。だから、できるだけ偏差の少ない回帰直線を使うという考えを実現するためには、上向きの傾きを表す係数を方程式に組み込む必要がある。それが我々が見たいのはフィット感のよい上向きの回帰直線。それを取り入れることを試みます。提案や支援を歓迎する:-) Ingvar Engelbrecht 2013.12.27 21:58 #17 カスタム基準の値は、「標準」基準と一緒に結果リストに表示されます。カスタム基準で2つの値を作成することは可能ですか?真直度と傾斜を組み合わせる良い方法が見つかりません。 Ingvar Engelbrecht 2014.01.08 00:05 #18 CSTSコードを試しています。この結果は少し奇妙です:結果 利益 #取引数 Frofit factor DrawDown Expected Payoff Recovery Factor0.58 1237 84 1.26 12.70 14.74 0.930.57 1598 90 1.38 8.69 17.36 1.76以下は別の例である。0.61 3175 123 1.33 21.04 25.82 1.480.60 4460 145 1.49 11.32 30.77 2.56すべての観点から、2行目の値はより良い! しかし、スコアは低い私が推測できる唯一のことは、多くの取引でペナルティがあるということです。私ならその逆だ。最後のポイントとして。この件に興味を持っている人は一人しかいないようだ。 私だ。さらにこの件に関して。私のコードにミスがあり、保留中の注文が クリアされなかった。その結果、12ヶ月以上のテスト期間中に発注された注文はわずか5件だった。利益も出ている。これによって、最適化の結果は100を超えた。明らかに「平均勝ち」の値が極端に高かったため、このような極端なスコアになりました。技術的には正しいのですが、バックテストでは無意味です。バックテストの文脈では無意味です。このような長いトレンドが代表的である可能性はどの程度あるのだろうか?そこで、取引回数を何らかの方法で方程式に組み込む必要があると考えました。試行錯誤しながらコードを変更し、私が有用だと思う結果を出す方法にたどり着きました。を変更した:// CSTS: double tssf=real/teor; if(tssf <= 0) return 0; work = TesterStatistics( STAT_TRADES ); if( work <= 0) work = 1; work = MathSqrt(work/4); tssf = tssf * work; if( tssf < 1 ) tssf = 0; if(TesterStatistics(STAT_PROFIT) <= 0) tssf = 0;return(tssf);オリジナルの方法は、おそらく稼働中のシステムを判断するには良いが、バックテストの実行からパラメータを基にするには基本的に役に立たない。 Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties www.mql5.com Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5 Discussion of article "Creating YZ_PIPSATOR_EURGPB - inspiration from Need help with coding Ingvar Engelbrecht 2014.01.21 00:36 #19 さて、またまたこの宇宙の一匹狼がやってきた :-)私は、計算された直線の傾きを方程式に取り込もうと、真直度カスタム基準を試してきました。このままでは、非常に微弱な利益で非常に高い評価を与えることができます。最終利益式に実際の傾きを追加するために、私は以下のようにコードを変更しました。完璧な解決策ではないが、私が見たいものに近づいた。このコードでは、バランスまたは利益と一緒に結果を使用してもうまくいきます。//--------------------------------------------------------------------- // 最適化結果の値を取得する: //--------------------------------------------------------------------- double TBalanceSlopeCriterion::GetCriterion() { // バランス曲線の傾きを計算してみよう: double current_slope=1000.0*this.balance_Ptr.CalcSlope(); // 傾いている場合: if(current_slope<0.0) { return(-1.0); } double temp=this.balance_Ptr.GetCurrentSKO(); if(temp>0.0) { // return(this.scale/temp); //これは単に、水平線から上向きの線まで何でもあり得る直線に、結果がどれだけ忠実であるかを返すだけである。 double temp2 = this.scale/temp; // イングヴァルはこう付け加えた。 return(temp2 * current_slope); // イングヴァルはこう付け加えた。 } return(0.0); } Rogerio Figurelli 2014.01.21 01:39 #20 ingvar_e:さて、またまたこの宇宙の一匹狼がやってきた :-)私は、計算された直線の傾きを方程式に取り込もうと、真直度カスタム基準を試してきました。このままでは、非常に微弱な利益で非常に高い評価を与えることができます。最終利益実際の勾配を方程式に加えようとして、私は以下のようにコードを変更しました。これは完璧な解決策ではないが、私が見たいものに近い。このコードでは、バランスまたは利益と一緒に結果を使用してもうまくいきます。 例えば、遺伝的アルゴリズムでは、優れたフィットネスアルゴリズムが必要で、このフィットネスに沿ったカスタム基準を作成する必要があります。 他にもいくつかの方法があるので、バランス曲線の傾きを計算するのがより良い方法かどうかはわかりません。 123 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
つまり、以下のようなコードということですか?
if(balance <3000)ExpertRemove();
は機能しないということですか?
そうです。最適化は中断されるが、結果は表示される。
カールソン
でも、私が言ったのはそういうことではありません。そのような故障(少なくとも以前は機能していた)が、最終的に遺伝子の離脱につながったということです。
その通りです。
しかし、OnTester()の結果をゼロにリセットしたり、上記のように(マイナス値-777を代入する)すると、OnTester()の戻り値だけで結果に対して選択が実行されるため、遺伝学は本当に予測不可能な振る舞いをする可能性があります。
MT4にはそのようなものがありました:
開発者がそのような機能を完全に削除したので、MQL5ツールの助けを借りればできるはずだ。
もちろん、すべてをエクセルにコピーすることもできますが、私は新しいプラットフォームを活用したいと思っています。
ExpertRemove()を 使えば可能です。
レポートの無駄な結果をスキップすることはできますか?
レポートの中で無駄な結果をスキップするのはどうですか?
標準レポートではできませんし、その必要もありません(私は反対です)。 独自のレポートを作成しましょう。
最適化の段階(https://www.mql5.com/ja/docs/optimization_frames)で、必要な形式でレポートを作成できるようになりました。
そしてすぐに(ほーほー)、遺伝子を自分で管理できるようになる。
素晴らしい。
私は以前、ニューラルネットと遺伝的アルゴリズムによる先物予測の分野で仕事をしていたときから、エクイティ曲線が適度に直線的であることの重要 性に気づいていました。
そして、それを考慮するためにいくつかのルーチンを書きました。これは本当に予測システムの「頑健性」の尺度である。
実践的な作業の発見。
真直度モジュールは良いスタートだが不完全。利益がゼロでも非常に良い評価を得ることは可能だ。だから、利益は方程式に入れなければならない。利益の合計から何らかの指標を加えるだけではうまくいかない。
ではうまくいかない。序盤に勝ちがあり、中盤にドローダウンがあり、終盤により良い勝ちがあることで、良い価値のある非常に直線的なラインを得ることができる。そうすれば、フィット感の良い水平な直線が引け、利益も出るだろう。しかし、それは私たちが求めているものではありません。
私たちが本当に求めているのは、うまくフィットして上向きに上昇する回帰線なのです。だから、できるだけ偏差の少ない回帰直線を使うという考えを実現するためには、上向きの傾きを表す係数を方程式に組み込む必要がある。それが
我々が見たいのはフィット感のよい上向きの回帰直線。それを取り入れることを試みます。提案や支援を歓迎する:-)
CSTSコードを試しています。
この結果は少し奇妙です:
結果 利益 #取引数 Frofit factor DrawDown Expected Payoff Recovery Factor
0.58 1237 84 1.26 12.70 14.74 0.93
0.57 1598 90 1.38 8.69 17.36 1.76
以下は別の例である。
0.61 3175 123 1.33 21.04 25.82 1.48
0.60 4460 145 1.49 11.32 30.77 2.56
すべての観点から、2行目の値はより良い! しかし、スコアは低い
私が推測できる唯一のことは、多くの取引でペナルティがあるということです。私ならその逆だ。
最後のポイントとして。この件に興味を持っている人は一人しかいないようだ。 私だ。
さらにこの件に関して。私のコードにミスがあり、保留中の注文が クリアされなかった。その結果、12ヶ月以上のテスト期間中に発注された注文はわずか5件だった。利益も出ている。
これによって、最適化の結果は100を超えた。明らかに「平均勝ち」の値が極端に高かったため、このような極端なスコアになりました。技術的には正しいのですが、バックテストでは無意味です。
バックテストの文脈では無意味です。このような長いトレンドが代表的である可能性はどの程度あるのだろうか?そこで、取引回数を何らかの方法で方程式に組み込む必要があると考えました。
試行錯誤しながらコードを変更し、私が有用だと思う結果を出す方法にたどり着きました。
を変更した:
// CSTS:
double tssf=real/teor;
if(tssf <= 0) return 0;
work = TesterStatistics( STAT_TRADES );
if( work <= 0) work = 1;
work = MathSqrt(work/4);
tssf = tssf * work;
if( tssf < 1 ) tssf = 0;
if(TesterStatistics(STAT_PROFIT) <= 0) tssf = 0;
return(tssf);
オリジナルの方法は、おそらく稼働中のシステムを判断するには良いが、バックテストの実行からパラメータを基にするには基本的に役に立たない。
さて、またまたこの宇宙の一匹狼がやってきた :-)
私は、計算された直線の傾きを方程式に取り込もうと、真直度カスタム基準を試してきました。このままでは、非常に微弱な利益で非常に高い評価を与えることができます。最終利益
式に実際の傾きを追加するために、私は以下のようにコードを変更しました。
完璧な解決策ではないが、私が見たいものに近づいた。このコードでは、バランスまたは利益と一緒に結果を使用してもうまくいきます。
さて、またまたこの宇宙の一匹狼がやってきた :-)
私は、計算された直線の傾きを方程式に取り込もうと、真直度カスタム基準を試してきました。このままでは、非常に微弱な利益で非常に高い評価を与えることができます。最終利益
実際の勾配を方程式に加えようとして、私は以下のようにコードを変更しました。
これは完璧な解決策ではないが、私が見たいものに近い。このコードでは、バランスまたは利益と一緒に結果を使用してもうまくいきます。
例えば、遺伝的アルゴリズムでは、優れたフィットネスアルゴリズムが必要で、このフィットネスに沿ったカスタム基準を作成する必要があります。
他にもいくつかの方法があるので、バランス曲線の傾きを計算するのがより良い方法かどうかはわかりません。