簡體   English   中英

檢查 Metatrader 4 交易歷史中的 OrdersHistoryTotal 數量是否發生變化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM