TradeTransaction/TradeMonitor_EA.mq5
2025-09-19 20:26:58 +00:00

78 lines
9.1 KiB
MQL5

//+------------------------------------------------------------------+
//| TradeMonitor_EA.mq5 |
//| Copyright © 2018, Amr Ali |
//| https://www.mql5.com/en/users/amrali |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, Amr Ali"
#property link "https://www.mql5.com/en/users/amrali"
#property version "1.10"
//+------------------------------------------------------------------+
//| Inputs |
//+------------------------------------------------------------------+
input bool InpIsLogging=false; // Print verbose information
//+------------------------------------------------------------------+
//| Include |
//+------------------------------------------------------------------+
#include "TradeTransaction.mqh"
//+------------------------------------------------------------------+
//| Class CExtTransaction. |
//| Derives from base class CTradeTransaction. |
//+------------------------------------------------------------------+
class CExtTransaction : public CTradeTransaction
{
protected:
//--- trade transactions
virtual void TradeTransactionOrderPlaced(ulong order) { PrintFormat("Pending order is placed. (order %I64u)", order); }
virtual void TradeTransactionOrderModified(ulong order) { PrintFormat("Pending order is modified. (order %I64u)", order); }
virtual void TradeTransactionOrderDeleted(ulong order) { PrintFormat("Pending order is deleted. (order %I64u)", order); }
virtual void TradeTransactionOrderExpired(ulong order) { PrintFormat("Pending order is expired. (order %I64u)", order); }
virtual void TradeTransactionOrderTriggered(ulong order) { PrintFormat("Pending order is triggered. (order %I64u)", order); }
virtual void TradeTransactionPositionOpened(ulong position, ulong deal) { PrintFormat("Position is opened. (position %I64u, deal %I64u)", position, deal); }
virtual void TradeTransactionPositionStopTake(ulong position, ulong deal) { PrintFormat("Position is closed on sl or tp. (position %I64u, deal %I64u)", position, deal); }
virtual void TradeTransactionPositionClosed(ulong position, ulong deal) { PrintFormat("Position is closed. (position %I64u, deal %I64u)", position, deal); }
virtual void TradeTransactionPositionCloseBy(ulong position, ulong deal) { PrintFormat("Position is closed by opposite position. (position %I64u, deal %I64u)", position, deal); }
virtual void TradeTransactionPositionModified(ulong position) { PrintFormat("Position is modified. (position %I64u)", position); }
};
//+------------------------------------------------------------------+
//| Global transaction object |
//+------------------------------------------------------------------+
CExtTransaction ExtTransaction;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
ExtTransaction.SetLogging(InpIsLogging);
//---
return (INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| TradeTransaction function |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
const MqlTradeRequest &request,
const MqlTradeResult &result)
{
//---
ExtTransaction.OnTradeTransaction(trans,request,result);
}
//+------------------------------------------------------------------+