请问大神,怎么获取当前持有订单的利润点数。

 

如题,

请教大神,获取当前订单利润点数的代码怎么写?

 
用利润除以手数就可得出点数。
 
jinchunlong2020:

如题,

请教大神,获取当前订单利润点数的代码怎么写?

這個要知道你是單筆還是總的 

單筆你要先挑出來 

int i=0; //用來指定 單張訂單的
double OrderProfitPoint=0;
if
(OrderSelect(i, SELECT_BY_POS)==true)
OrderPrifitPoint=OrderProfit()*Point;

Print(
OrderPrifitPoint);


如果是整個帳戶的

double AccountProfitPoint=AccountInfoDouble(ACCOUNT_PROFIT)*Point;

Print(AccountProfitPoint);


方法很多種 可以一一找出來

 
jinchunlong2020:

如题,

请教大神,获取当前订单利润点数的代码怎么写?

OrderProfit();当前订单利润。

需要先orderselet选取后才能获取到

比如 ;

double pronft=;

if(OrderSelcet(12010,1,0)){

pronft=   OrderProfit()+   OrderCommission()+  OrderSwap();}

上面代码意思是定义pronft浮点数变量默认值为0;

在当前订单里面找到订单编号为12010这个订单后。

pronft这个变量的值等于12010这个单子的利润+手续费+隔夜费;

 
你要的是这样的吗?
double FloatingProfit(bool returnMaxProfit = true)
{
   if(PositionsTotal() == 0) return 0;
   static double maxProfitPoints = 0.0; 
   double ProfitPoints  = 0.0;
   double openPrice     = PositionGetDouble(POSITION_PRICE_OPEN);
   long   positionType  = PositionGetInteger(POSITION_TYPE);
   ENUM_POSITION_TYPE TypeBuy  = POSITION_TYPE_BUY  ;
   ENUM_POSITION_TYPE TypeSell = POSITION_TYPE_SELL ;
   double price = positionType == TypeBuy ? SymbolInfoDouble(_Symbol, SYMBOL_ASK) : SymbolInfoDouble(_Symbol, SYMBOL_BID) ;
   if(PositionGetDouble(POSITION_PROFIT) > 0 && PositionGetString(POSITION_SYMBOL) == _Symbol)
      ProfitPoints = positionType == TypeBuy ?  price - openPrice  : openPrice - price;
   if(ProfitPoints > maxProfitPoints) 
      maxProfitPoints = ProfitPoints;
   return returnMaxProfit ? maxProfitPoints : ProfitPoints;
}
double ProfitPoint      = FloatingProfit(false);  // 获取实时浮动盈利的点数
double MaxFloatingPoint = FloatingProfit(true);   // 获取最大浮动盈利的点数
 
盈利金额=盈利点数*手数*该货币对的换算比率    盈利点数=盈利金额/(手数*该货币对换算比率)
原因: