OrderCalcProfit

 



#property script_show_inputs
input bool allsymbols=true;
input bool alltrades=true; // All Trades(pendings also)


void OnStart()
  {
   int total = PositionsTotal();

   double profit=0;
   for(int i=0;i<total;i++)
     {
      ulong tick=PositionGetTicket(i);
      if(!PositionSelectByTicket(tick))
         continue;

      if(!allsymbols && _Symbol!= PositionGetString(POSITION_SYMBOL))
         continue;

      double pro=0;
      if(OrderCalcProfit(ENUM_ORDER_TYPE(PositionGetInteger(POSITION_TYPE)),PositionGetString(POSITION_SYMBOL),
                         PositionGetDouble(POSITION_VOLUME),PositionGetDouble(POSITION_PRICE_OPEN),PositionGetDouble(POSITION_TP),pro)) {};
      profit+=pro;

     }

   int ord_total = OrdersTotal();

   if(alltrades)
     {
      for(int j=ord_total-1;j>=0;j--)
        {
         ulong tick=OrderGetTicket(j);
         if(!OrderSelect(tick))
            continue;
         if(!allsymbols && _Symbol!=OrderGetString(ORDER_SYMBOL))
            continue;

         double pro=0;
         if(OrderCalcProfit(ENUM_ORDER_TYPE(PositionGetInteger(POSITION_TYPE)),PositionGetString(POSITION_SYMBOL),
                            PositionGetDouble(POSITION_VOLUME),PositionGetDouble(POSITION_PRICE_OPEN),PositionGetDouble(POSITION_TP),pro)) {};
         profit+=pro;



        }



     }

//==============
double lossprofit=0;
   for(int i=0;i<total;i++)
     {
      ulong tick=PositionGetTicket(i);
      if(!PositionSelectByTicket(tick))
         continue;

      if(!allsymbols && _Symbol!= PositionGetString(POSITION_SYMBOL))
         continue;

      double pro=0;
         
        if(OrderCalcProfit(ENUM_ORDER_TYPE(PositionGetInteger(POSITION_TYPE)),PositionGetString(POSITION_SYMBOL),
                            PositionGetDouble(POSITION_VOLUME),PositionGetDouble(POSITION_PRICE_OPEN),PositionGetDouble(POSITION_SL),pro)) {};
        
       
       
       
       //(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY  ) ?
       //             ((PositionGetDouble(POSITION_PRICE_OPEN)-PositionGetDouble(POSITION_SL))/_Point)*
       //            PositionGetDouble(POSITION_VOLUME)*SymbolInfoDouble(PositionGetString(POSITION_SYMBOL),SYMBOL_TRADE_TICK_VALUE):
       //             ((PositionGetDouble(POSITION_SL)-PositionGetDouble(POSITION_PRICE_OPEN))/_Point)*
       //            PositionGetDouble(POSITION_VOLUME)*SymbolInfoDouble(PositionGetString(POSITION_SYMBOL),SYMBOL_TRADE_TICK_VALUE);
                
           Print(pro);     
      lossprofit+=pro;

     }

 Comment(lossprofit);
//================


   MessageBox("Profit="+DoubleToString(profit,2)+" Loss="+DoubleToString(lossprofit,2));
  }
//+------------------------------------------------------------------+

Hello !

It is possible that on some brokers OrderCalcProfit() function will not work?

I am running this script on two diferent brokers and one one of them is not working