PositionGetDouble(POSITION_PROFIT)が常に0を返してくる。

 

主題のとおり、「PositionGetDouble(POSITION_PROFIT)が常に0を返してくる」のですが、
原因、対策をどなたか教えていただけないでしょうか。

また、 PositionGetDouble(POSITION_PROFIT)の返り値は
MT5の「ツールボックス」の「取引」タブの「損益」に相当するもの
という理解で間違いないでしょうか。

下のようなコードで試しましたが、
PositionProfit以外は、0でない値が返されます。

よろしくお願いいたします。


  double PositionCurrentPrice;
  double PositionOpenPrice;
  double PositionVolume;
  double PositionProfit;

  for(int i=0; i<PositionsTotal(); i++){
    if(PositionGetTicket(i)>0){
        PositionCurrentPrice = PositionGetDouble(POSITION_PRICE_CURRENT);
        PositionOpenPrice = PositionGetDouble(POSITION_PRICE_OPEN);
        PositionVolume = PositionGetDouble(POSITION_VOLUME);
        PositionProfit = PositionGetDouble(POSITION_PROFIT);

        printf("PositionCurrentPrice=%d", PositionCurrentPrice);
        printf("PositionOpenPrice=%d",PositionOpenPrice);
        printf("PositionVolume=%d",PositionVolume);
        printf("PositionProfit=%d",PositionProfit);

        }

      }

 
プログラムを投稿するときはツールバーの "</>" を使うこと。

tool


これでどうですか?

   int total = PositionsTotal();
   
   for (int i = total - 1; i >= 0; i--) 
   {
      if (PositionSelect(PositionGetSymbol(i)) == false)
         continue;

      ENUM_POSITION_TYPE type = PositionGetInteger(POSITION_TYPE);
      datetime time           = PositionGetInteger(POSITION_TIME);
      long magic              = PositionGetInteger(POSITION_MAGIC);

      double volume       = PositionGetDouble(POSITION_VOLUME);
      double open         = PositionGetDouble(POSITION_PRICE_OPEN);
      double sl           = PositionGetDouble(POSITION_SL);
      double tp           = PositionGetDouble(POSITION_TP);
      double current      = PositionGetDouble(POSITION_PRICE_CURRENT);
      double swap         = PositionGetDouble(POSITION_SWAP);
      double profit       = PositionGetDouble(POSITION_PROFIT);

      string symbol       = PositionGetString(POSITION_SYMBOL);
      string comment      = PositionGetString(POSITION_COMMENT);
   }
 
Nagisa Unada:
プログラムを投稿するときはツールバーの "</>" を使うこと。


これでどうですか?

ありがとうございます。

printfの括弧内の%dが間違いで、正しくは%lfでした。

投稿の仕方も教えていただきありがとうございます。

またよろしくお願いいたします。

理由: