| //+------------------------------------------------------------------+
|
| //| Blocks.mqh |
|
| //| Copyright 2025, Niquel Mendoza. |
|
| //| https://www.mql5.com/es/users/nique_372/news |
|
| //+------------------------------------------------------------------+
|
| #property copyright "Copyright 2025, Niquel Mendoza."
|
| #property link "https://www.mql5.com/es/users/nique_372/news"
|
| #property strict
|
|
|
| #ifndef ICT_LIBRARY_BASE_BLOCKS_MQH
|
| #define ICT_LIBRARY_BASE_BLOCKS_MQH
|
|
|
| #include "..\\Base.mqh"
|
| // Todo es inferfaz no clase... por eso ya no habra m_handle
|
|
|
| //+------------------------------------------------------------------+
|
| //| Interfaz para todo tipo de bloque: Fvg, Gap, Ob, Bpr |
|
| //+------------------------------------------------------------------+
|
| class IBlocks : public IIctConcept
|
| {
|
| public:
|
| //---
|
| IBlocks() {}
|
| ~IBlocks() {}
|
|
|
| //--- Configuración
|
| virtual inline void SetAlertas(bool activar, string alert_types) = 0;
|
|
|
| //--- Eventos
|
| virtual inline void OnNewBar() = 0;
|
|
|
|
|
| //--- Obtención de datos - Tamaños
|
| virtual inline int SizeBajistasMitigados() = 0;
|
| virtual inline int SizeAlcistasMitigados() = 0;
|
| virtual inline int SizeAlcistas() = 0;
|
| virtual inline int SizeBajistas() = 0;
|
|
|
| //--- Control
|
| virtual inline void SetParo() = 0;
|
| virtual inline void ChangeTimeframe(ENUM_TIMEFRAMES new_timeframe) = 0;
|
|
|
| //--- Getters básicos
|
| virtual inline ENUM_CONCEPT_UN_BLOQUE_TYPE BloqueType() const = 0;
|
| };
|
|
|
| //+------------------------------------------------------------------+
|
| //| Interfaz para bloques gen (no inverso): |
|
| //+------------------------------------------------------------------+
|
| // Ob, Fvg, Gap, Rdrb, Imbalance
|
| class IBlocksGen : public IBlocks
|
| {
|
| public:
|
| //---
|
| IBlocksGen() {}
|
| ~IBlocksGen() {}
|
|
|
| //--- Creación
|
| virtual bool Create(string symbol, ENUM_TIMEFRAMES timeframe,
|
| long chart_id = 0, int subwin = 0,
|
| bool show_concept = true) = 0;
|
|
|
| //--- Configuración
|
| virtual 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) = 0;
|
| //--- General
|
| virtual inline void SetCalculatePrevInNextBar() = 0;
|
|
|
| //--- Obtención de datos
|
| // Mitigados
|
| virtual inline Bloques GetAlcistaMitigado(const int pos) = 0;
|
| virtual inline Bloques GetBajistaMitigiado(const int pos) = 0;
|
| virtual inline void GetAlcistasMitigados(Bloques &bloques[]) = 0;
|
| virtual inline void GetBajistasMitigados(Bloques &bloques[]) = 0;
|
|
|
| // Activo
|
| virtual inline Bloques GetAlcista(const int index) = 0;
|
| virtual inline Bloques GetBajista(const int index) = 0;
|
| virtual inline void GetData(Bloques &alcistas[], Bloques &bajistas[]) = 0;
|
|
|
| // Extra
|
| virtual inline Bloques GetLastAlcista() = 0;
|
| virtual inline Bloques GetLastBajista() = 0;
|
| virtual inline Bloques GetMasCercanoAlcista() = 0;
|
| virtual inline Bloques GetMasCercanoBajista() = 0;
|
| };
|
|
|
|
|
| //+------------------------------------------------------------------+
|
| //| Imbalances (FVG, Gap, Imbalance, RDRB) |
|
| //+------------------------------------------------------------------+
|
| class IImbalanceBlocks : public IBlocksGen
|
| {
|
| public:
|
| //---
|
| IImbalanceBlocks() {}
|
| ~IImbalanceBlocks() {}
|
|
|
|
|
| //---
|
| virtual inline void Set(int range_, ENUM_MODO_OBTENCION_IMBALANCE mode_obtencin,
|
| ENUM_STYLE_DIBUJO_IMBALANCES style_draw_imbalacnes, TSN::CDiff* diff) = 0;
|
|
|
| virtual inline void DesactivarUsoMarketBook() = 0;
|
| };
|
|
|
|
|
| //+------------------------------------------------------------------+
|
| //| Intefaz para bloques (nor) que utilizen tick |
|
| //+------------------------------------------------------------------+
|
| template <typename T>
|
| class IBlockTick : public T
|
| {
|
| public:
|
| //---
|
| IBlockTick() {}
|
| ~IBlockTick() {}
|
|
|
| //---
|
| virtual inline void OnTickEvent(datetime curr_time) = 0;
|
| virtual inline void FreeArrayMitigated() = 0;
|
| };
|
|
|
| //+------------------------------------------------------------------+
|
| //| Interfaz para bloques inversos |
|
| //+------------------------------------------------------------------+
|
| // Breaker block, Todos los Bpr* , Todos los Inverse* / I*
|
| class IInverseBlocksGen : public IBlocks
|
| {
|
| public:
|
| //---
|
| IInverseBlocksGen() {}
|
| ~IInverseBlocksGen() {}
|
|
|
| //---
|
| virtual 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 = 1, ENUM_LINE_STYLE style_mitad = STYLE_DOT) = 0;
|
|
|
| //---
|
| virtual inline int MaxEsperaToSuperate() = 0;
|
| virtual inline void MaxEsperaToSuperate(const int new_val) = 0;
|
|
|
| //--- Obtencion de data
|
| // Mitigados
|
| virtual inline BreakerBloques GetAlcistaMitigado(const int index) = 0;
|
| virtual inline BreakerBloques GetBajistaMitigado(const int index) = 0;
|
| virtual inline void GetAlcistasMitigados(BreakerBloques &out[]) = 0;
|
| virtual inline void GetBajistasMitigados(BreakerBloques &out[]) = 0;
|
|
|
| // No mitigados
|
| virtual inline BreakerBloques GetAlcista(const int index) = 0;
|
| virtual inline BreakerBloques GetBajista(const int index) = 0;
|
| virtual inline void GetData(BreakerBloques &out_alcistas[], BreakerBloques &out_bajitas[]) = 0;
|
|
|
| // Extra
|
| virtual inline BreakerBloques MasCercanoAlcista() = 0;
|
| virtual inline BreakerBloques MasCercanoBajista() = 0;
|
| };
|
|
|
|
|
| //+------------------------------------------------------------------+
|
| //| |
|
| //+------------------------------------------------------------------+
|
| // Para CInverse*
|
| class IInverseImbalance : public IInverseBlocksGen
|
| {
|
| public:
|
| IInverseImbalance(void) {}
|
| ~IInverseImbalance(void) {}
|
|
|
| //---
|
| virtual bool CreateByBlockBar(long chart_id_, int subwin_, bool mostar_obj, int handle_block_bar) = 0;
|
| virtual bool CreateByBlockTick(long chart_id_, int subwin_, bool mostar_obj, int handle_block_tick) = 0;
|
| };
|
|
|
|
|
| //+------------------------------------------------------------------+
|
| //| |
|
| //+------------------------------------------------------------------+
|
| // Para CBpr*
|
| class IInverseBpr : public IInverseImbalance
|
| {
|
| public:
|
| IInverseBpr(void) {}
|
| ~IInverseBpr(void) {}
|
|
|
| //---
|
| virtual inline void SetProperties(ENUM_MODO_OBTENCION_IMBALANCE mode_obt, TSN::CDiff* min_diff_) = 0;
|
| virtual inline void DesactivarUsoMarketBook() = 0;
|
| };
|
|
|
|
|
| //+------------------------------------------------------------------+
|
| #endif
|
| //+------------------------------------------------------------------+
|