Индикатор спреда обнуляется при смене таймфрейма

 

Парни! Замутил индикатор спреда, который показывает минимальное и максимальное значение на текущем баре.

Но проблема в том, что он обнулится при смене таймфрейма. Есть идея сохранять эти данные на диск и считывать их при смене таймфрейма. Но это сложно.

Может что по проще предложете?

//+------------------------------------------------------------------+
//|                                                   Stochastic.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir V. Tkach"
#property link      "https://www.mql5.com/ru/users/net/news"
#property description "Spread"
#property strict

#property indicator_separate_window
#property indicator_minimum    0
#property indicator_buffers    2
#property indicator_level1     20.0
#property indicator_levelcolor clrSilver
#property indicator_levelstyle STYLE_DOT
//--- buffers
double ExtMainBuffer[];
double ExtSignalBuffer[];

//---
int draw_begin1=0;
int draw_begin2=0;
int bar,min, max;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//string short_name;
//--- 2 additional buffers are used for counting.
   IndicatorBuffers(2);
//--- indicator lines
   SetIndexStyle(0,DRAW_HISTOGRAM,0,2,clrGreen);
   SetIndexBuffer(0,ExtMainBuffer);
   SetIndexStyle(1,DRAW_LINE,0,2,clrRed);
   SetIndexBuffer(1,ExtSignalBuffer);

//--- initialization done
   bar=iTime(Symbol(),PERIOD_CURRENT,1);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Stochastic oscillator                                            |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

   if(bar!=iTime(Symbol(),PERIOD_CURRENT,0))
     {
      bar=iTime(Symbol(),PERIOD_CURRENT,0);
      min=MarketInfo(Symbol(),MODE_SPREAD);
      max=MarketInfo(Symbol(),MODE_SPREAD);
     }

   min=MathMin(min,MarketInfo(Symbol(),MODE_SPREAD));
   max=MathMax(max,MarketInfo(Symbol(),MODE_SPREAD));

   ExtMainBuffer[0]=min;
   ExtSignalBuffer[0]=max;

   return(rates_total);
  }