90 lines
3.2 KiB
MQL5
90 lines
3.2 KiB
MQL5
//+------------------------------------------------------------------+
| |
//| TimeFrameDataSeries.mqh |
| |
//| Copyright 2026, Concrete Goonies |
| |
//| https://concrete-goonies.web.app |
| |
//+------------------------------------------------------------------+
| |
#property copyright "Copyright 2026, Concrete Goonies"
| |
#property link "https://concrete-goonies.web.app"
| |
#property version "1.00"
| |
| |
#include "Candles.mqh"
| |
#include "Indicator.mqh"
| |
#include "../Configs/EAConfig.mqh"
| |
#include <Collection/DynamicArrayList.mqh>
| |
| |
//+------------------------------------------------------------------+
| |
//| |
| |
//+------------------------------------------------------------------+
| |
class TimeFrameDataSeries
| |
{
| |
private:
| |
| |
| |
public:
| |
string symbol;
| |
ENUM_TIMEFRAMES tf;
| |
| |
Candles* bar;
| |
CArrayList<Indicator*>* indicators;
| |
bool relaunchInitialized;
| |
| |
ENUM_TIME_FETCH_TYPE fetchType;
| |
int fetchCount;
| |
bool relaunchOnNewPeriod;
| |
datetime nextRelaunchTime;
| |
bool isReset;
| |
TimeFrameDataSeries();
| |
~TimeFrameDataSeries();
| |
// Update all underlying data
| |
bool Update(int count = 3);
| |
void AddIndicator(Indicator* ind) { indicators.Add(ind); }
| |
| |
int TotalBars() const { return bar.Size(); }
| |
double Close(int pShift) { return bar.Close(pShift); }
| |
double High(int pShift) { return bar.High(pShift); }
| |
double Low(int pShift) { return bar.Low(pShift); }
| |
double Open(int pShift) { return bar.Open(pShift); }
| |
datetime Time(int pShift) { return bar.Time(pShift); }
| |
| |
| |
int IndicatorCount() { return indicators.Size(); }
| |
Indicator* GetIndicator(int idx) { return indicators.At(idx); }
| |
};
| |
//+------------------------------------------------------------------+
| |
//| |
| |
//+------------------------------------------------------------------+
| |
TimeFrameDataSeries::TimeFrameDataSeries(): bar(NULL), relaunchOnNewPeriod(false), isReset(false), nextRelaunchTime(0)
| |
{
| |
indicators = new CArrayList<Indicator*>();
| |
bar = new Candles();
| |
}
| |
//+------------------------------------------------------------------+
| |
//| |
| |
//+------------------------------------------------------------------+
| |
TimeFrameDataSeries::~TimeFrameDataSeries()
| |
{
| |
for(int s = 0; s < indicators.Size(); s++)
| |
delete indicators.At(s);
| |
| |
delete indicators;
| |
delete bar;
| |
}
| |
//+------------------------------------------------------------------+
| |
// Update all underlying data
| |
bool TimeFrameDataSeries::Update(int count = 3)
| |
{
| |
| |
//Print("TimeFrameDataSeries: ",count);
| |
| |
if(bar == NULL || indicators == NULL)
| |
return false;
| |
| |
if(!bar.Update(count))
| |
return false;/**/
| |
| |
for(int i = 0; i < indicators.Size(); i++)
| |
indicators.At(i).Update(count);
| |
| |
return true;
| |
}
| |
//+------------------------------------------------------------------+
|