I am trying to replicate results from Tomasz publication (some time ago) of creating multi-timeframe indicators from 1 minute data.
I have reduced the number of time frames for debug purposes, so do not except useful results. Just want to see what the problems are.
Having problems undersatding data values printed in Debug View.
Data seems reasonable for first timeframe but some arteficial value for all other time frames.
Paticularly strange is that the same strange values persiste for all symbols processed.
The referenced code from Tomasz publication is
my code below
//File: MTF MACD
//
//version 1.0
//June 3, 2025
//
//
Pgm_name = "MTF MACD";
//
//This program reads the components of a index and generates MTF MACD indicator and saves it in ATC
//As a second step, It combines all the individual MTF MACDs for all the symbols in the index
// -------------------------------------------------------------------------------------------------------------------------------------
//
// Source List:
// - "NDX-100"
//
//Target ATCs:
// - Indivudual symbols: "~MTMACD" + sym","C"
//
//
//
// ===================================================================================================================================
// ===================================================================================================================================
//
//
//
//
#pragma maxthreads 1
//
//
//
bi = BarIndex();
ai = bi - bi[0];
//
//
// ========================================================================================================================================
// ========================================================================================================================================
// Process Data from All Markets List and add to the various target Lists
// ========================================================================================================================================
// ========================================================================================================================================
//
_trace( "MTF-A1 symbol - Start program");
// The loop identifies Watch List number, adds symbol to list.
SourceListName = "NDX-100";
SourceListNum = CategoryFind( SourceListName, CategoryWatchlist ); // Get List Number
SourceList = CategoryGetSymbols( Categorywatchlist, SourceListNum, 0 ) ;
Num_Symbols = StrCount( sourceList, "," ) + 1;
_trace( "MTF-B1 status " + writeval(status("action"),1.0) + " List_Num " + Writeval( SourceListNum, 1.0 ) + " Source_Name "
+ SourceListName + " numsymbols " + Writeval( Num_Symbols, 1.0 ) + " Source_List " + StrLeft(SourceList,50));
// Extraxt symbol and process in multi Time Frame
for( j = 0; ( sym = StrExtract( SourceList, j ) ) != ""; j++ )
{
//
_trace( "MTF-B2 - j " + writeval(j,1.0) + " symbol " + sym);
// Control Time Frame - Loop through chosen time frames
MDresult = 0;
MDCount = 0;
SymMD = 0;
SetForeign( sym );
_trace( "MTF-B3 status " + writeval(status("action"),1.0) + " - symbol " + sym + " close " + writeval( lastvalue(close), 1.2));
//jj=5;
//
for( jj = 5; jj <= 25; jj = jj + 5 )
//for( jj = 1; jj <= 31; jj++ )
{
TimeFrameNum = int(jj / 5);
TimeFrameSet( jj * in1Minute );
// MACD Parameters
TFclose = Close;
MACD1 = MACD( 12, 26 );
_trace( "MTF-B41 status " + writeval(status("action"),1.0) + " TimeFrameNum " + writeval(TimeFrameNum,1.0) + " - symbol " + sym + " jj " + writeval( jj, 1, 0 )+ " close " + writeval( lastvalue(TFclose), 1.2) + " MACD1 " + writeval( lastvalue(MACD1), 1.2));
Timeframerestore();
//
_trace( "MTF-B42 - status " + writeval(status("action"),1.0) + " TimeFrameNum " + writeval(TimeFrameNum,1.0) + " symbol " + sym + " jj " + writeval( jj, 1, 0 )+ " close " + writeval( lastvalue(TFclose), 1.2) + " MACD1 " + writeval( lastvalue(MACD1), 1.2));
//
X = IIf( TimeFrameExpand( MACD1, jj * in1Minute ) > 0, 1, -1 );
MDresult = MDresult + X;
MDCount++;
//
_trace( "MTF-B43 - status " + writeval(status("action"),1.0) + " TimeFrameNum " + writeval(TimeFrameNum,1.0) + " symbol " + sym + " jj " + writeval( jj, 1, 0 ) + " close " + writeval( lastvalue(TFclose), 1.2) + " MACD1 " + writeval( lastvalue(MACD1), 1.2) + " MD Count "
+ writeval( MDcount, 1.2) + " MDresult " + writeval( MDresult, 1.2 )+ " MTMACD " + writeval( MDresult / MDcount, 1.2 ));
//
//
} // end jj loop
//
RestorePriceArrays();
//
_trace( "MTF-B5 - status " + writeval(status("action"),1.0) + " symbol " + sym + " MTMACD " + writeval( lastvalue(MDresult / MDcount), 1.2 ));
// Single Issue MT-MACD
AddtoComposite( MDresult / MDcount, "~MTMACD-" + sym, "C", atcFlagDefaults );
//
// Create sum of single issue MTMAACD to create multi Issue MT-MACD (SMTMACD)
SymMD = SymMD + MDresult;
//
} // end j loop
//
// Multiple Issue STMACD
AddtoComposite( SymMD / Num_Symbols, "~~SMTMACD-" + SourceListName, "C", atcFlagDefaults );
//
//
Buy = Sell = 0;
//
The debug View imagae below