When performing some definite actions on a trade account, its state changes. Such actions include:
Special OnTradeTransaction() handler is provided in MQL5 to get trade transactions applied to an account.
void OnTradeTransaction() const MqlTradeTransaction& trans, // trade transaction structure const MqlTradeRequest& request, // request structure const MqlTradeResult& result // response structure );
OnTradeTransaction() function can be used for:
The OrderSendAsync() function is designed for high-frequency trading, when under the terms of the trading algorithm it is unacceptable to waste time waiting for a response from the server.
However, analysis of trade transations using the default OnTradeTransaction() handler provided in MQL5 seems complicated.
TradeTransaction class will map the underlying low-level trade transactions to a custom handler corresponding to the trade operation type.
The class has the following methods:
//+------------------------------------------------------------------+ //| Class CTradeTransaction. | //| Purpose: Base class for trade transactions. | //+------------------------------------------------------------------+ class CTradeTransaction { public: CTradeTransaction(void) { } ~CTradeTransaction(void) { } //--- event handler void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result); protected: //--- trade transactions //--- these methods should be overridden in the derived class virtual void TradeTransactionOrderPlaced(ulong order) { } virtual void TradeTransactionOrderModified(ulong order) { } virtual void TradeTransactionOrderDeleted(ulong order) { } virtual void TradeTransactionOrderExpired(ulong order) { } virtual void TradeTransactionOrderTriggered(ulong order) { } virtual void TradeTransactionPositionOpened(ulong position, ulong deal) { } virtual void TradeTransactionPositionStopTake(ulong position, ulong deal) { } virtual void TradeTransactionPositionClosed(ulong position, ulong deal) { } virtual void TradeTransactionPositionCloseBy(ulong position, ulong deal) { } virtual void TradeTransactionPositionModified(ulong position) { } }; //+------------------------------------------------------------------+ //| TradeTransaction function | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- CTradeTransaction ExtTransaction; //--- ExtTransaction.OnTradeTransaction(trans,request,result); } //+----
Finally this article makes an in-depth discussion about trade transactions in mql5 MQL5 Cookbook: Processing of the TradeTransaction Event
https://www.mql5.com/en/articles/1111
Updates:
2019.03.06 - v.1.00 : Initial release.
2025.03.05 - v.1.10 : Fixed issue with STOP LIMIT orders not being captured. Added 'SetLogging' public method to control printing verbose information to 'Experts' logs.
Daily Percent Change
This indicator uses the open price for the day, and computes the percent change for that day. Use on any chart TF up to and including D1.
Average trend - multi time frame
Short description.