434 lines
34 KiB
MQL5
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
|
|
//+------------------------------------------------------------------+
|