MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 73

 
Alexey Viktorov:
アーテム あなたは間違っています。グローバルレベルで宣言された配列は、プログラムのすべての部分で見ることができ、どこかからどこかに渡す必要はありません。プログラムのある場所で記入し、別の場所でソートし、3番目で読むだけで、問題ない。

同じ関数で、異なる配列のデータをうまく並べ替えたり、検索したりすることができます。そうだろ?そして、もしそうなら、配列を参照渡しするのがよいでしょう - 将来のために。また、関数を呼び出す 際には、どのような配列で動作するかを確認しておいても損はないでしょう。

こういう配慮をしているんです。どこが間違ってるんだろう?

 
Artyom Trishkin:

同じ関数で、異なる配列のデータをうまく並べ替えたり、検索したりすることができます。そうだろ?そして、もしそうなら、配列を参照渡しするのがよいでしょう - 将来のために。また、関数を呼び出す 際には、その関数が扱う配列も確認できるようにする必要があります。

その点だけは正しい。どこが悪いのか?

了解です。あなたのアドバイスは、レゴプログラマー向けです。こんな倒錯したこと、自分ではしないですよね。

この場合、配列はグローバルに宣言する必要があるという点で一つ間違いがあります。

理解し合えてよかったです。

 
Alexey Viktorov:

了解です。あなたのアドバイスは、レゴのプログラマー向けです。自分ではそんな変態的なことはしないんですね。

それから、一つ残っているのは、配列がグローバルに宣言されていないといけないという間違いです。

お互いに理解し合えたことが嬉しい

この文脈で私が言いたいのは、こういうことです。

  1. 1ティックあたりのループ数をできるだけ少なくすることを実現する必要があります。
  2. 成行注文とポジションのデータを持つ定数配列と、削除/決済された注文とポジションのデータを持つ配列を1つずつ持ちたい
  3. 関数のローカルに配列を持っている場合、それを繰り返し呼び出すと、再度入力する必要があります。この配列は新しいティックに一度だけ埋められるようにすることを提案します。そうすれば配列はグローバルになり、そうでなければ関数を終了するときに失われます。
  4. その中で(配列の中で)何かを見つけるためには、満たされた配列と、見つかったデータを返す関数が必要です。関数内では、必要な計算を行うための補助配列を宣言することができる。

このため、グローバル配列(クローズド、オープンオーダー、ポジション)を用意するのがよいでしょう。新しいティックに一度、必要な量のオーダー/ポジションを 一度だけ渡し、2つのアレイにそれらを満たします。そして、彼らから必要なデータを同じティックで取得するのです。最後のクローズ/オープンオーダー/ポジションとそのすべてのデータが計算されるだけでなく、部分クローズの場合には、すべてのポジションの親ティックと子ティックが検索されることに注意してください。したがって、いつでも、このポジションはどのチケットのものなのか、何度も部分的にクローズされているのかを確認することができます。他にも必要なデータがたくさんあって、総サイクル数が少ないんです。配列に必要な履歴の深さはテスターに設定されています。

などなど・・・。

 
Artyom Trishkin:

その中で、私が言いたいのはこういうことです。

  1. 1ティックあたりのサイクルをなるべく少なくする必要があるのです。
  2. 成行注文とポジションのデータを持つ定数配列と、削除/決済された注文とポジションのデータを持つ配列が必要です
  3. 関数のローカルに配列を持っている場合、それを繰り返し呼び出すと、再度入力する必要があります。この配列は 新しいティックに一度だけ埋められるようにすることを提案します。そうすれば配列はグローバルになり、そうでなければ関数を終了するときに失わ れます。
  4. その中で(配列の中で)何かを見つけるためには、満たされた配列と、見つかったデータを返す関数が必要です。関数内では、必要な計算を行うための補助配列を宣言することができる。

