首页 系统交易 帖子

如何查看最后关闭的交易数据:利润、类型和符号 - MetaTrader 5

附件
49374.zip (825 bytes, 下载 0次)

在这篇博文中,我将教你如何通过代码块获取最后关闭交易的数据,而无需使用循环。这个方法简单易用,非常适合想要快速查看交易记录的朋友们。

步骤说明

  • 首先,创建一个变量来设置当前日期的开始时间(这个步骤可以选择不做)。
  • 接下来,创建一些其他变量,用于打印图表输出,以及在其他代码块中使用(这也是可选的)。
  • 将此代码放入 OnTick(); 函数中,每次有新报价时都会显示结果,你也可以设置为每根K线显示一次。

代码示例

// 变量定义
string DayStart = "00:00"; // 日开始时间
double LastClosed_Profit; // 最后关闭交易的利润
string TradeSymbol, TradeType;

// 专家初始化--------------------
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }

// 专家去初始化-------------------
void OnDeinit(const int reason)
  {
  }

// 每次报价时执行--------------------------
void OnTick()
  {
// 检查最后关闭的交易
   CheckLastClosed();
  }
//+------------------------------------------------------------------+

// 检查最后关闭的交易
void CheckLastClosed()
  {
   datetime HistoryTime = StringToTime(DayStart);

// 从日开始到当前时间的历史数据
   if(HistorySelect(HistoryTime,TimeCurrent))
     {
      int Total = HistoryDealsTotal();

      // 获取最后交易的票据号码并选择它以便进一步处理
      ulong Ticket = HistoryDealGetTicket(Total -1);

      // 获取需要的数据
      LastClosed_Profit = NormalizeDouble(HistoryDealGetDouble(Ticket,DEAL_PROFIT),2);
      TradeSymbol      = HistoryOrderGetString(Ticket,ORDER_SYMBOL);

      // 判断是卖出交易
      if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_BUY)
        {
         TradeType = "卖出交易";
        }

      // 判断是买入交易
      if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_SELL)
        {
         TradeType = "买入交易";
        }

      // 输出到图表
      Comment("\n","交易总数 - :  ", Total,
              "\n","最后交易票据 - :  ", Ticket,
              "\n", "最后关闭利润 -:  ", LastClosed_Profit,
              "\n", "最后交易类型 -:  ", TradeType);

     }
  }
//+------------------------------------------------------------------+

如果你想获取整个交易历史(从账户开始的所有交易),可以使用 HistorySelect(); 函数,如下所示:

// 获取整个历史
HistorySelect(0,TimeCurrent());

希望这个方法能帮助到你,让你更轻松地管理自己的交易历史!

相关帖子

评论 (0)