//+------------------------------------------------------------------+ //| TOL LANGIT ETF.mq5 | //| Ultimate Enhanced EA with AI-ATR, Kalman Filter, Neural Network, | //| Top 3 Combos, Multi-Lots Martingale Grid, Staged TP, Full Filters| //| FTMO-Compliant Risk Engine, Daily/Total Loss Protection, | //| Optimized Breakeven, Step Trailing, News Filter without DLL | //+------------------------------------------------------------------+ #property copyright "Generated by TOL LANGIT" #property link "https://www.mql5.com/en/users/adithyodw" #property version "16.01" #property description "TOL LANGIT ETF: Adaptive Forex/Gold EA with Kalman, Neural Fusion, Martingale Grid up to 10 levels, Step Trailing, Enhanced Breakeven" #property description "FTMO-Compliant: % Risk per Trade, SL Enforced, DD Protection, Built-in News Filter via WebRequest (no DLL), Auto GMT" // Deep Neural Network class #define SIZE_HIDDENA 4 #define SIZE_HIDDENB 4 #define SIZE_OUTPUT 2 class DeepNeuralNetwork { private: int numInput; int numHiddenA; int numHiddenB; int numOutput; double inputs[]; double iaWeights[][SIZE_HIDDENA]; double abWeights[][SIZE_HIDDENB]; double boWeights[][SIZE_OUTPUT]; double aBiases[]; double bBiases[]; double oBiases[]; double aOutputs[]; double bOutputs[]; double outputs[]; public: DeepNeuralNetwork(int _numInput, int _numHiddenA, int _numHiddenB, int _numOutput); void SetWeights(double &weights[]); void ComputeOutputs(double &xValues[], double &yValues[]); double HyperTanFunction(double x); void Softmax(double &oSums[], double &_softOut[]); }; //+------------------------------------------------------------------+ //| Constructor | //+------------------------------------------------------------------+ DeepNeuralNetwork::DeepNeuralNetwork(int _numInput, int _numHiddenA, int _numHiddenB, int _numOutput) { numInput =_numInput; numHiddenA =_numHiddenA; numHiddenB =_numHiddenB; numOutput =_numOutput; ArrayResize(inputs,numInput); ArrayResize(aBiases,numHiddenA); ArrayResize(bBiases,numHiddenB); ArrayResize(oBiases,numOutput); ArrayResize(aOutputs,numHiddenA); ArrayResize(bOutputs,numHiddenB); ArrayResize(outputs,numOutput); // weight matrices are static in the second dimension ArrayResize(iaWeights,numInput); ArrayResize(abWeights,numHiddenA); ArrayResize(boWeights,numHiddenB); } //+------------------------------------------------------------------+ //| SetWeights - fill weight and bias arrays from a flat array | //+------------------------------------------------------------------+ void DeepNeuralNetwork::SetWeights(double &weights[]) { int idx=0; // iaWeights (input to hidden A) for(int i=0;i