Discussing the article: "Neural Networks in Trading: An End-to-End Multivariate Time Series Forecasting Model (Conclusion)"

 

Check out the new article: Neural Networks in Trading: An End-to-End Multivariate Time Series Forecasting Model (Conclusion).

We are pleased to present the final part of our series on GinAR — a neural network framework for time series forecasting. In this article, we analyze the results of testing the model on new data and assess its robustness under real-market conditions.

We have now reached the most crucial — and perhaps the most interesting — part: evaluating the GinAR framework in real-world conditions. We have now completed the stages of architectural design, implementation of key components, and development of forward- and backward-pass algorithms. All components of the system have been thoroughly developed, tested, and adapted to the specific characteristics of financial time series. Now it is time to bring them all together and, as they say, put them through their paces — to see how effectively GinAR handles practical analysis and forecasting tasks.

After completing the offline training, we moved on to the second phase — online fine-tuning conducted under conditions close to the live market. Training was carried out in the MetaTrader 5 Strategy Tester, where the model analyzed the market in streaming mode, step by step and candle by candle. Not only did this allow us to test the model’s resilience to noise, market distortions, and random fluctuations, but it also became an important tool for adaptation: the model did not simply memorize — it actually learned to operate under real, unpredictable conditions. This approach significantly increased its robustness, reduced overfitting, and improved its generalization ability.

The final step was to test the model on entirely new data — market quotes for the period from January through March 2025. All parameters and internal settings used during training were retained unchanged. Thus, the results obtained allow for an objective assessment not only of the accuracy but also of the practical reliability of the proposed approach.

The model testing results provide an objective picture of its actual effectiveness and robustness outside the training sample. The initial deposit of $100 grew to $1,087.74, which is equivalent to a more than 10-fold increase in capital — a result that seems impressive at first glance. However, upon closer examination, a distinctive pattern becomes apparent: the model performs very well at the beginning of the test period, but as it moves further away from the training sample, its performance begins to decline.


Author: Dmitriy Gizlyk

 
Redefinition of default parameter NeuroNet.mqh 13794 177
none of the overloads can be applied to the function call Math.mqh 66 20

bool Math::MathPow(const double&[], const double, double&[]) Math.mqh 2976 6

 

They’ve messed something up again with the function calls… please help me sort this out…

It doesn’t recognise

double Math::MathPow(double a), for example, but only offers implementations for arrays:

bool Math::MathPow(const double&[], const double, double&[])Math.mqh

which I have absolutely no idea what they’re for?!(((

 
Andrew_7543 the function calls… please help me sort this out…

It’s not working

double Math::MathPow(double a) – let’s say it only offers implementations for arrays:

bool Math::MathPow(const double&[], const double, double&[])Math.mqh

It’s not at all clear what these are actually for?!(((

Wherever the error occurs, replace MathPow with::MathPow; this will allow you to call the compiler’s functions rather than those declared in the class.

 
(Thanks, by the way.) Well, what else was I to do? That’s why I went down that path...
 
Dmitriy Gizlyk MathPow with::MathPow; this will allow you to call the compiler’s functions rather than those declared in the class.
Furthermore, similar issues can be found in the NeuroNet.mqh module

 call resolves to 'bool CNeuronPSBlock::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,float,ENUM_OPTIMIZATION,uint)' instead of 'bool CNeuronConvSAMOCL::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,uint,ENUM_OPTIMIZATION,uint)' due to new rules of method hiding NeuroNet.mqh 3513 25
   see declaration of function 'CNeuronPSBlock::Init' NeuroNet.mqh 48451 22
   see declaration of function 'CNeuronConvSAMOCL::Init' NeuroNet.mqh 11308 22
no one of the overloads can be applied to the function call NeuroNet.mqh 21835 18
could be one of 2 function(s) NeuroNet.mqh 21835 18
   bool CNeuronConvSAMOCL::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,uint,ENUM_OPTIMIZATION,uint) NeuroNet.mqh 11308 22
   bool CNeuronConvSAMOCL::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,uint,float,ENUM_OPTIMIZATION,uint) NeuroNet.mqh 11309 22
call resolves to '<NA>' instead of 'bool CNeuronConvOCL::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,ENUM_OPTIMIZATION,uint)' due to new rules of method hiding NeuroNet.mqh 21835 18
   see declaration of function 'CNeuronConvOCL::Init' NeuroNet.mqh 10973 22
no one of the overloads can be applied to the function call NeuroNet.mqh 21840 18
could be one of 2 function(s) NeuroNet.mqh 21840 18
   bool CNeuronConvSAMOCL::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,uint,ENUM_OPTIMIZATION,uint) NeuroNet.mqh 11308 22
   bool CNeuronConvSAMOCL::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,uint,float,ENUM_OPTIMIZATION,uint) NeuroNet.mqh 11309 22
call resolves to '<NA>' instead of 'bool CNeuronConvOCL::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,ENUM_OPTIMIZATION,uint)' due to new rules of method hiding NeuroNet.mqh 21840 18
   see declaration of function 'CNeuronConvOCL::Init' NeuroNet.mqh 10973 22
no one of the overloads can be applied to the function call NeuroNet.mqh 21846 18
could be one of 2 function(s) NeuroNet.mqh 21846 18
   bool CNeuronConvSAMOCL::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,uint,ENUM_OPTIMIZATION,uint) NeuroNet.mqh 11308 22
   bool CNeuronConvSAMOCL::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,uint,float,ENUM_OPTIMIZATION,uint) NeuroNet.mqh 11309 22
