Real author:
Rudinei Felipetto
The Didi needles indicator with the advanced customization settings of the moving averages used in its calculations.
//+----------------------------------------------+ //| Indicator input parameters                  | //+----------------------------------------------+ input Smooth_Method Curta_Method=MODE_SMA; // Curta Averaging method input uint Curta=3; // Curta Depth of smoothing input int CPhase=15; // Curta Smoothing parameter //--- for JJMA it varies within the range -100 ... +100 and influences the quality of the transient period; //--- for VIDIA it is a CMO period, for AMA it is a slow average period //--- input Smooth_Method Media_Method=MODE_SMA; // Media Averaging method input uint Media=8; // Media Depth of smoothing input int MPhase=15; // Media Smoothing parameter //--- for JJMA it varies within the range -100 ... +100 and influences the quality of the transient period; //--- for VIDIA it is a CMO period, for AMA it is a slow average period input Smooth_Method Longa_Method=MODE_SMA; // Longa Averaging method input uint Longa=20; // Longa Depth of smoothing input int LPhase=15; // Longa Smoothing parameter //--- for JJMA it varies within the range -100 ... +100 and influences the quality of the transient period; //--- for VIDIA it is a CMO period, for AMA it is a slow average period input Applied_price_ IPC=PRICE_CLOSE;    // Price constant input bool  Revers=false;  // Chart inversion relative to the time axis
The indicator uses SmoothAlgorithms.mqh library classes (copy it to <terminal_data_folder>\MQL5\Include). The use of the classes was thoroughly described in the article “Averaging Price Series for Intermediate Calculations Without Using Additional Buffers”.
Figure 1. The XDidi_Index and XDidi_Index_Cloud indicators