Idea by: Apelsin

mq5 code by: barabashkakvn

The EA uses a very simple neural network unit

double n1=((ma_h1[1]-ma_h1[2])/ma_h1[1])*p1+((ma_h1[2]-ma_h1[3])/ma_h1[3])*p2+((ma_h1[3]-ma_h1[4])/ma_h1[4])*p3;
   n1=(MathRound(n1*10000));

   double n2=((ma_h4[1]-ma_h4[2])/ma_h4[2])*q1+((ma_h4[2]-ma_h4[3])/ma_h4[3])*q2+((ma_h4[3]-ma_h4[4])/ma_h4[4])*q3;
   n2=(MathRound(n2*10000));

   double n3=((ma_d1[1]-ma_d1[2])/ma_d1[2])*k1+((ma_d1[2]-ma_d1[3])/ma_d1[3])*k2+((ma_d1[3]-ma_d1[4])/ma_d1[4])*k3;
   n3=(MathRound(n3*10000));

   if((n1>0 && n2>0 && n3>0))
      m_need_open_buy=true;
   if((n1>0 && n2<0 && n3<0))
      m_need_open_sell=true;

based on the signals from three indicators iMA (Moving Average, MA) on H1, H4, and D1.

Recommendations on Optimization

Optimization is performed in two stages (1 and 2 in the picture below). 

After stages one and two

select among the top ten ones the version that provides equally good results on both backtest and forward.