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