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

 
Rustam Bikbulatov:

ありがとうございます!!では、私のコードに絞り込んでみますね。 なぜ1行目に(void)なのでしょうか?

また、関数名に「買い注文を考慮する」と書かれているのに、なぜ注文タイプを 指定する必要があるのでしょうか?
 
Artyom Trishkin:
また、関数名に「買い注文を考慮する」と書かれているのに、なぜ注文の種類を 指定する必要があるのでしょうか?

名前は数秒で変えられるが、コードそのものが問題

 
Rustam Bikbulatov:

名前は数秒で変更できるが、コード自体に問題がある

問題はコードではなく、あなたの理解力にあるのです :)

//+------------------------------------------------------------------+
int fMarketOrdersOpen(const ENUM_ORDER_TYPE order_type)
  {
   int total=OrdersTotal(), count=0;
   for(int i=total-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS))
        {
         if(OrderType()!=order_type) continue;
         if(OrderMagicNumber()==123 && OrderSymbol()==Symbol())
            count++;
        }
     }
   return count;
  }
//+------------------------------------------------------------------+
 
Rustam Bikbulatov:
みんな。私の脳みそはすでに沸騰しています(( この注文数量の 定義をどのように使用するのか、アドバイスをお願いします。

は、ロット単位で量を作るのですか?変えるべきところ、手を加えるべきところは?

double fMarketOrdersOpenB(int type){
   double c=0,aBuyCount=0;
   for(int i=0;i<OrdersTotal();i++){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==123){
            switch(OrderType()){
               case OP_BUY:aBuyCount+=OrderLots();break;
              }}}else{return(-1);}}
   if(type==OP_BUY)c=aBuyCount;return(c);}

少なくとも1つのオーダーを選択できなかった場合、この関数は -1 を返します。

タイプがOP_BUYに該当する場合、買いロット数を取得します。

typeの値が異なる場合、0を返します。

タスクを正しく理解していれば、ユニットのカウントをBUYオーダーロットのカウントに変更する。
 
Kirill Belousov:

少なくとも1つのオーダーが正しく選択されていない場合、この関数は -1 を返します。

タイプがOP_BUYに該当する場合、買いロット数を取得します。

typeの値が異なる場合、この関数は0を返す。

もし私がこのタスクを正しく理解しているならば、それは個数をBUYオーダーのロット数に変更することです。

はい、その通りです。

 
Artyom Trishkin:

問題はコードではなく、あなたの理解力にあるのです :)

プログラミングを完全に理解しているわけではないのは同意です。

 
当初はこのコード
int fMarketOrdersOpenB(int type){
   int c=0,aBuyCount=0;
   for(int i=0;i<OrdersTotal();i++){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==123){
            switch(OrderType()){
               case OP_BUY:aBuyCount++;break;
              }}}else{return(-1);}}
   if(type==OP_BUY)c=aBuyCount;return(c);}

を挿入する必要があります。

     .........
double lts=fMarketOrdersOpenB(OP_BUY);
   if(lts>0){
         int irv2=OrderSend(Symbol(),OP_BUY,lts,Ask,3,0,0,NULL,123,0,CLR_NONE);}

私のコードは注文 数を表示しますが、すべての買い注文のロット数量が必要です。

 
Rustam Bikbulatov:
このコードは、もともと

を挿入する必要があります。

私のコードは注文 数を表示し、すべての買い注文のロット数量が必要です。

最も重要なのは、正しい質問をすることです。

自分に 必要なものを自分で見つける

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
Vitaly Muzichenko:

最も重要なことは、正しい質問をすることです。

必要なものを 探す

見て、試してみました。すでにたくさん役立っていますが、私の理解には限界があります。

 
Rustam Bikbulatov:
みんな。もう、脳みそが沸騰しそうです(( この定義から注文 数を出す方法を教えてください。

は、ロット単位で量を作るのですか?変えるべきところ、手を加えるべきところは?

double fMarketOrdersOpenB(const ENUM_ORDER_TYPE type)
{
     double lots=0;
     for(int i=0;i<OrdersTotal();i++)
     {
          if( !OrderSelect(i,SELECT_BY_POS,MODE_TRADES) )   continue;
          if( OrderSymbol()!=Symbol() )                     continue;
          if( OrderMagicNumber()!=123 )                     continue;
          if( OrderType() != type )                         continue;
          lots += OrderLots();
     }
     return(lots);
}