type conversion BalanceSlopeControl.mqh 1 17 25 possible loss of data due to type conversion BalanceSlopeControl.mqh 118 21 declaration of 'current_slope' hides member declaration at line 682 BalanceSlopeControl.mqh 118 21 'current_slope' の宣言が 682 行目のメンバ宣言を隠している BalanceSlopeControl.mqh 909 9 0 エラー(複数)、3 警告(複数) 1 4
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
solandr:
次のような実験を行った。各通貨ペアでロットを減らしてトリガーするようにカウンターを設定した。そして、M1 OHLCですべての組み合わせのテストを行った。結果は以下の通りです。
35 0 0 - 最初のペアのテストのみ
0 36 0 - 2番目のペアのテストのみ
0 0 0 168 - 3 番目のペアでのみテスト。
36 35 0 0 - 最初のペアと2番目のペアでテスト。
0 35 162 - 2組目と3組目のテスト
35 35 166 - 3組すべてでテスト
ただし、3ペアすべてでテストする場合は35 36 168となる。
明日、比較のためにすべてのティックでEAを実行してみます。
私の理解が正しければ、取引回数が違うのですね?では、ロットサイズはどのように影響するのでしょうか?
私の理解が正しければ、 - トランザクションの数は異なりますか?では、ロットサイズはどのように影響するのですか?
いいえ、3つの通貨ペアを同時に取引した 合計数は、別々の取引の合計に相当します。
結果は、ロットを減らして開いた注文の数を示しています。
Expert Advisorをまだ実行しています。後でメッセージを書きます。
いいえ、3つの通貨ペアを同時に取引した 合計数は、別々の取引の合計に相当します。
この結果は、ロットを減らして発注した注文の数を示しています。
現在もExpert Advisorを使用しています。この結果、合計でどのような変化があるのか理解しようとしています。 後でメッセージを書きます。
おそらく、いくつかの条件の変化により、取引の損益が実行ごとにわずかに変化し、その結果、バランス曲線のいくつかのポイントでロットの切り替えが発生する(または発生しない)可能性があります。
それは次のようなものです。
その結果、バランス・カーブのある時点でロットの切り替えが発生する(または発生しない)ことがある。
このようなものだ。
原理的には、このアイデアは良いものです。MT4では、私は特別なプログラムSpread Changerを使用しており、テスト用のスプレッドを任意に設定することができます。
MT5用のそのようなプログラムはまだ見つかっていません(私がよく探していなかったのかもしれません)。今後のターミナルのリリースで、開発者がそのような機能をテスターに組み込んでくれたら、それを望む人たちにとっては素晴らしいことでしょう。
原理的には、このアイデアは良い。MT4の下では、私はスプレッドチェンジャーという特別なプログラムを使っています。
MT5用のそのようなプログラムはまだ見つかっていません(私の探し方が悪かったのかもしれません)。将来のターミナルのリリースで、開発者がそのような機能をテスターに組み込んでくれたら、それを望む人たちにとっては素晴らしいことでしょう。
すべてのティックでEAを実行しました。以下の結果が出た:
バランス管理を無効にして実行した場合の利益:
0 0 0 0 6702,44 最初のペア
0 0 0 0 5735.78 第2ペア
0 0 0 0 3461.48 第3ペア
0 0 0 0 15901.66 3ペアとも - 15899.7であるべきだった。差は1.96。
ロット管理を有効にした場合、利益は
35 0 0 = 6550,94
0 36 0 = 6956,95
0 0 184 = 3386.44
35 36 179 = 15991.56 - 16894.33となるべきだった。その差は902.77
オートバランスを無効にした場合にも差があることがお分かりいただけると思いますが、通常は微々たるものです。ロットコントロールが有効な場合、その差は5.3%と非常に顕著になります(減少したロットのトリガー数が異なるため)。どのようにパラメータを最適化すればよいのでしょうか?どのような解決策があるでしょうか?
すべてのティックを実行するのに約20~30分かかります。
このような実験をしてみようと思う。簡単なExpert Advisorにロット・コントロール・システムを追加して、実行の違いを見てみよう。
ところで、記事のmqhファイルをコンパイルすると、こんなメッセージが出ます:
type conversion BalanceSlopeControl.mqh 1 17 25
possible loss of data due to type conversion BalanceSlopeControl.mqh 118 21 declaration of 'current_slope' hides member declaration at line 682 BalanceSlopeControl.mqh 118 21
'current_slope' の宣言が 682 行目のメンバ宣言を隠している BalanceSlopeControl.mqh 909 9
0 エラー(複数)、3 警告(複数) 1 4
一番最初に修正しました。最初の2つは、変換のタイプを指定しました。そして、3つ目のメッセージは、909行目のcurrent_slopeの名前を修正し、さらにdouble TBalanceSlopeControl::CalcTradeLots( double _min_lots, double _max_lots ) の中で対応する修正を行うことで修正しました。
もしかしたら、ここに犬が埋まっているのでしょうか?いずれにせよ、私の変更は思想的に間違っているかもしれないので、作者自身が修正したファイルを投稿することは可能だろう。
すべてのティックでEAを実行しました。結果は以下のようになった:
...
ご覧のように、自動バランスを無効にした場合にも違いはありますが、通常は微小です。
どのシンボルでもテストするときは、すべてのモードで同一の結果を得ること。
これを行うには、すべてのシンボルのティック、またはタイマーのいずれかで作業し、すべてのインストルメントで新しいバーの 出現を制御します。
バランスは1セントも乖離してはならない。
ところで、記事のmqhファイルをコンパイルすると、こんなメッセージが出る:
型変換によるデータ損失の可能性 BalanceSlopeControl.mqh 117 25
型変換によるデータ損失の可能性 BalanceSlopeControl.mqh 118 21 'current_slope' の宣言が682行目のBalanceSlopeControl.mqhのメンバ宣言を隠しています。mqh 118 21
'current_slope' の宣言が 682 行目のメンバ宣言を隠している BalanceSlopeControl.mqh 909 9
0 エラー(複数可)、3 警告(複数可) 1 4
一番最初に修正しました。最初の2つは、変換のタイプを指定しました。また、3つ目のメッセージは、909行目のcurrent_slopeの名前を修正し、さらにdouble TBalanceSlopeControl::CalcTradeLots( double _min_lots, double _max_lots )の中で修正しました。
もしかしたら、ここに犬が埋まっているのでしょうか?いずれにせよ、私の変更は思想的に間違っているかもしれないので、作者自身が修正したファイルを掲載することは可能だろう。
ここではありえない。私は何かルールを覚えているが、何 - 私は覚えていない)))。これが私の現在のファイルです。
ここではそうは思わない。何かルールがあったような気がするけど、何だったかな?)これが私の現在のファイルです。
新しいバージョンのファイルをありがとう!
ファイルの中身を記事のファイルと比較すると、新しいファイルでは37、115、116、907、966行目にいくつかの違いがあることがわかる。
これらの変更がExpert Advisorにどの程度影響するか見てみましょう。