call resolves to '<NA>' instead of 'bool CNeuronConvOCL::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,ENUM_OPTIMIZATION,uint)' due to new rules of method hiding NeuroNet.mqh 21846 18
   see declaration of function 'CNeuronConvOCL::Init' NeuroNet.mqh 10973 22
no one of the overloads can be applied to the function call NeuroNet.mqh 30722 16
could be one of 2 function(s) NeuroNet.mqh 30722 16
   bool CNeuronConvOCL::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,ENUM_OPTIMIZATION,uint) NeuroNet.mqh 10973 22
   bool CNeuronConvOCL::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,uint,ENUM_OPTIMIZATION,uint) NeuroNet.mqh 10974 22
call resolves to '<NA>' instead of 'bool CNeuronProofOCL::Init(uint,uint,COpenCLMy*,int,int,int,ENUM_OPTIMIZATION,uint)' due to new rules of method hiding NeuroNet.mqh 30722 16
   see declaration of function 'CNeuronProofOCL::Init' NeuroNet.mqh 10856 22
no one of the overloads can be applied to the function call NeuroNet.mqh 30730 16
could be one of 2 function(s) NeuroNet.mqh 30730 16
   bool CNeuronConvOCL::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,ENUM_OPTIMIZATION,uint) NeuroNet.mqh 10973 22
   bool CNeuronConvOCL::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,uint,ENUM_OPTIMIZATION,uint) NeuroNet.mqh 10974 22
call resolves to '<NA>' instead of 'bool CNeuronProofOCL::Init(uint,uint,COpenCLMy*,int,int,int,ENUM_OPTIMIZATION,uint)' due to new rules of method hiding NeuroNet.mqh 30730 16
   see declaration of function 'CNeuronProofOCL::Init' NeuroNet.mqh 10856 22
no one of the overloads can be applied to the function call NeuroNet.mqh 30755 16
could be one of 2 function(s) NeuroNet.mqh 30755 16
   bool CNeuronConvOCL::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,ENUM_OPTIMIZATION,uint) NeuroNet.mqh 10973 22
   bool CNeuronConvOCL::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,uint,ENUM_OPTIMIZATION,uint) NeuroNet.mqh 10974 22
call resolves to '<NA>' instead of 'bool CNeuronProofOCL::Init(uint,uint,COpenCLMy*,int,int,int,ENUM_OPTIMIZATION,uint)' due to new rules of method hiding NeuroNet.mqh 30755 16
   see declaration of function 'CNeuronProofOCL::Init' NeuroNet.mqh 10856 22
wrong parameters count, 12 passed, but 15 requires NeuroNet.mqh 64222 22
   bool CNeuronTimeMoEAttention::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,uint,uint,uint,uint,uint,uint,ENUM_OPTIMIZATION,uint) NeuroNet.mqh 63529 22
call resolves to 'bool CNeuronTimeMoEAttention::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,uint,uint,uint,uint,uint,uint,ENUM_OPTIMIZATION,uint)' instead of 'bool CNeuronCrossDMHAttention::Init(uint,uint,COpenCLMy*,uint,uint,uint,uint,uint,uint,uint,ENUM_OPTIMIZATION,uint)' due to new rules of method hiding NeuroNet.mqh 64222 22
   see declaration of function 'CNeuronTimeMoEAttention::Init' NeuroNet.mqh 63529 22
   see declaration of function 'CNeuronCrossDMHAttention::Init' NeuroNet.mqh 50759 22
7 errors, 8 warnings 7 8
 
Andrew_7543 #:
Furthermore, the same issues occur in the NeuroNet.mqh module

The corrected library can be found in the article ‘Neural Networks in Trading: Decomposition Instead of Scaling — Building Modules’ – Articles on MQL5

Нейросети в трейдинге: Декомпозиция вместо масштабирования — Построение модулей
Нейросети в трейдинге: Декомпозиция вместо масштабирования — Построение модулей
  • 2025.08.08
  • www.mql5.com
В этой статье продолжаем практическое знакомство с SSCNN — архитектурным решением нового поколения, способным работать с фрагментированными временными рядами. Вместо слепого масштабирования — разумная модульность, внимание к деталям и точечная нормализация. Мы шаг за шагом создаём вычислительные блоки в среде MQL5 и закладываем основу для надёжного прогнозного анализа.
 
Thanks!) Everything’s working just as it did before the terminal update... and huge respect for the article!!!!
 
@Dmitriy Gizlyk, hello... It’s not entirely clear what happens during online trading: what timeframe did you choose, and what settings did you use in the strategy tester to simulate live trading conditions?