using System; using System.Collections.Generic; using System.Linq; using System.Text; using TSLab.Script.Handlers; namespace SomeIndicators { public IList Execute(IList src) { if (src.Count < 141) return null; var Close = src; double[] FATLX = new double[Close.Count]; double[] SATLX = new double[Close.Count]; double[] FATLXTable = {+0.561502034657, +0.365741768344, +0.1246283836945, -0.01473961436490, -0.0371325723306}; double[] SATLTXable = { +0.1562539741407, +0.1544433970055, +0.1490876447087, +0.1404107375158, +0.1287733541965, +0.1146548833881, +0.0986297098048, +0.0813388630116, +0.0634586670988, +0.0456681224862, +0.02861686283596, +0.01289512910231, -0.000992478135273, -0.01264800909568, -0.02179536921844, -0.02828884295089, -0.0321146253528, -0.0333852375805, -0.0323273732493, -0.02926465534010, -0.02459582768226, -0.01876975990526, -0.01225894355651, -0.00553281646021, +0.000967174802483, +0.00685003796724, +0.01179369930414, +0.01555830124952, +0.01799461556330, +0.01904668516080, +0.01874894020431, +0.01721801688746, +0.01463993028818, +0.01125459367281, +0.00733763300160, +0.00318087935980, -0.000926801922595, -0.00471774192679, -0.00796092857942, -0.01047476408738, -0.01213594301454, -0.01288361015678, -0.01272018083043, -0.01170778972996, -0.00996104895990, -0.00763675336606, -0.00492103058867, -0.002016289386101, +0.000872939162694, +0.00355390195125, +0.00585747288703, +0.00764840512816, +0.00883222157032, +0.00935962815646, +0.00922769618096, +0.00847716366416, +0.00718837485383, +0.00547415811171, +0.00347055233582, +0.001326605368544, -0.000806719824469, -0.002785836761966, -0.00448401064434, -0.00579964428988, -0.00666132595239, -0.00703167838460, -0.00690798786235, -0.00632104684001, -0.00533179977363, -0.00402495648139, -0.002503345245875, -0.000880087263664, +0.000730195249791, +0.002218937436180, +0.00349113956791, +0.00446988930426, +0.00510125383363, +0.00535793738349, +0.00523887905871, +0.00476898763060, +0.00399593154370, +0.002985810201174, +0.001818076034901, +0.000578252401766, -0.000646224003017, -0.001772245840240, -0.002727817016846, -0.00345553301851, -0.00391643160326, -0.00409039519682, -0.00397772888982, -0.00359969167443, -0.002993746934053, -0.002211628435205, -0.001314761837386, -0.000369127377991, +0.000558550729740, +0.001406986914220, +0.002121243142798, +0.002657364006468, +0.002987808522460, +0.003100002889405, +0.002997191243154, +0.002695525507340, +0.002223832745960, +0.001623345770635, +0.000939873775901, +0.0002239840860133, -0.000472884170996, -0.001104187009498, -0.001629186070703, -0.002018510579268, -0.002250637245687, -0.002315813722960, -0.002221546829407, -0.001982879862156, -0.001622887980301, -0.001169356680720, -0.000655833024595, -0.0001241845626550, +0.000390069694387, +0.000851126328017, +0.001226762050913, +0.001499281358892, +0.001656090481647, +0.001695919286756, +0.001615482962289, +0.001419486991918, +0.001139651356128, +0.000797473098013, +0.000414928819383, +0.00001411405079434, -0.000383936281445, -0.000739954089522, -0.001069589563903, -0.001383231016033, -0.001682613821817, -0.002087847179392, -0.002715468728000, -0.00386997590639, -0.00606845403406, +0.00509721300047}; //---- начальные значения for (int i = 0; i < 141; i++) FATLX[i] = SATLX[i] = Close[i]; //---- расчёт int start = DrawSATLX ? 141 : 5; for (int i = start; i < Close.Count; i++) { for (int q = 0; q < start; q++) { if (DrawSATLX) SATLX[i] += SATLXTable[q] * Close[i - q]; else FATLX[i] += FATLXTable[q] * Close[i - q]; } } return DrawSATLX ? SATLX : FATLX; }