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

 
Vitaly Muzichenko:

このようなデザインのどこに問題があるのでしょうか?

それとも、datetime をlong型にした方が良いのでしょうか?

今のところ問題はないですね。
しかし、明らかに正確さを渇望している(控えめに言っても、datetimeはtime_tより大きい)。
であり、むしろ時間的な比較のために長いはずです。コンパイラが何かを最適化すると、それを捨ててしまい、将来のための保証金が残ってしまうのです :-)
 
Maxim Kuznetsov:
今のところ問題はないですね。
しかし、より正確になる傾向が明らかにある(datetimeはtime_tよりソフトに大きくなる)
であり、このlongは時間を比較するために使うべきものである可能性が高い。もしコンパイラが何かを最適化したら、それを捨てて、将来のための保証金を残すでしょう:-)

では、不正をしなくても結果的に使えるのですか?

 
Vitaly Muzichenko:

では、不正をしなくても結果的に使えるのですか?

まあ、結果が伴わないわけがないのですが :-)

long x =TimeCurrent(); すでに、いい会社で「平手打ち」される :-)物理的な違いだけでなく、寸法も違うので、大きいタイプを小さいタイプに変換するのです。

しかし、(datetime)TimeCurrent からのすべての秒は、long に収まるようです。

 
Maxim Kuznetsov:

StringFind() という素晴らしい関数が あります - 文字列 "#" またはすぐに "from #" が現れるかどうかを検索します。

発見
StringFind(OrderComment(),"to #",0)


そして、それをどうするのか?

StringSubstrでは、すべてが明確で、すぐに数字を得ることができます - チケット、しかし、ここでStringFindでは 、我々はすでにコメントに"#に " があることを知っています。

 
PolarSeaman:
発見


とか、どうしたらいいんだろう?

StringSubstrでは すべてが明確である、我々はすぐに数字を得る - チケットが、ここでStringFindで 何を、我々はすでにコメントに"#に " があることを知っている。

が、どこかはわからない)。StringFindは、探している "to #"がこの位置にあるのか、それとも全くないのかを教えてくれる。ネットから流れてきたもので、あなた個人/個人が管理していないものは、決して当てにしないでください :-)私たちはここでお金を使っているのです。

 
Maxim Kuznetsov:

が、どこにあるのかわからない:-)StringFindは、探している「to #」がまさにこの位置からか、あるいはまったくないかを教えてくれるのです。ネットから流れてきたもので、あなた個人/個人が管理していないものは、決して当てにしないでください :-)私たちはここでお金を使っているのです。

は、コメントからチケットをハイライトして、"to #" を捨てる必要があります。

オープンポジションの チケットは、クローズドポジションのコメント内のものと比較されます。

なぜ、"to #"を探すのか?

 

StringSubstr 関数は、コメントの右側部分を返します。なぜこの関数は、オープンポジションの 利益を返し、クローズドポジションの利益を返さないのですか?MODE_HISTORYを 通すと

double prof_cl_pos(string sy="0", int op=-1, int mn=-1) {
  datetime ta;
  int      i, k=OrdersHistoryTotal();
  double profit_=0;
  string comment="";
  string substr="";

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              comment=OrderComment();
               substr = StringSubstr(comment, 4, 9);
              if (ticket_op_pos(Symbol(), -1,mn)==substr)
              profit_=OrderProfit();
            }
          }
        }
      }
    }
  }
  return(profit_);
}
 
Vitaly Muzichenko:

そのような作りの弊害は何でしょうか。

それとも、datetime をlong型にした方が良いのでしょうか?

datetimeはulongであり、そこに置くべきである。
 
PolarSeaman:

チケットはコメントからハイライトされ、"to #"は破棄 されるはずです。

オープンポジションの チケットは、クローズドポジションのコメント内のチケットと比較する必要があります。

なぜ、"to #"を探すのか?

コメントに「to#やfrom#まであるのか」を調べるために探しているのです。ないのであれば、この注文はクローズドポジションの一部ではないので、必要ないのです。

StringFind(OrderComment(), "#to") が0以上であれば、コメントは求められたサブストリングを含んでおり、今だけこのストリング内のチケット番号の位置を計算できることを意味します。

 
PolarSeaman:

StringSubstr 関数は、コメントの右側部分を返します。なぜこの関数は、オープンポジションの 利益を返し、クローズドポジションの利益を返さないのですか?MODE_HISTORYを 経由しています。

そして、その答えがこれです。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

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

ポーラーシーマン さん 2018.04.07 00:25

発見
StringFind(OrderComment(),"to #",0)


そして、それをどうするか?

すべてがStringSubstrで 明確である、あなたは数字 - チケットを得るが、ここでStringFindで 何を、我々はすでにコメントに"#に " があることを知っている。


でも、そうしないと、まったく違うものができてしまうんです。