197 라인
7.4 KiB
MQL5
//+------------------------------------------------------------------+
| |||
//| 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
| |||
//+------------------------------------------------------------------+
|