mql5/Include/Example1/CExpertAdvisor.mqh
SoloTradeOfficial f20bb89655 new files added
2025-08-30 11:40:16 +00:00

59 lines
2.3 KiB
MQL5

//+------------------------------------------------------------------+
//| CExpertAdvisor.mqh |
//| Copyright 2025, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "SoloTrade Official, Solomon"
#property link "https://www.mql5.com/en/users/SoloTradeOfficial"
#property version "1.00"
#property description "THE WORLD MOST INTELLIGENT FOREX AI/ALGO BOTS EVER IN"
"HUMAN HISTORY OF FINTECH, BY SOLOMON ESHUN"
"\nTrading Bots in MQL5"
// Include the files for the parts
#include "CRiskManager.mqh"
#include "CTradeExecutor.mqh"
#include "CTradeSignal.mqh"
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CExpertAdvisor {
private:
// --- COMPOSITION HAPPENS HERE ---
// The EA "has-a" signal, a risk manager, and an executor.
CTradeSignal m_signal;
CRiskManager m_risk_manager;
CTradeExecutor m_trade_executor;
public:
// The EA's constructor initializes its component parts
CExpertAdvisor(string symbol, int magic_number) : m_signal(symbol, magic_number),
m_risk_manager(1.0, 5), // 1% risk, 5 trades max
m_trade_executor() {
Print("Expert Advisor object created and ready.");
}
// The EA's main logic function
void OnTick() {
// The EA delegates work to its parts.
// 1. It asks its signal component for a signal.
// m_signal.CheckSignal(); // Pretend this returns a trade direction
ENUM_TRADE_DIRECTION tradeDirection = GetSignalFromSomewhere(); // Fake signal
if(tradeDirection != TRADE_DIRECTION_NONE) {
// 2. It asks its risk manager component if a trade is allowed.
if(m_risk_manager.isTradeAllowed(30.0)) { // 30 pips SL
// 3. If everything is OK, it tells its trade executor to place the trade.
m_trade_executor.ExecuteBuy(_Symbol, 0.1);
}
}
}
// Fake function for demonstration
ENUM_TRADE_DIRECTION GetSignalFromSomewhere() {
return TRADE_DIRECTION_BUY;
}
};
//+------------------------------------------------------------------+