どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 120

 
hoz:


これはもう、私の中では眠気のサインなんです。

でも、そんなことはどうでもいいんです。テスターでフクロウを動かしています。スクリーンショットでは、保留中の注文や成行注文がないことがお分かりいただけると思います。

別件関数も、別件関数を複製して必要な値を表示させた標準コメントも、常に成行注文と未決済注文があることを示しています。

このような機能です。

最初から呼び出して、最初はカウンターの値もゼロにリセットしています。

まあ、それはそれとして、t++はどちらにしても動作します。
 
Forexman77:

EAを少し作り直し、コードにコメントを入れました。シグナルとストップの形成に注目してください。特に何も考えずに入れています。必要に応じてお好みで変更してください。

ファイル:
 
artmedia70:
まあ、t++はどっちでもいいんだけどね。


唯一の選択肢はこれか?

//+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
void FindOrders(int& t, int& p)
{
   t = 0;
   p = 0;
 
   for (int i=OrdersTotal() - 1; i>=0; i--)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderType() > 1 && OrderType() < 6)
      {
          p++;
          t++;
      }
      else if (OrderType() < 2)
          t++;
      else 
      {
         Print("Позиций в рвнке нет!");
      }
      
      pr ("FindOrders(): " + "t = " + t);
      pr ("FindOrders(): " + "p = " + p);
   }
}

たいしたことないように見えるけど。最適化されていない。t++の 繰り返しは嬉しくない...。

 
hoz:


唯一の選択肢はこれか?

たいしたことないように見えるけど。最適化されていない。t++の 繰り返しは嬉しくない...。

また、なぜtを増やしたいと思うのでしょうか?実際、とにかく何があるのか。

if (OrderType() > 1 && OrderType() < 6)
      {
          p++;
          t++;
      }
      else t++;

オーダータイプが 1以上6未満の場合、pを 増加させ、tを 増加させる。

それ以外の場合(オーダータイプが==6であっても)、再度、t

不思議ですよね。

 
artmedia70:

とにかくtを増やしたいのはなぜ?実際、とにかく何があるのか。

オーダータイプが1以上6未満の場合、pを 増加させ、tを 増加させる。

そうでない場合は(オーダータイプ==6でも)、再びt

不思議ですよね。




あなたのコメントを書いている間に、私はすでに自分のコメントを書き換えていました。上記は修正版です。
 
hoz:

あなたのコメントを書いている間に、私はすでに自分のコメントを書き換えていました。上記は修正版です。
なぜ、注文が保留中の場合はtを増やし、次の注文が成行注文の場合はまたtを増やさなければならないのでしょうか?
 
6つの要素からなる配列を作成します。参照で関数に渡す。注文が選択され、それがすべてのフィルタ (シンボル、マジック) に適合したら、注文タイプで指定された配列セルをインクリメントします。関数が実行されると、配列にタイプ別に並べられた注文の 数が表示されます。
 
artmedia70:
また、注文が保留中であればtを増加させ、次の注文が成行注文であれば再びtを増加させるのはなぜでしょうか。


t は全オーダーの数です。

p- 保留注文の数

もし、その条件が

if (OrderType() > 1 && OrderType() < 6)

が真であれば、tと pの 両方がインクリメントされる。なぜなら、タイプ2から5のオーダーは、保留と一般オーダーの両方であるからである。つまり、両方のカウンターをインクリメントする必要があります。そして、その条件が成立すれば

else if (OrderType() < 2)

すると、保留中の注文はないが、成行注文はある。つまり、t カウンター、つまり総注文数のカウンターを増やすということです。

そして、何もなければ、注文がないことを印刷します。

 
artmedia70:
6つの要素からなる配列を作成します。参照で関数に渡す。注文が選択され、それがすべてのフィルタ (シンボル、マジック) に適合したら、注文タイプで指定された配列セルをインクリメントします。関数が実行されると、配列にタイプ別に並べられた注文の数が表示されます。

ここでは配列の方が望ましいということは既に理解しています)))上記の変形に矛盾はないでしょうか? (興味本位ですが、これですべてクリアできそうです)。
 
hoz:

ここでは配列が望ましいということは、すでに理解しています)))その場合、私が上に書いたものは不正確なのでしょうか? (興味本位ですが、もう全ては明らかだと思います)

これはどうでしょう?

//+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
void FindOrders(int& t, int& p)
{
   t = 0;
   p = 0;
 
   for (int i=OrdersTotal() - 1; i>=0; i--)
      {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderType() > 1 && OrderType() < 6)   p++;
      if (OrderType() < 6)  t++;
       }
  pr ("FindOrders(): " + "t = " + t);
  pr ("FindOrders(): " + "p = " + p);
}