初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 897

 
明確なようで、そうなのでしょう。いつもありがとうございます。
 
Alexey Viktorov:
できます。

どうやって?

 
Andy:

どうやって?

この子はもう全部話してくれたよ。

 
Alexey Kozitsyn:

ポジションIDは変わりません。トランザクションの検索に使用します。

ありがとうございます。清算後、この関数は意図したように取引の平均価格を返さず、再開されたポジションの 価格を返します。どこがエラーなのか、教えてください。

double Aver_Pr_sell_nett()
  {
   double total_price_multiply_volume_sell   = 0.0;
   double total_volume_sell                  = 0.0;
   double net_price_sell_=0.0;
   string symb=_Symbol;
   int    total       =0;  // 

   for(int i=0; i<PositionsTotal(); i++)
     {
      ulong pt=PositionGetTicket(i);
      long ID=PositionGetInteger(POSITION_IDENTIFIER);
      if(PositionGetString(POSITION_SYMBOL)==symb && HistorySelect(PositionGetInteger(POSITION_TIME),TimeCurrent()+60))
        {
         //--- Получим количество сделок в полученном списке
         total=HistoryDealsTotal();
         //--- Пройдем по всем сделкам в полученном списке
         for(int i=0; i<total; i++)
           {
            ulong dt = HistoryDealGetTicket(i);
            long did = HistoryDealGetInteger(dt, DEAL_POSITION_ID);
            ENUM_DEAL_ENTRY in_out=HistoryDealGetInteger(dt,DEAL_ENTRY);
            if(did==pt && in_out==DEAL_ENTRY_IN)
              {
               if(m_position.PositionType()==POSITION_TYPE_SELL)
                 {
                  total_price_multiply_volume_sell+=PositionGetDouble(POSITION_PRICE_OPEN)*PositionGetDouble(POSITION_VOLUME);
                  total_volume_sell+=PositionGetDouble(POSITION_VOLUME);
                  if(total_price_multiply_volume_sell!=0 && total_volume_sell!=0)
                    {
                     net_price_sell_=total_price_multiply_volume_sell/total_volume_sell;
                     
                    };
                 }
              }
           }
        }
     }
//---
   return(net_price_sell_);
  }
 
Sile Si:

ありがとうございます。清算後、この関数は意図したように取引の平均価格を返さず、再開されたポジションの 価格を返します。どこがエラーなのか、教えてください。

ポジションを決めて仕事をしている人は、ポジションを決めて仕事をしてください。トレードに取り組んでいる人は、トレードに取り組んでください。取引は、ポジションの価格ではなく、取引の価格です。

 
Alexey Kozitsyn:

ポジションを決めて仕事をしている人は、ポジションを決めて仕事をしてください。トレードに取り組んでいる人は、トレードに取り組んでください。取引では、ポジションの価格ではなく、取引の価格が表示されます。

ポジションのオープンに 関わる取引は選択しなかったのでしょうか?

 
Sile Si:

ポジションのオープンに 関わる取引は選択しなかったのでしょうか?

アルゴリズムは簡単で、ポジションを選択し、ポジションIDによって、そのすべてのトレードを選択します。ポジションの出来高を形成する取引のみを選択し、クリアリング取引を除外することができます。

ポジションを選択すると、その案件が送られてくるので、その案件の価格を要求しますそして、具体的な取引ごとの価格が必要です。

 
Alexey Kozitsyn:

そして、具体的な取引ごとの価格が必要です。

すみません、ポジションの代わりにトレードを選択する方法がわかりません、教えてください)

 
Sile Si:

すみません、ポジションの代わりにトレードを選択する方法がわかりません、教えてください)

ulong dt = HistoryDealGetTicket(i);
 
Alexey Kozitsyn:

なるほど、そういうことなんだ。

ulong dt = HistoryDealGetTicket(i);
long did = HistoryDealGetInteger(dt, DEAL_POSITION_ID);

そして、トランザクションIDとポジションティッカーを比較し、トランザクションを選択したと思います。

が、ポジションの 価格を返します。なぜ?

理由: