在这篇博文中,我将教你如何通过代码块获取最后关闭交易的数据,而无需使用循环。这个方法简单易用,非常适合想要快速查看交易记录的朋友们。
步骤说明
- 首先,创建一个变量来设置当前日期的开始时间(这个步骤可以选择不做)。
- 接下来,创建一些其他变量,用于打印图表输出,以及在其他代码块中使用(这也是可选的)。
- 将此代码放入 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());
希望这个方法能帮助到你,让你更轻松地管理自己的交易历史!