109 lines
2.4 KiB
MQL5
109 lines
2.4 KiB
MQL5
|
/*+------------------------------------------------------------------+
|
||
|
//| 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
|
||
|
|
||
|
|
||
|
|