我想在一笔交易结束时立即触发一个函数(= OrdersHistoryTotal至少增加了1)。
对于这样的场景,MQL4中有没有处理程序?
在我的特定设置中,我有以下pushSocket函数,它应该只在OrdersHistoryTotal发生变化的情况下推送数据。
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函数中。
发布于 2019-12-03 06:08:56
在MQL5中有一个函数OnTradeAction(),每次执行某些交易操作时都会调用该函数。但不幸的是,该功能在MQL4中不可用。另一方面,您可以在OnTick()中实现一个函数,该函数将检查HistoryTraderTotal()与之前保存的值相比是否增加,并在这种情况下执行您喜欢的所有步骤。更多的工作,但几乎是一样的。
OnTimer(){
Mt4OnTradeAction();
otherLogic();
}
Mt4OnTradeAction(){
static int historyTradesTotal=0;
if(HistoryTradesTotal()==historyTradesTotal) return;
historyTradesTotal = HistoryTradesTotal();
processingTrade();
}https://stackoverflow.com/questions/59145145
复制相似问题