//+------------------------------------------------------------------+ //| OutputGet.mqh | //| Copyright 2025, Niquel Mendoza. | //| https://www.mql5.com/es/users/nique_372 | //+------------------------------------------------------------------+ #property copyright "Copyright 2025, Niquel Mendoza." #property link "https://www.mql5.com/es/users/nique_372" #property strict #ifndef EASYSB_AIAD_OUTPUTGET_MQH #define EASYSB_AIAD_OUTPUTGET_MQH //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ //--- #include "..\\Core\\DefGlobal.mqh" //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class CStrategyAiTpGetOutput : public IStrategyAddonAiTpOutput { private: CAtr* m_atr; public: CStrategyAiTpGetOutput(void) { m_atr = CIctLibAtrManager::GetAtr(_Period); } ~CStrategyAiTpGetOutput(void) { if(CIctLibAtrManager::IsActive()) CIctLibAtrManager::RemoveAtr(m_atr); } double Get(const StrategyAiRevisionTp& data) override final { return (data.type == POSITION_TYPE_BUY ? data.max_price - data.open_price : data.open_price - data.max_price) / m_atr[1]; } }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class CStrategyAiSlGetOutput : public IStrategyAddonAiSlOutput { private: CAtr* m_atr; public: CStrategyAiSlGetOutput(void) { m_atr = CIctLibAtrManager::GetAtr(_Period); } ~CStrategyAiSlGetOutput(void) { if(CIctLibAtrManager::IsActive()) CIctLibAtrManager::RemoveAtr(m_atr); } double Get(const StrategyAiRevisionSl& data) override final { return (data.type == POSITION_TYPE_BUY ? data.open_price - data.min_price : data.min_price - data.open_price) / m_atr[1]; } }; //+------------------------------------------------------------------+ //| Clase para obtener el output para el modelo ia filtrador | //+------------------------------------------------------------------+ class CStrategyAiGetOutput : public IStrategyAddonAiFilerOutput { private: CAtr* m_atr; public: CStrategyAiGetOutput(void) { m_atr = CIctLibAtrManager::GetAtr(_Period); } ~CStrategyAiGetOutput(void) { if(CIctLibAtrManager::IsActive()) CIctLibAtrManager::RemoveAtr(m_atr); } //--- double Get(const StrategyAiRevision& data) override final { //--- double profit = data.type == POSITION_TYPE_BUY ? (data.final_price - data.open_price) : (data.open_price - data.final_price); double np = fabs(profit); //--- if(np < 0.0001) { return 0.0; // Muy pequeño no ejeuctamos } //--- np /= m_atr[1]; //--- Check numero pequeños if(np < 1.0) // Muy pequeño return 0.0; //--- return (profit > 0.00) ? 1.0 : 0.0; } }; //+------------------------------------------------------------------+ #endif // EASYSB_AIAD_OUTPUTGET_MQH //+------------------------------------------------------------------+