/*+------------------------------------------------------------------+ //| 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 send_requests(); // Results from OrderSend(Async) buffer_filo 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