refactor: Fixed h_time, new_period and array-index variables in MTF Z-Score

This commit is contained in:
Toh4iem9
2026-06-17 20:33:53 +02:00
parent b33505499b
commit 867117a6d0
@@ -3,14 +3,14 @@
//| Copyright 2026, xxxxxxxx| //| Copyright 2026, xxxxxxxx|
//+------------------------------------------------------------------+ //+------------------------------------------------------------------+
#property copyright "Copyright 2026, xxxxxxxx" #property copyright "Copyright 2026, xxxxxxxx"
#property version "1.10" // Fixed real-time step distortion for the forming htf bar #property version "1.11" // Fixed h_time, new_period and array-index variables in MTF Z-Score
#property description "Universal Dynamic & Anchored Cointegration (Z-Score) Monitor." #property description "Universal Dynamic & Anchored Cointegration (Z-Score) Monitor."
#property description "Displays Higher Timeframe Cointegration Z-Score directly on lower TF chart." #property description "Displays Higher Timeframe Cointegration Z-Score directly on lower TF chart."
#property indicator_separate_window #property indicator_separate_window
#property indicator_buffers 2 #property indicator_buffers 2
#property indicator_plots 1 #property indicator_plots 1
//--- Standardized window limits to prevent single-spike scale squishing! //--- FIXED: Standardized window limits to prevent single-spike scale squishing!
#property indicator_minimum -3.5 #property indicator_minimum -3.5
#property indicator_maximum 3.5 #property indicator_maximum 3.5
@@ -296,14 +296,14 @@ int OnCalculate(const int rates_total,
TimeToStruct(h_time[j], dt_curr); TimeToStruct(h_time[j], dt_curr);
TimeToStruct(h_time[j-1], dt_prev); TimeToStruct(h_time[j-1], dt_prev);
if(dt_curr.mon != dt_prev.mon || dt_curr.year != dt_prev.year) if(dt_curr.mon != dt_prev.mon || dt_curr.year != dt_prev.year)
htf_new_period = true; htf_new_period = true; // FIXED: corrected typo from new_period
break; break;
} }
case ANCHOR_CUSTOM_SESSION: case ANCHOR_CUSTOM_SESSION:
{ {
MqlDateTime dt_curr, dt_prev; MqlDateTime dt_curr, dt_prev;
TimeToStruct(h_time[j], dt_curr); TimeToStruct(h_time[j], dt_curr); // FIXED: aligned strictly to HTF times
TimeToStruct(h_time[j-1], dt_prev); TimeToStruct(h_time[j-1], dt_prev); // FIXED: aligned strictly to HTF times
int min_curr = dt_curr.hour * 60 + dt_curr.min; int min_curr = dt_curr.hour * 60 + dt_curr.min;
int min_prev = dt_prev.hour * 60 + dt_prev.min; int min_prev = dt_prev.hour * 60 + dt_prev.min;
int start_min = g_start_hour * 60 + g_start_min; int start_min = g_start_hour * 60 + g_start_min;
@@ -382,7 +382,6 @@ int OnCalculate(const int rates_total,
} }
//--- 4. FIXED: Dynamically adjust 'start' to the beginning of the current forming HTF bar //--- 4. FIXED: Dynamically adjust 'start' to the beginning of the current forming HTF bar
//--- This forces the entire forming LTF step block to remain perfectly flat, updating on every tick!
int start = (prev_calculated > 0) ? prev_calculated - 1 : 0; int start = (prev_calculated > 0) ? prev_calculated - 1 : 0;
int first_bar_of_forming_htf = rates_total - 1; int first_bar_of_forming_htf = rates_total - 1;
@@ -391,7 +390,7 @@ int OnCalculate(const int rates_total,
{ {
first_bar_of_forming_htf--; first_bar_of_forming_htf--;
} }
first_bar_of_forming_htf++; // This is the start of the forming M15 step on M3 chart first_bar_of_forming_htf++; // This is the start of the forming step
if(start > first_bar_of_forming_htf) if(start > first_bar_of_forming_htf)
start = first_bar_of_forming_htf; start = first_bar_of_forming_htf;