ETE/EasyTradeIntercept.mqh

109 lines
2.4 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 14:53:15 +02:00
/*+------------------------------------------------------------------+
//| EaseTradeIntercept.mq5 |
//| Calli |
//| https://www.mql5.com/de/users/gooly |
//+------------------------------------------------------------------*/
#property copyright "Calli"
#property link "https://www.mql5.com/de/users/gooly"
#property version "1.00"
#include "ext_includes/lib_buffers.mqh"
/////////////////////////////////////
//
// Gloabal EasyTrade storage
//
namespace EasyTrade
{
// Unassigned requests from OrderSend(Async)
buffer_filo<MqlTradeRequest> send_requests();
// Results from OrderSend(Async)
buffer_filo<MqlTradeResult> send_results();
} //End of namespace EasyTrade
/*
const bool intercepted_OrderSend(MqlTradeRequest& request, MqlTradeResult& result)
{
printf("%s", "intercepted_OrderSend");
// Add request to queue
EasyTrade::send_requests.push(request);
// MQL-API-Call
const bool retval = OrderSend(request, result);
// Add result to queue
EasyTrade::send_results.push(result);
// Return
return(retval);
}
*/
const bool intercepted_OrderSendAsync(MqlTradeRequest& request, MqlTradeResult& result)
{
printf("%s", "intercepted_OrderSendAsync");
// MQL-API-Call
const bool retval = OrderSendAsync(request, result);
MqlTradeRequest cpy = request;
// Save request id in position, because in async,
// position will still be empty.
cpy.position = result.request_id;
// Add request to queue
EasyTrade::send_requests.push(cpy);
// Add result to queue
EasyTrade::send_results.push(result);
// Return
return(retval);
}
void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result)
{
/*
Unser Code hier
*/
printf("%s", "OTT Event Handler called by MQL-API");
// User-Function-Call
user_OnTradeTransaction(trans, request, result);
// Return
return;
}
//#define OrderSend intercepted_OrderSend
#define OrderSendAsync intercepted_OrderSendAsync
#define OnTradeTransaction user_OnTradeTransaction