From d5a5b272aeaa4d74540d891fab5dec4fb8e06dae Mon Sep 17 00:00:00 2001 From: Toh4iem9 Date: Sun, 18 Jan 2026 11:20:47 +0100 Subject: [PATCH] refactor(indicators): Updated to use unified calculator --- .../MACD_Laguerre_Histogram_Pro.mq5 | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/Indicators/MyIndicators/Authors/Ehlers/5_Ehlers_Hybrids/MACD_Laguerre_Histogram_Pro.mq5 b/Indicators/MyIndicators/Authors/Ehlers/5_Ehlers_Hybrids/MACD_Laguerre_Histogram_Pro.mq5 index c5ef3ba..5792170 100644 --- a/Indicators/MyIndicators/Authors/Ehlers/5_Ehlers_Hybrids/MACD_Laguerre_Histogram_Pro.mq5 +++ b/Indicators/MyIndicators/Authors/Ehlers/5_Ehlers_Hybrids/MACD_Laguerre_Histogram_Pro.mq5 @@ -1,9 +1,9 @@ //+------------------------------------------------------------------+ //| MACD_Laguerre_Histogram_Pro.mq5 | -//| Copyright 2025, xxxxxxxx| +//| Copyright 2026, xxxxxxxx| //+------------------------------------------------------------------+ -#property copyright "Copyright 2025, xxxxxxxx" -#property version "2.00" // Refactored to use Engines +#property copyright "Copyright 2026, xxxxxxxx" +#property version "2.10" // Updated to use unified calculator #property description "Histogram for the Laguerre MACD with a selectable signal line." #property indicator_separate_window @@ -14,20 +14,18 @@ #property indicator_type1 DRAW_HISTOGRAM #property indicator_color1 clrSilver #property indicator_width1 1 -#property indicator_level1 0.0 -#property indicator_levelstyle STYLE_DOT -#include +#include //--- Input Parameters --- input group "Laguerre MACD Settings" -input double InpGamma1 = 0.2; // Fast Laguerre Gamma (smaller value) -input double InpGamma2 = 0.8; // Slow Laguerre Gamma (larger value) +input double InpGamma1 = 0.2; // Fast Laguerre Gamma +input double InpGamma2 = 0.8; // Slow Laguerre Gamma input group "Signal Line Settings" input ENUM_SMOOTHING_METHOD_LAGUERRE InpSignalMAType = SMOOTH_Laguerre; -input int InpSignalPeriod = 9; // Period (for MA types) -input double InpSignalGamma = 0.5; // Gamma (for Laguerre type) +input int InpSignalPeriod = 9; +input double InpSignalGamma = 0.5; input group "Price Source" input ENUM_APPLIED_PRICE_HA_ALL InpSourcePrice = PRICE_CLOSE_STD; @@ -36,7 +34,7 @@ input ENUM_APPLIED_PRICE_HA_ALL InpSourcePrice = PRICE_CLOSE_STD; double BufferHistogram[]; //--- Global calculator object --- -CMACDLaguerreHistogramCalculator *g_calculator; +CMACDLaguerreCalculator *g_calculator; //+------------------------------------------------------------------+ int OnInit() @@ -45,14 +43,14 @@ int OnInit() ArraySetAsSeries(BufferHistogram, false); if(InpSourcePrice <= PRICE_HA_CLOSE) - g_calculator = new CMACDLaguerreHistogramCalculator_HA(); + g_calculator = new CMACDLaguerreCalculator_HA(); else - g_calculator = new CMACDLaguerreHistogramCalculator(); + g_calculator = new CMACDLaguerreCalculator(); if(CheckPointer(g_calculator) == POINTER_INVALID || !g_calculator.Init(InpGamma1, InpGamma2, InpSignalGamma, InpSignalPeriod, InpSignalMAType)) { - Print("Failed to create or initialize MACD Laguerre Histogram Calculator."); + Print("Failed to create or initialize MACD Laguerre Calculator."); return(INIT_FAILED); } @@ -86,9 +84,9 @@ int OnCalculate(const int rates_total, ENUM_APPLIED_PRICE price_type = (InpSourcePrice <= PRICE_HA_CLOSE) ? (ENUM_APPLIED_PRICE)(-(int)InpSourcePrice) : (ENUM_APPLIED_PRICE)InpSourcePrice; - g_calculator.Calculate(rates_total, prev_calculated, open, high, low, close, price_type, BufferHistogram); +// Use the Histogram-only wrapper method + g_calculator.CalculateHistogramOnly(rates_total, prev_calculated, open, high, low, close, price_type, BufferHistogram); return(rates_total); } //+------------------------------------------------------------------+ -//+------------------------------------------------------------------+