プログラミングの勉強を手伝ってください。 - ページ 4

 

Dmitry Fedoseev:
回再計算する、または再計算 しない。

あなたは何もわかっていない。世の中、PositionTotal()で頭打ちになったわけではありません。それが間違っていることを指摘しているのです。

Dmitry Fedoseev:
しかし、キラー実験を持ってくるのではなく

私の実験のどこが気に入らないのですか?コンパイラは、最初の呼び出しの結果を過剰に最適化したのでしょうか?

これはまさに最適化です:for (int i = 0; i < 1+2 ; i++) {}。

または次のようになります。const int X = 1 ;for (int i = 0; i < X+2; i++) {}.

というのも、私はテレパスではないので、このXがどこでどうなるのか分からないからです。ループ内で 変更されたり、 リンクやポインタによって間接的に変更されたりするかもしれません。繰り返しごとに「X+1」の加算を行うことになる。たとえ '+1' を削除しても、この 'X' が定数として宣言されていない限り、プログラムは 'X' の現在の値を使用します。

また、関数が返す結果をキャッシュすることもありません、カール!(「what iffor (int index=f();) 」を予想して。)- ここでは、インデックスの 初期化時に1回だけ呼び出されます

Dmitry Fedoseev:
そして、コンパイラがコードを最適化し、関数を通してではなく、直接変数を呼び出すという意味 です。

はい、もちろん、コンパイラは市場の状況を正確に把握しており、関数呼び出しは常に同じ値を返すと確信しているので、この関数を複数回呼び出す必要はまったくなく、OnInit()で結果を一度記憶すればOK!

そして、それはサイクル自体の実行内でも、あなたの場合PositionsTotal()で、いくつかの注文はすでになくなっている可能性があることを気にしない - 手や別のEAによって閉じ、停止 - そして残りは、彼らがすべて突然!少なくなったので、処理されません?

Dmitry Fedoseev:
これはArraySize()関数ではっきりわかるのですが、関数を呼び出すのと変数を 使うのとでは違いがわかりません。 しかし、PositionsTotsl()はそうではない。

ある配列のサイズと現在開いているポジションの数は、どのように関係しているのでしょうか?配列の要素に インデックスでアクセスするわけですが、まあ、例えば、要素数3のarray[999]にアクセスするわけです。もしこの配列が実際に「スマート」な型、例えば有効性チェックが行われる演算子'[]'を持つクラスであれば、問題ないでしょう。しかし、そうでない場合はどうでしょうか。とにかく、これはシスコーダーの典型的な例です。なぜ水たまりをガス化しなければならないのか、それを認めて悩まないでください。

 
Tio Nisla:

Dmitry Fedoseev:
回再計算する、または再計算 しない。

あなたは何もわかっていない。世の中、PositionTotal()で頭打ちになったわけではありません。それが間違っていることを指摘しているのです。

Dmitry Fedoseev:
しかし、キラー実験を持ってくるのではなく

私の実験のどこが気に入らないのですか?コンパイラは、最初の呼び出しの結果を過剰に最適化したのでしょうか?

これはまさに最適化です:for (int i = 0; i = 1+2; i++) {}。

または次のようになります。const int X = 1 ;for (int i = 0; i = X+2; i++) {}.

というのも、私はテレパスではないので、このXがどこでどうなるのか分からないからです。ループ内で 変更されたり、 リンクやポインタで間接的に変更されたりするかもしれません。繰り返しごとに「X+1」の加算を行うことになる。たとえ '+1' を削除しても、この 'X' が定数として宣言されていない限り、プログラムは 'X' の現在の値を使用します。

それに、関数が返す結果をキャッシュすることもありませんよ、カール!(「でも、もしfor (int index=f();) 」と言われたらどうしよう?)- ここでは、インデックスの 初期化時に1回だけ呼び出されます

Dmitry Fedoseev:
そして、コンパイラがコードを最適化し、関数を通してではなく、直接変数を呼び出すという意味 です。

そうですね、もちろん、コンパイラは市場の状況を正確に把握していて、関数呼び出しは常に同じ値を返すと確信しているので、この関数を複数回呼び出す必要はまったくなく、OnInit()に一度だけ結果を格納すれば、それでいいのです

そして、それはサイクル自体の実行内でも、あなたの場合PositionsTotal()で、いくつかの注文はすでになくなっている可能性があることを気にしない - 停止、手や別のEAによって閉じ - そして残りは、彼らがすべて突然!少なくなったので処理されません?

Dmitry Fedoseev:
これはArraySize()関数ではっきりわかるのですが、関数の呼び出しと変数の 使用の違いがわからないんです。 しかし、PositionsTotsl()はそうではない。

