プログラムを投稿するときはツールバーの "</>" を使うこと。
これでどうですか?
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でした。
投稿の仕方も教えていただきありがとうございます。
またよろしくお願いいたします。
取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
主題のとおり、「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);
}
}