エラー、バグ、質問 - ページ 3178

 
Andrei Sokolov #:

今、私はOrderSelect()の 後にさらにOrderSelect()の呼び出しが あるアルゴリズムに遭遇しました。したがってOrderSelect()の 後にさらにOrderSelect()の呼び出しがあり、囲んだOrderSelect()が別の注文を「選択」する場合は警告が必要 であると考えています。

ループを書いたとします。
for(int i=...; ...; i++) {.
...
}
そして、ループの中では、イテレータiはある条件のもとでその値を変化させる。
また、警告を表示する必要があるのではないでしょうか?

 
Sergey Gridnev #:
ループを書いたとします。
for(int i=...; ...; i++) {.
...
}
そして、ループの中では、イテレータiはある条件のもとでその値を変化させる。
警告も発生させなければならないのでしょうか?

+++ チケットや同じ機能・構造の配列の関数変数の制御、あるいは患者のxではなくyの温度や圧力の制御。

温度よりxまたはigcのZY制御)))
 
Sergey Gridnev #:
ループを書いたとします。
for(int i=...; ...; i++) {.
...
}
そして、ループの中では、イテレータiはある条件のもとでその値を変化させる。
警告も発生させるべきでしょうか?

はい。
しかし、そのような条件で警告が実施されるとは思えないので、これ以上議論しても意味がないと思います。

 
Andrei Sokolov #:

はい。
しかし、そのような条件で警告が実施されることはないと思いますので、これ以上議論しても意味がないと思います。

ベイスコアでは一般的に害悪で、ここでもループを使ったトップダウンではプログラミング環境とアルゴリズムが改善されません。

あくまでもアルゴリズムの厳密さ、正しさです。これ以上ない。そして、その言語のルールと可能性を理解すること。

 
Andrei Sokolov #:

はい。
しかし、この条件では警告は実行されないと思うので、これ以上議論しても 仕方がないと思います。

最初から、この問題を議論するポイントがまったくなかったのだ。mql5の問題が議論されているスレッドで、mql4の問題を書いているのですね。最初からmql4に関する質問だと言っていれば、誰も答えてくれなかったでしょう。

 
Alexey Viktorov #:

mql5の問題が議論されているスレッドで、mql4の問題点を書いていますね。

これはどこに書いてあるのですか?

 
Alexey Viktorov #:

最初から、この問題を議論する意義がまったくないのです。

アレクセイ、あなたは最初に指摘しようとして、今度はそれが意味を持つところとそうでないところを他人に決めさせようとしている。

建設的な回答がないのであれば、このような無意味なやりとりを誘発することはあり得ません。

 
Andrei Sokolov 関数呼び出しを 含む他のOrderSelect()呼び出しがある場合、コンパイラが警告を表示してくれると便利だと思うのですが。

昨日徹夜でバグを探し、この理由で2回目です。

void Trailing()
{
   for(int i=OrdersTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber()==magic)
         {
            if(OrderType() == OP_BUY)
            {
               if(Bid >= GetAveragePrice(OP_BUY)+start_tral_level*Point)//OrderOpenPrice()
               {
                  if(Bid >= OrderStopLoss()+(tral_stop+tral_step)*Point || OrderStopLoss()==0)
                  {
                     if(!OrderModify(OrderTicket(), OrderOpenPrice()
                     , NormalizeDouble(Bid-tral_stop*Point, Digits), OrderTakeProfit(), OrderExpiration())) 
                     {
                        Print("Trailing buy err ", GetLastError());
                     }
                  }
               }
            }
            if(OrderType()==OP_SELL)
            {
               if(Ask <= GetAveragePrice(OP_SELL)-start_tral_level*Point)//OrderOpenPrice()
               {
                  if(Ask <= OrderStopLoss()-(tral_stop+tral_step)*Point || OrderStopLoss()==0)
                  {
                     if(!OrderModify(OrderTicket(), OrderOpenPrice()
                     , NormalizeDouble(Ask+tral_stop*Point, Digits), OrderTakeProfit(), OrderExpiration())) 
                     {
                        Print("Trailing sell err ", GetLastError());
                     }
                  }   
               }   
            }   
         }
      }
   }
}
double GetAveragePrice(int in_type)//расчет средней цены позиций
{
   double dRes=-1;
   double dSum=0;
   double dLot=0;
   double dComission=0;
   double dSwap=0;
   int iTotalPos=OrdersTotal();
   for(int cnt=0;cnt<iTotalPos;cnt++)
   {
      if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) Print( "Error Select Order");
      {
         if(OrderType()==in_type && OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
         {
            dSum+=OrderOpenPrice()*OrderLots();
            dLot+=OrderLots();
            dSwap+=OrderSwap();
            dComission+=OrderCommission();
         }
      }    
   }     
   if(in_type==OP_BUY && dLot!=0) dRes=dSum/dLot-dSwap/dLot*Point-dComission/dLot*Point;
   if(in_type==OP_SELL && dLot!=0) dRes=dSum/dLot+dSwap/dLot*Point+dComission/dLot*Point;
   
   return dRes;
}
すでに多くの建設的な回答が寄せられていますね。あとは、このスレッドでmql4の問題点を議論しているドラえもんに注目するのみ...。
 
Alexey Viktorov #:

このコードを見れば、mql4についてであることは一目瞭然です。最初に気にしておけばよかったと思います。

すでに多くの建設的な回答が寄せられていますね。あとはTumblrがこのスレッドのmql4問題の議論に注意を払うだけです...。

mql5の問題だけを取り 上げるというのはどこに書いてあるのですか?

 
Andrei Sokolov #:

では、どこにmql5の問題だけが議論されて いると書いてあるのですか?

mql4は予約済みで、フォーラムに別のセクションが あります。その他はすべてmql5