![](/img/trans.png)
[英]MetaTrader4 Terminal, Strategy Tester: how to jump from a [ Results Window ] to the [ Graph ] BEFORE a Trade Happens?
[英]Check if number of OrdersHistoryTotal in Metatrader 4 trade history changed
我想在交易結束后立即觸發一個函數(= 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 函數中。
MQL5 中有一個OnTradeAction()
函數,每次完成某些交易操作時都會調用該函數。 但不幸的是,該函數在 MQL4 中不可用。 另一方面,您可以在OnTick()
中實現一個函數,該函數將檢查HistoryTraderTotal()
與之前保存的值相比是否增加,並在這種情況下執行您喜歡的所有步驟。 更多的工作,但幾乎相同。
OnTimer(){
Mt4OnTradeAction();
otherLogic();
}
Mt4OnTradeAction(){
static int historyTradesTotal=0;
if(HistoryTradesTotal()==historyTradesTotal) return;
historyTradesTotal = HistoryTradesTotal();
processingTrade();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.