ある配列のサイズと現在開いているポジションの数は、どのように関係しているのでしょうか?配列の要素に インデックスでアクセスするわけですが、まあ、例えばサイズ3の要素を持つarray[999]にアクセスするわけです。もしこの配列が実際に「スマート」な型、例えば有効性チェックが行われる演算子'[]'を持つクラスであれば、問題ないでしょう。しかし、そうでない場合はどうでしょうか。とにかく、これはシスコーダーの典型的な例です。ガス抜きはやめたほうがいい。

PositionTotal()で終わりが見えなければ、全く的を外していることになります。ループの繰り返しごとにArraySize()関数を呼び出すことができ、速度が変化しないため。

それがないために、あなたの実験に満足できないのです。

それ以外の妄想は、妄想だから面白くない(さらに言えば、荒唐無稽で現実から大きくかけ離れていて、虚偽ですらある)。

幼稚園に通うべき

 
Dmitry Fedoseev:

何を知っているのか?自然界に存在しないアルゴリズムであればともかく、自分で発明して、それがすべてを定義してしまう。

興味のある言語で適切なコードを有能に書く方法の知識を持つ

意味がわからない、こんなアルゴリズムがあるのだろうか?

取引に関する情報をどのように収集し、どのように利用するか?すべてのEAのポジション、その量、利益、タイプ、開始価格に関する情報を収集する必要があります。そして、直近のポジション、つまり最大のポジションに関する 情報を参照する。

実は、筆者はこの質問でトピックを作成しました。

そして、機能のサイクルや性能は、他の人が議論していました。しかし、彼らはベストな方法、正しい方法を知りたがっている人でもあるのです。

 
Nikolay Mitrofanov:

興味のある言語で、正しいコードを有能に書く方法の知識を持つ

理解できないのですが、こんなことができるアルゴリズムはないのでしょうか?

そこで、筆者はこのような疑問を持ちながら、このトピックを作成しました。

また、ループや関数の性能については、他の人も興味を持っていました。しかし、彼らもまた、より良い方法、正しい方法を知りたがっている人たちなのです。

それで、やはりポジションの計算方法についてですか?それなら、申し訳ない。

まだ知りたい...と思っているのに知らない、この洗練された人たちが面白い。これもポジションを数えるため?

またまたすみません、間違えではないのですが、「アルゴリズムの実装」というのは、位置カウント機能のことでしょうか?つまり、PositionsTots()をループで書こうが、変数を使おうが、これをアルゴリズムと呼ぶのでしょうか。
 
Dmitry Fedoseev:

それで、まだポジションの数え方の話をしてるんですか?じゃあ、ごめんね。

まだ知りたがっているのに...まだ知らないという洗練された人たちが面白い。それもポジションを数えるだけ?

では、質問が出尽くしたのであれば、何を論じているのでしょうか?)笑

位置データを取得するタスクがあります。

オープンポジションの数を取得する言語関数があり、ループの中で使用されます。

ループ内でどのように正しく使用するかという問題があります:forループの最初のパラメータで使用するか、2番目のパラメータで使用するか - 条件がチェックされる場所です。

欲しいものがわからないのはおかしい)))

数が一定でないためコストがかかると書かれていますね。でも、なぜかは、説明できないんですね。

なぜコストがかかるのか、説明できますか?

個人的には、この関数はオープンポジションを毎ティック再計算せず、ポジションの オープンとクローズの 時だけ再計算するように開発者が配慮したのだと思います。

開発者は考えていないのでしょうか?

この関数はコストがかかるので再計算し、端末のメモリから値を取るだけではないと断言できるのでしょうか?

今のところ、実質的な回答ではなく、くだらないおしゃべりを読んでいます。

 
Nikolay Mitrofanov:

だから、問題が終わっているのに何を論じているのか)。笑

24時間、4ページにわたってポジションの数え方に関するシンポジウムを開催するという、なんともユーモラスな状況なのだ。とても興味深いです。

 
Dmitry Fedoseev:

PositionTotal()だけが重要でないのなら、的外れな話です。ループの繰り返しごとにArraySize()関数を呼び出すことができ、速度が変化しないため。

それがないために、あなたの実験に満足できないのです。

それ以外の妄想は、妄想だから面白くない(ましてや、荒唐無稽で現実から大きくかけ離れており、虚偽ですらある)。

ArraySize() は、配列が動的でない場合やクラス型でない場合は、配列自体を宣言するときにすでに定数になっています。しかし、ArraySize(array)とsizeof(array)は大きく異なるので、まだ意味がありません。1つ目は呼び出されるが見えない、2つ目はコンパイル段階で計算される。

