97 行
7.2 KiB
MQL5
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
|
|
//+------------------------------------------------------------------+
|