188 lines
17 KiB
MQL5
188 lines
17 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| TradingManager.mqh |
|
|
//| Thorsten Fischer Copyright 2020 |
|
|
//| https://mql5.tfsystem.de |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "Thorsten Fischer Copyright 2020"
|
|
#property link "https://mql5.tfsystem.de"
|
|
#property version "1.00"
|
|
#property strict
|
|
|
|
//---
|
|
#include "..\..\TF-Dateien\TF-Class\TFFrame.mqh"
|
|
//#include "..\..\TF-Dateien\TF-Class\TFTerminalInfo.mqh"
|
|
//#include "..\..\TF-Dateien\TF-Class\TFAccountInfo.mqh"
|
|
//#include "..\..\TF-Dateien\TF-Class\TFMagicNumber.mqh"
|
|
//#include "..\..\TF-Dateien\TF-Class\TFArrayLong.mqh"
|
|
//#include "..\..\TF-Dateien\TF-Class\TFOrderInfo.mqh"
|
|
//#include "..\..\TF-Dateien\TF-Class\TFPositionInfo.mqh"
|
|
//#include "..\..\TF-Dateien\TF-Class\TFTrade.mqh"
|
|
//#include "..\..\TF-Dateien\TF-Class\TFModule.mqh"
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
class CTradingManager
|
|
{
|
|
private:
|
|
CTFFrame c_Frame_GUI;
|
|
//CTFOrderInfo c_Order_Info;
|
|
//CTFPositionInfo c_Position_Info;
|
|
//CTFModule c_Module;
|
|
//CTFArrayLong c_Position_Nummer;
|
|
//--- Für Tests
|
|
int i_order_prev;
|
|
int i_position_prev;
|
|
int i_Trade;
|
|
int i_TradeTransaction;
|
|
|
|
public:
|
|
CTradingManager();
|
|
~CTradingManager();
|
|
//---
|
|
virtual bool OnInitEvent(void);
|
|
virtual void OnDeInitEvent(const int aReason=0);
|
|
//---
|
|
virtual void ChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam);
|
|
virtual void OnTickEvent(void);
|
|
//---
|
|
virtual void OnTradeEvent(void);
|
|
virtual void OnTradeTransactionEvent(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result);
|
|
virtual void TTInfo(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result);
|
|
virtual void InfoComment(void);
|
|
|
|
};
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
CTradingManager::CTradingManager()
|
|
{
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
CTradingManager::~CTradingManager()
|
|
{
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
bool CTradingManager::OnInitEvent(void)
|
|
{
|
|
//i_Trade=0;
|
|
//i_TradeTransaction=0;
|
|
//i_order_prev=OrdersTotal();
|
|
//i_position_prev=PositionsTotal();
|
|
//InfoComment();
|
|
//---
|
|
if(!c_Frame_GUI.OnInitEvent())
|
|
return(false);
|
|
//---
|
|
//if(!g_tfterminalinfo.OnInitEvent())
|
|
// return(false);
|
|
//---
|
|
//if(!g_accountinfo.OnInitEvent())
|
|
// return(false);
|
|
//---
|
|
//if(!g_magicnumber.Init())
|
|
// return(false);
|
|
//---
|
|
//if(!g_tftrade.OnInitEvent())
|
|
// return(false);
|
|
//g_tftrade.LogLevel(LOG_LEVEL_ALL);
|
|
//---
|
|
//if(!c_Module.OnInitEvent())
|
|
// return(false);
|
|
//---
|
|
return(true);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
void CTradingManager::OnDeInitEvent(const int aReason=0)
|
|
{
|
|
//---
|
|
c_Frame_GUI.OnDeInitEvent(aReason);
|
|
//---
|
|
//c_Module.OnDeInitEvent(aReason);
|
|
//---
|
|
//if(g_tftrade!=NULL)
|
|
// g_tftrade.OnDeInitEvent(aReason);
|
|
//---
|
|
//CTFObject::OnDeInitEvent(aReason);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
void CTradingManager::ChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
|
|
{
|
|
//---
|
|
//c_Module.ChartEvent(id, lparam, dparam, sparam);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
void CTradingManager::OnTickEvent(void)
|
|
{
|
|
//---
|
|
//c_Module.OnTickEvent();
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
void CTradingManager::OnTradeEvent(void)
|
|
{
|
|
//---
|
|
//i_Trade++;
|
|
//i_order_prev=OrdersTotal();
|
|
//i_position_prev=PositionsTotal();
|
|
//m_deal_prev=Dea
|
|
//---
|
|
//InfoComment();
|
|
//Sleep(1000);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
void CTradingManager::OnTradeTransactionEvent(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result)
|
|
{
|
|
//---
|
|
//i_TradeTransaction++;
|
|
//if(m_order_prev<OrdersTotal())
|
|
//i_order_prev=OrdersTotal();
|
|
//i_position_prev=PositionsTotal();
|
|
//if(trans.symbol==Symbol())
|
|
// if(trans.type==TRADE_TRANSACTION_REQUEST)
|
|
//TTInfo(trans, request, result);
|
|
//---
|
|
InfoComment();
|
|
//Sleep(1000);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
void CTradingManager::TTInfo(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result)
|
|
{
|
|
//---
|
|
Print(__FUNCTION__+" m_TradeTransaction = "+(string)i_TradeTransaction+" +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
|
|
Print("trans.type = "+EnumToString(trans.type)+" | request.action = "+EnumToString(request.action)+" | request.deviation = "+(string)request.deviation);
|
|
Print("trans.order_type = "+EnumToString(trans.order_type)+" | request.type = "+EnumToString(request.type)+" Symbol = "+trans.symbol);
|
|
Print("trans.order_state = "+EnumToString(trans.order_state)+" | request.type_filling = "+EnumToString(request.type_filling));
|
|
Print("trans.deal_type = "+EnumToString(trans.deal_type)+" | request.type_time = "+EnumToString(request.type_time));
|
|
Print("trans.order = "+(string)trans.order+" | request.order = "+(string)request.order+" | result.order = "+(string)result.order);
|
|
Print("trans.deal = "+(string)trans.deal+" | request.magic = "+(string)request.magic+" | result.deal = "+(string)result.deal);
|
|
Print("trans.position = "+(string)trans.position+" | request.position = "+(string)request.position);
|
|
Print("trans.position_by = "+(string)trans.position_by+" | request.position_by = "+(string)request.position_by+" | result.order = "+(string)result.order);
|
|
Print("trans.price = "+(string)trans.price+" | request.price = "+(string)request.price+" | result.price = "+(string)result.price);
|
|
Print("trans.price_sl = "+(string)trans.price_sl+" | request.sl = "+(string)request.sl);
|
|
Print("trans.price_tp = "+(string)trans.price_tp+" | request.tp = "+(string)request.tp);
|
|
Print("trans.price_trigger = "+(string)trans.price_trigger+" | request.stoplimit = "+(string)request.stoplimit);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
void CTradingManager::InfoComment(void)
|
|
{
|
|
Comment("O="+(string)i_order_prev+" |P="+(string)i_position_prev+" |T="+(string)i_Trade+" |TTa="+(string)i_TradeTransaction);
|
|
}
|
|
//+------------------------------------------------------------------+
|