int arr[5];

PrintFormat("sizeof(array): %d, num_elem = %d\n", sizeof(arr), sizeof(arr) / sizeof(int));
PrintFormat("ArraySize(): %d\n", ArraySize(arr));
ArrayResize(arr, 7);
PrintFormat("ArraySize(): %d\n", ArraySize(arr));
PrintFormat("sizeof(array): %d, num_elem = %d\n", sizeof(arr), sizeof(arr) / sizeof(int));
ArrayResize(arr, 3);
PrintFormat("ArraySize(): %d\n", ArraySize(arr));
PrintFormat("sizeof(array): %d, num_elem = %d\n", sizeof(arr), sizeof(arr) / sizeof(int));

2021.05.03 22:01:37.253 show_the_shitz EURJPY,H4: initialized
2021.05.03 22:01:37.253 show_the_shitz EURJPY,H4: sizeof(array): 20, num_elem = 5
2021.05.03 22:01:37.253 show_the_shitz EURJPY,H4: ArraySize(): 3
2021.05.03 22:01:37.253 show_the_shitz EURJPY,H4: sizeof(array): 20, num_elem = 5
2021.05.03 22:01:37.253 show_the_shitz EURJPY,H4: ArraySize(): 7
2021.05.03 22:01:37.252 show_the_shitz EURJPY,H4: ArraySize(): 5
2021.05.03 22:01:37.252 show_the_shitz EURJPY,H4: sizeof(array): 20, num_elem = 5

だから、あなたの別の視点をどこかに言ってください。

-----------------

なぜ、私は説明しようとするのでしょうか?人は、見て考えようとしないものです。そうだ、月の満ち欠け、火星の平均子午線時間、左足のかかとが痒いかどうかで動作が変わるようなコードを生成させてみよう。ただ残念なのは、多くの人、特に初心者は、*新しい*コードを自分のプロジェクトにコピーすることをよく考えもせず、何が間違っているのかについて頭を悩ませてしまうことです。

 
Tio Nisla:

ArraySize() は、配列が動的でなく、クラス型でない場合、配列自体を宣言した時点で既に定数になっています。しかし、これも意味がありません。ArraySize(array)とsizeof(array)は大きく異なるからです。1つ目は呼び出されるが見えない、2つ目はコンパイル段階で計算される。

だから、あなたの別の視点をどこかに言ってください。

-----------------

なぜ、私は説明しようとするのでしょうか?人は、見て考えようとしないものです。そうだ、月の満ち欠け、火星の平均子午線時間、左足のかかとが痒いかどうかで動作が変わるようなコードを生成させてみよう。ただ残念なのは、多くの人、特に初心者は、*新しい*コードを自分のプロジェクトにコピーすることをよく考えもせず、何が間違っているのかについて頭を悩ませてしまうことです。

それは殺人的な主張だ!言葉もない...。なぜ、動的でない配列にArraySize()を適用しなければならないのですか?どうやったら思いつくのか、想像もつきません。それとsizeof()はどう関係があるのでしょうか?そちらは大丈夫ですか?

そして、これは私の見解ではなく、フォーラムの参加者が長い間検証してきたことです。でも、このスレッドで検索することはありません。

でも、キャッシュとはまったく関係ないと言えるでしょう。

 
Nikolay Mitrofanov:

私としては、理解しようとしたり、深く掘り下げたりする人はいいなと思うのですが...。

小さなことに注意を払わないことで、コーダーは間違った方法でコードを書く習慣を身につけてしまうのです。そして、コードを梳くことは二重の作業を意味し、しばしば作者だけでなく、まだ幸運にもコードで作業している人たちにとってもそうです。

ちゃんと書いて、細かいところまで理解できるのに、なぜわざわざコードを書くのか)

あなたのアドバイスは...その...IMHO


あなたのアドバイスは、経験豊富なプログラマー(強い自信のある人)にとっては、どこで何をとかなければならないかを知っているので、その後、それをとかすことができる良いものです。

フェドセーエフの言うとおりだ。その必要はありませんし、思い通りにコードを梳くには時間がかかります。でも、新しいものを書いた方がいいというのは、時間が経つにつれてわかってくるんですね。だから、新しいコードはすべて最初にコーミングされる。

 

フォーラムの実態が面白い誰かに何かを聞かれても、誰も一行もコードを書かない。しかし、その途端、彼らはやってきて、一列に並び、叩き始める。ああ、ああ、なんという間違ったコードなのだろう。しかも、面白いことに、それはたいてい3コペイカのような単純なコードに関するものである。あらゆる空間が精査されている。もっと複雑なものとしては、戦車のように耳が聞こえない沈黙がある。