ICTLibraryEasy/Src/Concepts/Fvg.mqh
2025-12-05 12:17:19 -05:00

434 lines
34 KiB
MQL5

//+------------------------------------------------------------------+
//| Fvg.mqh |
//| Copyright 2025, Leo. |
//| https://www.mql5.com/es/users/nique_372/news |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, Leo."
#property link "https://www.mql5.com/es/users/nique_372/news"
#property strict
#ifndef ICTLIBRARYEASY_SRC_CONCEPTS_FVG_MQH
#define ICTLIBRARYEASY_SRC_CONCEPTS_FVG_MQH
#include "..\\Base\\Imports.mqh"
//+------------------------------------------------------------------+
//| Clase Wrapper CFvgBar |
//+------------------------------------------------------------------+
class CFvgBar
{
private:
int handle;
void Destroy();
public:
CFvgBar();
~CFvgBar();
//--- Creación
bool Create(string symbol, ENUM_TIMEFRAMES timeframe, long chart_id = 0, int subwin = 0, bool show_concept = true);
//--- Configuración
inline void Set(int range_, ENUM_MODO_OBTENCION_IMBALANCE mode_obtencin, ENUM_STYLE_DIBUJO_IMBALANCES style_draw_imbalacnes, CDiff &diff);
inline void SetGrapich(color clr_bull, color clr_bear, color clr_mitad_bull, color clr_mitad_bear, ENUM_LINE_STYLE style_concept,
bool fill_concept, int width_c, bool mostrar_mitad_, int max_espera, int width_line,
ENUM_LINE_STYLE style_mitad);
//--- Gestión gráfica
inline bool ShowAll();
inline bool HideAll();
inline bool DeleteAll();
inline void SetAlertas(bool activar, string alert_types);
inline void SetFlagMostrarObjetos(bool mostrar);
inline void ForzeToActulizeCurrentTick();
//--- General
inline void OnNewBar();
inline bool IsNewBarConcept();
inline void SetCalculatePrevInNextBar();
//--- Log
inline void AddLogFlag(uint8_t flags);
inline void RemoveLogFlags(uint8_t flags);
//--- Obtención de datos - Mitigados
inline void GetAlcistasMitigados(Bloques &bloques[]);
inline void GetBajistasMitigados(Bloques &bloques[]);
inline Bloques GetAlcistaMitigado(const int pos);
inline Bloques GetBajistaMitigiado(const int pos);
inline int SizeAlcistasMitigados();
inline int SizeBajistasMitigados();
//--- Obtención de datos - Activos
inline Bloques GetAlcista(const int index);
inline Bloques GetBajista(const int index);
inline void GetData(Bloques &alcistas[], Bloques &bajistas[]);
inline int SizeAlcistas();
inline int SizeBajistas();
//--- Obtención de datos - Extra
inline Bloques GetLastAlcista();
inline Bloques GetLastBajista();
inline Bloques GetMasCercanoAlcista();
inline Bloques GetMasCercanoBajista();
//--- Funcionalidades
inline void SetParo();
inline void ChangeTimeframe(ENUM_TIMEFRAMES new_timeframe);
inline void DesactivarUsoMarketBook();
//--- Getters básicos
inline int Handle() const;
inline string Symbol() const;
inline ENUM_TIMEFRAMES Timeframe() const;
inline long ChartId() const;
inline int Subwin() const;
inline bool ShowConcept() const;
};
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
CFvgBar::CFvgBar() : handle(INVALID_HANDLE)
{
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
CFvgBar::~CFvgBar()
{
Destroy();
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CFvgBar::Create(string symbol, ENUM_TIMEFRAMES timeframe, long chart_id = 0, int subwin = 0, bool show_concept = true)
{
if(handle != INVALID_HANDLE)
Destroy();
handle = ICTFvg_Create(symbol, timeframe, chart_id, subwin, show_concept);
if(handle < 0)
{
FastLog(FUNCION_ACTUAL, FATAL_ERROR_TEXT, "No se pudo crear un handle para CFvgBar");
Remover();
return false;
}
return true;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline void CFvgBar::Set(int range_, ENUM_MODO_OBTENCION_IMBALANCE mode_obtencin, ENUM_STYLE_DIBUJO_IMBALANCES style_draw_imbalacnes, CDiff &diff)
{
ICTFvg_Set(handle, range_, mode_obtencin, style_draw_imbalacnes, diff);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline void CFvgBar::SetGrapich(color clr_bull, color clr_bear, color clr_mitad_bull, color clr_mitad_bear, ENUM_LINE_STYLE style_concept,
bool fill_concept, int width_c, bool mostrar_mitad_, int max_espera, int width_line, ENUM_LINE_STYLE style_mitad)
{
ICTFvg_SetGrapich(handle, clr_bull, clr_bear, clr_mitad_bull, clr_mitad_bear, style_concept, fill_concept, width_c, mostrar_mitad_, max_espera, width_line, style_mitad);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline bool CFvgBar::ShowAll()
{
return ICTFvg_ShowAll(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline bool CFvgBar::HideAll()
{
return ICTFvg_HideAll(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline bool CFvgBar::DeleteAll()
{
return ICTFvg_DeleteAll(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline void CFvgBar::SetAlertas(bool activar, string alert_types)
{
ICTFvg_SetAlertas(handle, activar, alert_types);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline void CFvgBar::SetFlagMostrarObjetos(bool mostrar)
{
ICTFvg_SetFlagMostrarObjetos(handle, mostrar);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline void CFvgBar::ForzeToActulizeCurrentTick()
{
ICTFvg_ForzeToActulizeCurrentTick(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline void CFvgBar::OnNewBar()
{
ICTFvg_OnNewBar(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline bool CFvgBar::IsNewBarConcept()
{
return ICTFvg_IsNewBarConcept(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline void CFvgBar::SetCalculatePrevInNextBar()
{
ICTFvg_SetCalculatePrevInNextBar(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline void CFvgBar::AddLogFlag(uint8_t flags)
{
ICTFvg_AddLogFlag(handle, flags);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline void CFvgBar::RemoveLogFlags(uint8_t flags)
{
ICTFvg_RemoverLogFlags(handle, flags);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline void CFvgBar::GetAlcistasMitigados(Bloques &bloques[])
{
ICTFvg_GetAlcistasMitigados(handle, bloques);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline void CFvgBar::GetBajistasMitigados(Bloques &bloques[])
{
ICTFvg_GetBajistasMitigados(handle, bloques);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline Bloques CFvgBar::GetAlcistaMitigado(const int pos)
{
return ICTFvg_GetAlcistaMitigado(handle, pos);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline Bloques CFvgBar::GetBajistaMitigiado(const int pos)
{
return ICTFvg_GetBajistaMitigado(handle, pos);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline int CFvgBar::SizeAlcistasMitigados()
{
return ICTFvg_SizeAlcistasMitigados(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline int CFvgBar::SizeBajistasMitigados()
{
return ICTFvg_SizeBajistasMitigados(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline Bloques CFvgBar::GetAlcista(const int index)
{
return ICTFvg_GetAlcista(handle, index);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline Bloques CFvgBar::GetBajista(const int index)
{
return ICTFvg_GetBajista(handle, index);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline void CFvgBar::GetData(Bloques &alcistas[], Bloques &bajistas[])
{
ICTFvg_GetData(handle, alcistas, bajistas);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline int CFvgBar::SizeAlcistas()
{
return ICTFvg_SizeAlcistas(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline int CFvgBar::SizeBajistas()
{
return ICTFvg_SizeBajistas(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline Bloques CFvgBar::GetLastAlcista()
{
return ICTFvg_GetLastAlcista(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline Bloques CFvgBar::GetLastBajista()
{
return ICTFvg_GetLastBajista(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline Bloques CFvgBar::GetMasCercanoAlcista()
{
return ICTFvg_GetMasCercanoAlcista(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline Bloques CFvgBar::GetMasCercanoBajista()
{
return ICTFvg_GetMasCercanoBajista(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline void CFvgBar::SetParo()
{
ICTFvg_SetParo(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline void CFvgBar::ChangeTimeframe(ENUM_TIMEFRAMES new_timeframe)
{
ICTFvg_ChangeTimeframe(handle, new_timeframe);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline void CFvgBar::DesactivarUsoMarketBook()
{
ICTFvg_DesactivarUsoMarketBook(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline int CFvgBar::Handle() const
{
return handle;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline string CFvgBar::Symbol() const
{
return ICTFvg_Simbolo(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline ENUM_TIMEFRAMES CFvgBar::Timeframe() const
{
return ICTFvg_Timeframe(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline long CFvgBar::ChartId() const
{
return ICTFvg_ChartId(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline int CFvgBar::Subwin() const
{
return ICTFvg_Subwin(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
inline bool CFvgBar::ShowConcept() const
{
return ICTFvg_GetInittialStateObj(handle);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CFvgBar::Destroy()
{
if(handle != INVALID_HANDLE)
{
ICTFvg_Delete(handle);
handle = INVALID_HANDLE;
}
}
#endif // ICTLIBRARYEASY_SRC_CONCEPTS_FVG_MQH
//+------------------------------------------------------------------+