wangdehang 发表于 2022-11-16 10:46:37

MT4进阶到MT5速成之路 获取账户交易历史单

MQL5语言提供了多种函数获取历史订单,下面先分享一种,另一种之后补充。下面函数的功能是获取账户下本币种的所有历史单子的盈亏。double GetProfitHis(datetime t)

{

   double res=0;

//--- 请求交易历史记录

   HistorySelect(0,TimeCurrent());

//--- 创建物件

   uint   total=HistoryDealsTotal();

   ulong    ticket=0;

   double   price;

   double   profit;

   double   comdt;

   double   swap;

   double   fee;

   datetime time;

   string   symbol;

   long   type;

   long   entry;

//--- 所有交易

   for(uint i=0; i<total; i++)

   {

      //--- 尽力获得交易报价

      if((ticket=HistoryDealGetTicket(i))>0)

      {

         //--- 获得交易属性

         price =HistoryDealGetDouble(ticket,DEAL_PRICE);

         time=(datetime)HistoryDealGetInteger(ticket,DEAL_TIME);

         symbol=HistoryDealGetString(ticket,DEAL_SYMBOL);

         type=HistoryDealGetInteger(ticket,DEAL_TYPE);

         entry =HistoryDealGetInteger(ticket,DEAL_ENTRY);

         profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);

         comdt=HistoryDealGetDouble(ticket,DEAL_COMMISSION);

         swap=HistoryDealGetDouble(ticket,DEAL_SWAP);

         fee=HistoryDealGetDouble(ticket,DEAL_FEE);

         

         //--- 只对当前交易品种

         if(price && time && symbol==Symbol())

         {

            res+=profit+comdt+swap+fee;

         }

      }

   }

   return res;

}

如果要获取当前持仓单的盈亏呢?下面提供函数。

double GetProfit(datetime t)

{

   double res=0;

   for(int i=0; i<PositionsTotal(); i++)

   {

      ulong ticket=PositionGetTicket(i);

      string ordsymbol = PositionGetString(POSITION_SYMBOL);

      long ordmagic = PositionGetInteger(POSITION_MAGIC);

      long ordtype = PositionGetInteger(POSITION_TYPE);

      double profit=PositionGetDouble(POSITION_PROFIT);

      double swap=PositionGetDouble(POSITION_SWAP);

      if(ordsymbol==Symbol() && PositionGetInteger(POSITION_MAGIC)==magic)

      {

         if(ordtype==POSITION_TYPE_BUY)

         {

            res+=profit+swap;

         }

         if(ordtype==POSITION_TYPE_SELL)

         {

            res+=profit+swap;

         }

      }

   }

   return res;

}


//+------------------------------------------------------------------+

qwe11 发表于 2022-11-16 11:06:27

看不懂,,,

daerwushen 发表于 2022-12-23 08:46:26

帮助文件里的
页: [1]
查看完整版本: MT4进阶到MT5速成之路 获取账户交易历史单