首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查Metatrader4交易历史记录中的OrdersHistoryTotal数量是否已更改

检查Metatrader4交易历史记录中的OrdersHistoryTotal数量是否已更改
EN

Stack Overflow用户
提问于 2019-12-03 03:00:33
回答 1查看 424关注 0票数 0

我想在一笔交易结束时立即触发一个函数(= OrdersHistoryTotal至少增加了1)。

对于这样的场景,MQL4中有没有处理程序?

在我的特定设置中,我有以下pushSocket函数,它应该只在OrdersHistoryTotal发生变化的情况下推送数据。

代码语言:javascript
复制
int i,hstTotal=OrdersHistoryTotal();
string historical_trades = "";

for(i=0;i<hstTotal;i++)
   {
        if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) continue;
        historical_trades = historical_trades +
           "historical_trades|" +
           version + "|" +
           DID + "|" +
           AccountNumber() + "|" +   
           IntegerToString(OrderTicket()) + "," +
           TimeToString(OrderOpenTime(), TIME_DATE|TIME_SECONDS) + "," +
           TimeToString(OrderCloseTime(), TIME_DATE|TIME_SECONDS) + "," +
           IntegerToString(OrderType()) + "," +
           DoubleToString(OrderLots(),2) + "," +
           OrderSymbol() + "," +
           DoubleToString(OrderOpenPrice(),5) + "," +
           DoubleToString(OrderClosePrice(),5) + "," +
           DoubleToString(OrderStopLoss(),5) + "," +
           DoubleToString(OrderTakeProfit(),5) + "," +
           DoubleToString(OrderCommission(),2) + "," + 
           DoubleToString(OrderSwap(),2) + "," +
           DoubleToString(OrderProfit(),2) + "," +
           "<" + OrderComment() + ">|";
    }    

      pushSocket.send(StringFormat("%s", historical_trades, true));

我试图插入一个计数器来比较它,但每次清理内存时计数器都会被删除。上面的函数嵌套在每秒执行一次的onTick函数中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-03 06:08:56

在MQL5中有一个函数OnTradeAction(),每次执行某些交易操作时都会调用该函数。但不幸的是,该功能在MQL4中不可用。另一方面,您可以在OnTick()中实现一个函数,该函数将检查HistoryTraderTotal()与之前保存的值相比是否增加,并在这种情况下执行您喜欢的所有步骤。更多的工作,但几乎是一样的。

代码语言:javascript
复制
OnTimer(){
    Mt4OnTradeAction();
    otherLogic();
} 

Mt4OnTradeAction(){ 
    static int historyTradesTotal=0;
    if(HistoryTradesTotal()==historyTradesTotal) return; 
    historyTradesTotal = HistoryTradesTotal(); 
    processingTrade();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59145145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档