EasySbAi/AiAd/OutputGet.mqh
2026-04-10 15:47:40 -05:00

97 行
7.2 KiB
MQL5

//+------------------------------------------------------------------+
//| 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
//+------------------------------------------------------------------+