FullMt5McpByLeo/Src/Mt5Mcp.mq5
Nique_372 aee913a351
2026-04-28 11:04:57 -05:00

131 lines
No EOL
5.3 KiB
MQL5

//+------------------------------------------------------------------+
//| Mt5Mcp.mq5 |
//| Copyright 2026, Niquel Mendoza. |
//| https://www.mql5.com/es/users/nique_372 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, Niquel Mendoza."
#property link "https://www.mql5.com/es/users/nique_372"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Include |
//+------------------------------------------------------------------+
#include "All.mqh"
//+------------------------------------------------------------------+
//| Inputs |
//+------------------------------------------------------------------+
input string InpSoketAdres = "127.0.0.1";
input uint InpSoketPort = 9999;
input int InpMsPool = 10000;
input int InpMsTimeoutReadNoTls = 10000;
//+------------------------------------------------------------------+
//| Global variables |
//+------------------------------------------------------------------+
CMcpServer g_mcp_server;
CTrade g_trade;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
::EventSetMillisecondTimer(InpMsPool);
g_mcp_server.AddLogFlags(LOG_ALL);
//--- Graphics / Objects
g_mcp_server.AddItemFast(new CMcpFuncObjectCreate());
g_mcp_server.AddItemFast(new CMcpFuncObjectDelete());
g_mcp_server.AddItemFast(new CMcpFuncObjectInteger());
g_mcp_server.AddItemFast(new CMcpFuncObjectDouble());
g_mcp_server.AddItemFast(new CMcpFuncObjectString());
//--- Charts
g_mcp_server.AddItemFast(new CMcpFuncChartList());
g_mcp_server.AddItemFast(new CMcpFuncChartOpen());
g_mcp_server.AddItemFast(new CMcpFuncChartClose());
g_mcp_server.AddItemFast(new CMcpFuncChartGetInteger());
g_mcp_server.AddItemFast(new CMcpFuncChartGetDouble());
g_mcp_server.AddItemFast(new CMcpFuncChartRedraw());
//--- Data / Symbol
g_mcp_server.AddItemFast(new CMcpFuncSymbolsTotal());
g_mcp_server.AddItemFast(new CMcpFuncSymbolSelect());
g_mcp_server.AddItemFast(new CMcpFuncSymbolInfoDouble());
g_mcp_server.AddItemFast(new CMcpFuncSymbolInfoInteger());
g_mcp_server.AddItemFast(new CMcpFuncSymbolInfoString());
//--- Data / Market Data
g_mcp_server.AddItemFast(new CMcpFuncCopyOpen());
g_mcp_server.AddItemFast(new CMcpFuncCopyHigh());
g_mcp_server.AddItemFast(new CMcpFuncCopyLow());
g_mcp_server.AddItemFast(new CMcpFuncCopyClose());
g_mcp_server.AddItemFast(new CMcpFuncCopyTickVolume());
//--- Trade / Positions
g_mcp_server.AddItemFast(new CMcpFuncPositionList());
g_mcp_server.AddItemFast(new CMcpFuncPositionGetDouble());
g_mcp_server.AddItemFast(new CMcpFuncPositionGetInteger());
g_mcp_server.AddItemFast(new CMcpFuncPositionGetString());
g_mcp_server.AddItemFast(new CMcpFuncPositionClose(&g_trade));
g_mcp_server.AddItemFast(new CMcpFuncPositionModify(&g_trade));
//--- Trade / Orders
g_mcp_server.AddItemFast(new CMcpFuncOrderList());
g_mcp_server.AddItemFast(new CMcpFuncOrderClose(&g_trade));
g_mcp_server.AddItemFast(new CMcpFuncOrderModify(&g_trade));
g_mcp_server.AddItemFast(new CMcpFuncOrderGetDouble());
g_mcp_server.AddItemFast(new CMcpFuncOrderGetInteger());
g_mcp_server.AddItemFast(new CMcpFuncOrderGetString());
//--- Trade / Deals
g_mcp_server.AddItemFast(new CMcpFuncHistoryDealList());
g_mcp_server.AddItemFast(new CMcpFuncHistoryDealGetDouble());
g_mcp_server.AddItemFast(new CMcpFuncHistoryDealGetInteger());
g_mcp_server.AddItemFast(new CMcpFuncHistoryDealGetString());
//--- Trade / Trade
g_mcp_server.AddItemFast(new CMcpFuncTradeTrade(&g_trade));
g_mcp_server.AddItemFast(new CMcpFuncTradeOpenLimit(&g_trade));
g_mcp_server.AddItemFast(new CMcpFuncTradeOpenStop(&g_trade));
//--- Complex / Advanced
g_mcp_server.AddItemFast(new CMcpFunctionRunBacktest());
g_mcp_server.AddItemFast(new CMcpFunctionRunEA());
g_mcp_server.AddItemFast(new CMcpFunctionCompile());
//--- Complex / Logs
g_mcp_server.AddItemFast(new CMcpFunctionExpertLogs());
//---
g_mcp_server.Set(InpMsPool, InpMsTimeoutReadNoTls);
if(!g_mcp_server.Conectar(InpSoketAdres, InpSoketPort, (10 * 1000))) // 10 segundos de espera para conectarse
return INIT_FAILED;
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer(void)
{
g_mcp_server.TimerEvent();
}