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

 
ALXIMIKS:

+ 選択時にオープンチケットのOrderClosetimeも確認すると便利とどこかで読みました(=0にしているそう です)。
チケットによる選択用です。ここでは、インデックスによる選択です。
 

こんにちは。

いつものように、マジックナンバーで保留中の注文を 正しく選択する方法がわかりませんので、ヘルプが必要です。どなたかお手本になるようなコードを送っていただけませんか。ありがとうございました)。

 
zaqwsx123:

こんにちは。

いつものように助けが必要です。保留中の注文をマジックナンバーで正しく選択する方法がわからないのです。どなたかお手本になるようなコードを送っていただけませんか?ありがとうございました)。


alximiks 2013.09.11 21:36 #

void DeletePendingOrders()
{
    int NumberOfTry,
        err,
        ticket;

   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() > 1)
      {
         ticket = OrderTicket();
         NumberOfTry=0;

         while (NumberOfTry < 5)
         {
            while (!IsTradeAllowed()) Sleep(5000);
      
            if (OrderDelete(ticket, Red))
                breake;
            else
                err = GetLastError();
      
            if (err > 0)
            { 
              Print(NumberOfTry," #",ticket," Error modifing order: (", err , ") ");
              Sleep(5000);  NumberOfTry++;
            }
         }
      }
   }
}

以前、このコードについて助けを求めた人がいました。これは、すべての保留中の注文を削除する方法の例です。

テスターでは常に適切であるとは言い切れないので、実機では何も言わないことにする

 
ALXIMIKS:

以前、ある方からこのコードについてのヘルプを求められたことがあります。

テスターでコードが常に適切かどうかはわからない。

よくわからないのですが、コードに自信がないのであれば、なぜ質問者に見せるのでしょうか?答えは常に正しいはずで、「もしかしたらうまくいくかもしれない-そこでいくつかミスをした」ではない...。
 
zaqwsx123:

こんにちは。

いつものように助けが必要です。保留中の注文をマジックナンバーで正しく選択する方法がわからないのです。どなたかお手本になるようなコードを送っていただけませんか。ありがとうございました。)

最後に開いた任意の注文を選択し、そのチケットを返送します。そのような順序がない場合,-1 を返す.

//-----------------------------------------------------------------------------+
int GetTicketLastOpenOrder(string sy, int op, int mn) {
   int   i, j=-1, t=0, k=OrdersTotal()-1;
   for (i=k; i>=0; i--) {                       // цикл от конца к началу
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderMagicNumber()!=mn)   continue;// если магик не тот - переходим к следующему
         if (OrderSymbol()!=sy)        continue;// если символ не тот - переходим к следующему
         if (OrderType()!=op)          continue;// если тип не тот - переходим к следующему
         if (t<OrderOpenTime()) {   // выбран нужный, ...
            t=OrderOpenTime();      // ... ищем последний ...
            j=i;                    // ... открытый ордер
            }
         }
      else Print("FUNC GetTicketLastOpenOrder() ошибка выбора ордера "+GetLastError());
      }
   if (OrderSelect(j,SELECT_BY_POS)) return(OrderTicket()); // если найден ордер, вернём его тикет
   return(-1);                                              // иначе - возвращаем -1
}
//-----------------------------------------------------------------------------+
 
artmedia70:
コードに自信がないのなら、なぜ質問者に見せるのか、理解できない。答えは常に正しいはずで、「もしかしたらうまくいくかもしれない-そこでいくつかミスをした」なんてことはない...。

まあ、それがこの人の自己主張なんだけどね。

彼はここですでに傲慢さを発揮しています。

 
PapaYozh:

まあ、それがこの人の自己主張なんだけどね。

彼はここですでに傲慢さを見せている。

まあ...妻を殴る人もいれば、掲示板でヤジを飛ばす人もいるし、革命を起こす人もいる...。人はそれぞれです。人それぞれです。
 
artmedia70:
まあ......妻を殴る人、掲示板でヤジる人、革命を起こす人......。人はそれぞれです。人それぞれです。

夜、ある人から質問を受けた場合、その答えはそれほど複雑なものではないが、私の経験不足のため、純粋に原理的に、そのコードが100%正しいことを保証することはできない。

プロからの回答を8時間待つ方がいいのか?

あるいは、私のコードを正しくするための素早い手助けをしてくれるかもしれません(開発者が絶望的でなければ・・・)。

私は2番目の選択肢を選びましたが、それは正当なことで、好きなように考えて、幸せになることだと思います。

 
ALXIMIKS:
artmedia70 です。
まあ...妻を殴る人もいれば、掲示板でギャーギャー騒ぐ人もいるし、革命を起こす人もいる...。人はそれぞれです。人それぞれです。

夜、ある人から質問を受けた場合、その答えはそれほど複雑なものではないが、私の経験不足のため、純粋に原理的に、そのコードが100%正しいことを保証することはできない。

プロからの答えを待つのに8時間待つ方がいいんですか?

もちろん、初心者は熟睡して有能な答えを得るよりも、朝まで待って他人のコードのエラーを探した方がいいに決まっている。

どういうことかというと、初心者に答えるときは、その人がまったく経験がない可能性があることを考えなさいということです。

 

ライブラリ hoz_LoggingToAnywhere@Library.mq4 があり、ヘッダファイル hoz_Base@Include.mqh から呼び出される。

ライブラリ hoz_LoggingToAnywhere@Library.mq4 をコンパイルすると、ログに表示されます。

'StringConcatenate' - incompatible types        D:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\include\hoz_Base@Include.mqh (75, 12)

行ってみると...。そして、そこで私は見た。

   //---- Контролируем возможные ошибки
   fPrint (StringConcatenate ("fInitBase() => ", fErrorToString (bi_Err)));

他のライブラリから このfPrint 関数を呼び出しても、どこも非難されないが、ヘッダーファイルからは...非難 される。なぜそうなのでしょうか。すでに文字から文字へコピーされている...。