//+------------------------------------------------------------------+ //| Confirmacion.mqh | //| Copyright 2025, Niquel Mendoza. | //| https://www.mql5.com/es/users/nique_372/news | //+------------------------------------------------------------------+ #property copyright "Copyright 2025, Niquel Mendoza." #property link "https://www.mql5.com/es/users/nique_372/news" #property strict //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #include "Defines.mqh" //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ interface IConfirmacion { bool ConfirmacionCompra(); bool ConfirmacionVenta(); void OnNewBarM1(); void Execute(); }; //+------------------------------------------------------------------+ //| Condicion para fvg | //+------------------------------------------------------------------+ class CConfirmationFvg : public IConfirmacion { public: bool ConfirmacionCompra() override { return g_fvg.SizeAlcistasMitigados() > 0; } bool ConfirmacionVenta() override { return g_fvg.SizeBajistasMitigados() > 0; } void OnNewBarM1() override {} void Execute() override { } }; //+------------------------------------------------------------------+ //| Condicion para ob | //+------------------------------------------------------------------+ class CConfirmationOb : public IConfirmacion { public: bool ConfirmacionCompra() override { return g_ob.SizeAlcistasMitigados() > 0; } bool ConfirmacionVenta() override { return g_ob.SizeBajistasMitigados() > 0; } void OnNewBarM1() override {} void Execute() override { } }; //+------------------------------------------------------------------+ //| Confirmacion para high-low | //+------------------------------------------------------------------+ class CConfimationSessionMan : public IConfirmacion { public: bool ConfirmacionCompra() override { return g_sessiones.MinSessionIsMitigated(); } bool ConfirmacionVenta() override { return g_sessiones.MaxSessionIsMitigated(); } void OnNewBarM1() override { g_sessiones.OnNewBarM1(); } void Execute() override; }; //+------------------------------------------------------------------+ void CConfimationSessionMan::Execute(void) { g_sessiones.OnNewBar(); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ namespace ConfirmationFactory { IConfirmacion* GetConfirmationParaEntrada(ENUM_ESTRATEGIA_SENSEI_ENTRADA_TYPE type) { switch(type) { case SENSEI_EST_ENTRADA_OB: return new CConfirmationOb(); case SENSEI_EST_ENTRADA_FVG: return new CConfirmationFvg(); default: FastLog(FUNCION_ACTUAL, ERROR_TEXT, StringFormat("Tipo invalido = %s", EnumToString(type))); Remover(); break; } return NULL; } IConfirmacion* GetConfirmationParaDireccion(ENUM_ESTRATEGIA_SENSEI_DIRECCION_IND type) { switch(type) { case SENSEI_DIR_MANIPULACION_SESIONES: return new CConfimationSessionMan(); case SENSEI_DIR_MANIPULACION_OB: return new CConfirmationOb(); case SENSEI_DIR_MANIPULACION_FVG: return new CConfirmationFvg(); default: FastLog(FUNCION_ACTUAL, ERROR_TEXT, StringFormat("Tipo invalido = %s", EnumToString(type))); Remover(); break; } return NULL; } } //+------------------------------------------------------------------+