MQL5言語をゼロから独学で学ぶ - ページ 66

 
Valeriy Yastremskiy:

ループ本体内のループ演算子および演算子。古典的なロシアとはちょっと違う。

もちろんすべて順調なのですが、ループ本体のイテレータiはどこにあるのでしょうか?そして、ポジション記号とそのマジックナンバーを取得するためには、まずそれを選択する必要があります。ポジションの説明は構造体(MQL5ではすべての構造と注文と時間と取引)であり、ポジションチケットではなく、ポジション番号であるイテレータによって、選択によって記入されます。 そして、ポジション説明の構造体では、常に最後のポジション選択であることを忘れてはなりません。

ヴァレリーさん、こんにちは。分かりやすい説明ありがとうございます。

というのも、for loop演算子がないとすべてうまくいくのに、なぜかあるとうまくいかないからです。まず、必要な問い合わせをすべてリクエストで 行うということでよかったでしょうか。

ウラジミールさん、ありがとうございます。

 
MrBrooklin:

ヴァレリーさん、こんにちは。分かりやすい説明ありがとうございます。

というのも、for loop演算子がないとすべてうまくいくのですが、for loop演算子があるとなぜかうまくいかないのです。まず、必要な問い合わせをすべてリクエストで 行う必要があるということでよかったでしょうか。

ウラジミールさん、ありがとうございます。

いいえ、私はMKL5をよく知らないのですが......。これは、実行のための要求です。そして、さらに作業するためには、ポジションを その番号で選択 する必要があります。

ポジションセレクト

そうだと思います。

 
MrBrooklin:

皆さん、ご機嫌いかがでしょうか?

プロフェッショナルの皆様へ そうでなければ、私はMQL5プログラミング言語を学ぶことができません。

ウラジミールさん、ありがとうございます。

こんにちは!問題は、オープンポジション のループを適用したことです。"if "の観点で定義していない、つまり、forループが一体何を探すのか、まだ完了していない、それは何かを返さなければならない......。

オープンポジションはずっとカウントされているので、ループでブロックを作って、オープンしたら、例えばこんな風に呼び出すと良いですね。

input int MaxOpenedPositions=1;
.
.
.
int Total=TotalPositions(-1);
if(Total<MaxOpenedPositions && другие условия для открытия) OpenBUY();//например
if(Total<MaxOpenedPositions && другие условия для открытия) OpenSELL();//например

//+------------------------------------------------------------------+
//| Total Positions                                                  |
//+------------------------------------------------------------------+
int TotalPositions(int Type)
   {
int cnt=0;
if(PositionsTotal()>0)
for(int i=PositionsTotal()-1;i>=0;i--)
   
if(PositionSelectByTicket(PositionGetTicket(i)) && PositionGetString(POSITION_SYMBOL)==_Symbol && PositionGetInteger(POSITION_MAGIC)==MagicNumber) 
   {
   if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) {cnt++;continue;}
   if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL) {cnt++;}
   }
   return(cnt);
   }
 
Valeriy Yastremskiy:

いいえ、私はMKL5をよく知りません。これは、実行のための要求です。そして、さらに作業するためには、ポジションを 番号で選択 する必要があります。

ポジションセレクト

そうだと思います。

PositionSelectを含め、すべて試しました。どれも役に立たなかった。

ウラジミールさん、ありがとうございます。

 
VVT:

こんにちは!要するに、オープンポジションの ループを適用したときに、if条件で指定しなかったこと、つまり、forループが何をしようとしているのか、また、何らかの方法で終了しなかったこと、そして、それは何かを返すべきである...ということです。

オープンポジションは常に計算されているので、例えばループでブロックを作り、オープンした時に呼び出すようにするとよいでしょう。

こんにちは。

ご指摘ありがとうございます。貴社のオープンポジションの列挙方法を分析し、応用してみたいと思います。

ウラジミールさん、ありがとうございます。

 
VVT:

こんにちは! 要するに、オープンポジションを 検索するループを適用したときに、「if」で指定していない、つまり、forループが具体的に何を検索するのか、そして、何も終了させていない、何かを返すはずだ...ということです。

ところで、MQL5 Referenceには、ループが完了したときに何かを返さなければならないことについては、何も書かれていません。もしかして、私が何か勘違いしているのでは?それとも、if 文のことを指しているのでしょうか?

ウラジミールさん、よろしくお願いします。

 
MrBrooklin:

PositionSelectを含め、すべて試しました。何も役に立ちませんでした。

ウラジミールさん、ありがとうございます。

しか理解できない、そう、番号ではなく、ツールによるネットの位置選択。あ、失敗したんだ)。

を通じて可能です。

  • PositionGetTicketはポジション番号でポジションチケットを返し、ポジションチケットを受け取った後、そのシンボルとマジックを取得することができます。
あるいは、ネッティングであれば、1つの商品には1つのポジションしか持てないのに、なぜ注文や ポジションの総数が必要なのか、それを考えることもできますし、それを知る必要があります。だから、サイクルは必要ないかもしれません。PositionSelectがFalseを返したらポジションを開き、Trueを返したらこの商品のポジションを選択し、それを操作してトローリング用に変更することができます。
 
Valeriy Yastremskiy:

今気づきましたが、そうです、ネッティングのポジション選択は、番号ではなく、楽器で行います。ああ、メチャクチャだ(笑)。

を通じて可能です。

  • PositionGetTicketはポジション番号でポジションチケットを返し、ポジションチケットを取得すると、そのシンボルとマジックを取得することができます。
あるいは、ネッティングであれば、1つの商品には1つのポジションしか持てないのに、なぜ注文や ポジションの総数が必要なのか、それを考えることもできますし、それを知る必要があります。だから、サイクルは必要ないかもしれません。もしPositionSelectがFalseを返したら、ポジションを開き、もしTrueなら、このシンボルのポジションを選択し、それを使ってトローリング用に修正することができます。

ですから、このコードは、後で気になって試してみたものの、もともとはループ演算子なしで書かれていたのです。

ウラジミールさん、ありがとうございます。

 
MrBrooklin:

ちなみに、MQL5 Referenceには、ループが完了したら何かを返すべきということは書かれていない。もしかして、また勘違いしてしまった?

敬具 ウラジミール

イテレータに応じたアクションをループ本体で実行する必要があるため、表現が正確ではありません。イテレータによる。そして、ループ本体でこれらのアクションを実行した結果が返されるべきなのです。ループを通過し、breakやcontingency演算子がなかった場合、Expression 3からExpression 2に進み、Trueであればそれを新しいイテレータでループ本体に返すということです。

 
MrBrooklin:

そのため、もともとループ演算子を使わないで書いていたのですが、それをどう適用するかに興味を持ちました。

ウラジミールさん、謹んで申し上げます。

応募することができます

  • PositionGetTicketは、ポジション番号でポジションチケットを返し(番号もある)、ポジションチケットを受け取った後は、そのシンボルとマジックを取得することができます。

すべてのチケットを番号順に見ていく。そして、チケットを通して、そのポジションのシンボルを 見つけ、私たちのものと比較するのです。ポジションマジックを入手して、我々と比較してみてください。

if(PositionSelectByTicket(PositionGetTicket(i)) && PositionGetString(POSITION_SYMBOL)==_Symbol && 
PositionGetInteger(POSITION_MAGIC)==MagicNumber) // вот эта строчка

しかし、その理由だけは。