このため、グローバル配列(クローズド、オープンオーダー、ポジション)を用意するのがよいでしょう。新しいティックになると、必要な量のオーダー/ポジションを 一度だけ渡し、2つの配列にそれらを充填します。そして、彼らから必要なデータを同じティックで取得するのです。最後のクローズ/オープンオーダー/ポジションとそのすべてのデータが計算されるだけでなく、部分クローズの場合には、すべてのポジションの親ティックと子ティックが検索されることに注意してください。したがって、いつでも、このポジションはどのチケットのものなのか、何度も部分的にクローズされているのかを確認することができます。他にも必要なデータがたくさんあって、総サイクル数が少ないんです。テスターでは、アレイに希望する履歴の深さを設定する。

などなど・・・。

だから、お互いによくわからないんです。

配列がグローバルな場合、この関数の内部ですでに見えているのに、なぜ関数に参照渡しをするのでしょうか?

 
Alexey Viktorov:

だから、お互いによくわからないんです。

配列がグローバルなものである場合、この関数内ですでに見えているのであれば、なぜ参照で関数に渡すのでしょうか?

関数のオーバーロード- そのような概念があります ;)

一つの関数で異なる配列に対して同じ動作をさせる必要がある場合は...

しかし - 私たちは異なる特殊なケースについて議論しているのです...。

 
Artyom Trishkin:

関数のオーバーロード- そのような概念があります ;)

一つの関数で異なる配列に対して同じ動作をさせる必要がある場合は...

しかし - 私たちは異なる特殊なケースについて議論しているのです...。

いやあ、よかった、あなたの思いが伝わりました。しかし、それらはレゴプログラマーへのアドバイスと非常によく似ています。
 
Alexey Viktorov:
まあ、ありがたいことに、あなたの思いは届きます。しかし、それらはレゴのプログラマーに対するアドバイスのようなものです。

100%動作する関数を大量にストックしておいて、毎回書き直すというのは非常におかしな話です。これは、キューブで家を建てるためのアドバイスではありません。自分で関数ライブラリやクラスを蓄積していくことがアドバイスになります。また、1つの関数が、参照渡しされた配列に応じて複数の配列を処理することの何が問題なのでしょうか?また、ファンクションテンプレートの何が問題なのでしょうか?

もし、配列をソート するコードがあるのなら、なぜ配列の種類ごとに別の関数を書くのでしょうか?単純にオーバーロードして任意の型をソートすることができます。ArraySort()はどのように動作するのでしょうか?そこで様々なタイプの配列を渡すと、出力時には渡された配列がソートされたものが返ってきます。

 
Artyom Trishkin:

100%動作する関数を大量にストックしておいて、毎回書き直すというのは非常におかしな話です。これは、サイコロで家を建てるためのアドバイスではありません。自分で関数ライブラリやクラスを蓄積していくことがアドバイスになります。また、1つの関数が、参照渡しされた配列に応じて複数の配列を処理することの何が問題なのでしょうか?また、ファンクションテンプレートの何が問題なのでしょうか?

配列をソート するコードがあるのなら、なぜ配列の種類ごとに別の関数を書かなければならないのでしょうか?オーバーロードをして、任意の型をソートすればいいのです。ArraySort()はどのように動作するのでしょうか?そこでいろいろなタイプの配列を渡すと、出力はソートされたものになります。メタクォートもレゴコーダーも、あるいは何?

本丸はここに来ないことです。

https://www.mql5.com/ru/forum/165468/page3#comment_3978059

Простой советник. Проверка размера бара. Покупка/продажа
Простой советник. Проверка размера бара. Покупка/продажа
  • www.mql5.com
Что должен делать советник: на каждом тике проверять размер бара как только размер бара станет равным или превысит заданный размер то: если свеча б...
 
Alexey Viktorov:

本丸はここに来ないことです。

https://www.mql5.com/ru/forum/165468/page3#comment_3978059

そこは仕方がない。確認するためのチェックがあり、さらにそれが正しいかどうかを確認するためのチェックがあるのです。やはり曲がっていますね。そうではなく、そこに教授が必要なのです。
 

という変数があり

int Level = 0;

プログラムの実行中は、常に変化しています。Levelが変化していない場合は何もしない、Levelが変化した場合(変化が大きくても小さくても良い)、何らかのアクションを行う{演算子}という条件を書きたいのですが、教えてください。