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

 
Aleksei Stepanenko #:
は以上である。これは,配列の 最初の要素も 考慮する必要があり,その配列中のインデックスが 0 であるためである。
皆さんはどのような配列のことをおっしゃっているのでしょうか。OrdersTotalがそのように動作しない場合。配列ではなく、数値を返す関数です。
 
Aleksei Stepanenko #:
いや、いいんです。ポジションがない場合、i=OrdersTotal()-1 は -1 となる。また、ループ条件i>=0はすぐには実行されない。また、プログラムがループに入ることはありません。
しかし、これは正しくありません。「注文の合計」は1であり、つまり、常にループから1つの注文を除外することになります。
 
Nerd Trader #:
みんながここで言っている配列がよくわからないんです。OrdersTotalがそのように動作しない場合。

注文は本来、プログラムの中で配列になっているのですが、それが見えていないだけなのです。OrdersTotal は ArraySize と等しく、要素数の合計を示す。

配列の場合、最初の要素のインデックスは常に0から始まり、最後の要素のサイズから1を引いた値になります。

Пример: всего 5 ордеров, индексы: 0,1,2,3,4.

или массив из 5 элементов, индексы те же.

for(int i=5-1; i>=0; i--)
 
Aleksei Stepanenko #:

注文は本来、プログラムの中で配列になっているのですが、それが見えていないだけなのです。OrdersTotal は ArraySize と等しく、要素数の合計を示す。

配列の最初の要素のインデックスは常に0であり,最後の要素のサイズはそれぞれマイナス1である.

OrdersTotalが配列でない場合、注文がどこにあるかで何が違うのでしょうか。配列のインデックスではなく、注文数を返します。

 
Nerd Trader #:
しかし、それは正しくありません。「注文の合計」は1であり、1つの注文が常にループから除外されることが判明しました。

注文は番号付きリストで...リストは0からカウントダウン...

例えば

シリアルナンバー0、購入タイプ、ロット0.1

シリアルナンバー1、セルタイプ、ロット1

シリアルナンバー2、セルタイプ、ロット0.5

シーケンス番号3、買いタイプ、ロット0.16

今、OrdersTotal()を呼び出すと、=4となります。

しかし、リストのすべての行をナビゲートしたい場合は、0 1 2 3 の番号を通過する必要があり、4 番はここにはありません...4 つの命令がありますが...。

だから、ループを組むときに、注文数からマイナス1する、という仕掛けになっている...。


ナードトレーダー#:

OrdersTotalが配列でない場合、注文がどこにあるかはどのような違いがあるのでしょうか。配列のインデックスではなく、注文数を返します。

正解です。しかし、暗黙の事実として、注文数があれば、リスト内のすべての注文数を取得することができます。
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.10.19
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
OrdersTotalは 合計数ですが、ほとんどすべてのプログラミング言語でのインデックスは1ではなく0から始まります。ただ、慣れることです。1台分後ろにずらせば、それだけで、思ったとおりの結果になります。
 
Nerd Trader #:

OrdersTotalが配列でない場合、注文の位置はどうなるのでしょうか?

配列に含まれるオーダーの数とその序数は別物です。また、チケットもあります)
 
Nerd Trader #:
しかし、これは正しくありません。"sum of orders "は1であり、これは1つの注文が常にループから除外されることを意味します。

もし、"-1 "が気に入らない場合は、次のようにします。

for(int i = OrdersTotal(); i >= 1 ; i --)
 
Aleksei Stepanenko #:

注文は本来、プログラムの中で配列になっているのですが、それが見えていないだけなのです。 OrdersTotal は ArraySize と等しく、要素数の合計を示す。

配列の場合、最初の要素のインデックスは常に0から始まり、最後の要素のサイズは-1です。

トータルインデックスとアレイインデックスは別物なわけですが、なぜ同じだと思うのでしょうか?インデックスが1の配列を作るには、0ではなく1を入力します(int ar[1])ので、ArraySize( ar ) も0ではなく1が返されます。

 
MakarFX #:

もし、"-1 "が気に入らない場合は

for(int i = OrdersTotal(); i > 0 ; i --)

0のオーダーはスキップされます。

正しい方法は以下の通りです。

for(int i = OrdersTotal()-1; i >= 0 ; i --)
 {
 }