рдЬреЛ рднреА рдХрднреА рд╕реНрдЯреЙрдХ рдпрд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдХреНрдпреВрд░реЗрдВрд╕реА рдмрд╛рдЬрд╛рд░реЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрди рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рджреЗрдЦрд╛ рд╣реИред рдФрд░ рдЖрдкрдиреЗ рд╢рд╛рдпрдж рдЕрдиреБрднрд╡реА рд╡реНрдпрд╛рдкрд╛рд░рд┐рдпреЛрдВ рд╕реЗ рд░рд╛рдп рд╕реБрдиреА рд╣реИ рдХрд┐ рд╡реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡реЗ рдмрд╣реБрдд рдорджрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореЗрд░реЗ рдЯреНрд░реЗрдбрд┐рдВрдЧ рдЯрд░реНрдорд┐рдирд▓, рдЬрд┐рд╕реЗ рдореИрдВ рдЖрд▓рд╕реА рд░реВрдк рд╕реЗ рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╕реНрд╡реАрд░ рдЬреИрд╕рд╛ рдХреБрдЫ рджрд┐рдЦрддрд╛ рд╣реИред
рдХреИрд╕реЗ рд╡реЗ рд╕рднреА рдПрдХ рд╣реА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдФрд░ рдпрд╣ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЕрдЧрд░:
- рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд╡реНрдпрд╛рдкрд╛рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
- рдХреНрдпрд╛ рдЖрдк рдПрдХ рдЯреНрд░реЗрдбрд┐рдВрдЧ рд░реЛрдмреЛрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ
- рдХреНрдпрд╛ рдЖрдк рдЦреБрдж рдПрдХ рдЯреНрд░реЗрдбрд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

рдПрдХ рддрдХрдиреАрдХреА рд╕рдВрдХреЗрддрдХ рд╕рдмрд╕реЗ рдЕрдХреНрд╕рд░ рдПрдХ рдЦрд┐рдбрд╝рдХреА, рд╡рдЬрди рдпрд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдХреАрдорддреЛрдВ рдФрд░ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ рдореЛрдордмрддреНрддрд┐рдпреЛрдВ рдХреЗ рдПрдХ рд╕рд░рдгреА TOHLCV (рдпреВрдирд┐рдХреНрд╕ рд╕рдордп, рдЦреБрд▓рд╛, рдЙрдЪреНрдЪ, рдирд┐рдореНрди, рдмрдВрдж, рд╡реЙрд▓реНрдпреВрдо) рдХреЗ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдирд┐рдордп рд╕реЗ рдЖрддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ, рдЕрдзрд┐рдХрддрдо-рдиреНрдпреВрдирддрдо рдпрд╛ рдЕрдиреНрдп рд╕рдВрдХреЗрддрдХ рднреА рдмрд╛рдж рдХреА рдЧрдгрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдореВрд╡рд┐рдВрдЧ рдПрд╡рд░реЗрдЬ (SMA)рд╕рдВрдХреЗрддрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЪрд▓рддреА рдФрд╕рдд, рдпрд╣ рд╕рдорд╛рдкрди рдореВрд▓реНрдп рдкрд░ рдЪрд▓рддреА рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдореВрд▓реНрдп рдХрд╛ рдФрд╕рдд рд╣реИ
function sma($close, window) { return rolling(x => mean(x), window, $close); }
рдЬрд╣рд╛рдВ рдорд╛рдзреНрдп () рдлрд╝рдВрдХреНрд╢рди рдФрд╕рдд рдорд╛рди рд╣реИ, рд╡рд┐рдВрдбреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рд╣реИ, рдФрд░ рд░реЛрд▓рд┐рдВрдЧ () рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрди рд╣реИ, рдЬреЛ рдХрд┐ рд╕рд░рдгреА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрддрдорд╛рди рд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо n рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдСрдкрд░реЗрд╢рди рдЬреЛ рд╡рд┐рдВрдбреЛ рдХреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рддрдХ рдХрдо рдХрд░рддрд╛ рд╣реИред
function rolling(operation, window, array) { let result = []; for (let i = 0; i < array.length; i++) { if (i + 1 < window) { result.push(NaN); } else { result.push(operation(array.slice(i + 1 - window, i + 1))); } } return result; }
рдореВрд╡рд┐рдВрдЧ рдПрд╡рд░реЗрдЬ рд▓реИрдЧрд┐рдВрдЧ рдЗрдВрдбрд┐рдХреЗрдЯрд░ рд╣реИ рдФрд░ рдЯреНрд░реЗрдВрдб рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдореВрд▓реНрдп рдЪрд╛рд░реНрдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЙрдкрд░рд┐рд╢рд╛рдпреА рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рддреНрдпрд╛рдЧ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрдорддреМрд░ рдкрд░, рд╕рдВрдХреЗрддрдХреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдмрд┐рдВрджреБ рдЬрдм рдЫреЛрдЯреА рдЦрд┐рдбрд╝рдХреА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдХреЗрддрдХ рдПрдХ рд▓рдВрдмреА рдЦрд┐рдбрд╝рдХреА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдХреЗрддрдХ рдХреЛ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдиреАрдЪреЗ рд╕реЗ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдФрд░ рдКрдкрд░ рд╕реЗ рдПрдХ рдирд┐рдХрд╛рд╕ рдмрд┐рдВрджреБ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рджреЗрд░реА рдкреНрд░рднрд╛рд╡ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд░рд┐рдд рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдХ рдШрд╛рддреАрдп рднрд╛рд░рд┐рдд рдЪрд▓рддреА рдФрд╕рдд рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди (STDEV)рдпрджрд┐ рд╣рдо рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдорд╛рдзреНрдп () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд░реВрдЯ рдХреЗ рд╕рд╛рде рд╡рд┐рдЪрд░рдг sd () рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рдЧрддрд┐рдорд╛рди рд╡рд┐рдЪрд▓рди рдорд┐рд▓реЗрдЧрд╛ред
function stdev($close, window) { return rolling(x => sd(x), window, $close); }
рдлреИрд▓рд╛рд╡ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдмреЗрд╕реЗрд▓ рд╕реБрдзрд╛рд░ рдХреЗ рдмрд┐рдирд╛ред рд╡рд┐рдЪрд░рдг рдХреА рдЬрдбрд╝ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдЪрд░рдг рдХреЛ рд╡рд░реНрдЧрд╛рдХрд╛рд░ рд░реВрдмрд▓ / рдбреЙрд▓рд░ рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмреЛрд▓рд┐рдВрдЧрд░ рдмреИрдВрдб (рдмреАрдмреА)рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЛ рдмреБрдирд┐рдпрд╛рджреА рд╕рдВрдХреЗрддрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирдП рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдмрд┐рдВрджреБ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЪрд▓рддреЗ рдФрд╕рдд рдФрд░ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди рдХреЛ 2 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдмреЛрд▓рд┐рдВрдЧрд░ рдмреИрдВрдб рдХрд╛ рдКрдкрд░реА рднрд╛рдЧ рдорд┐рд▓рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рд╣рдо рдирд┐рдЪрд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдШрдЯрд╛рддреЗ рд╣реИрдВред

рдХреЛрдб рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛
function bb($close, window, mult) { let middle = sma($close, window); let upper = pointwise((a, b) => a + b * mult, middle, stdev($close, window)); let lower = pointwise((a, b) => a - b * mult, middle, stdev($close, window)); return { lower : lower, upper : upper}; }
рдЬрд╣рд╛рдБ рдкреЙрдЗрдВрдЯрд╡рд╛рдЗрдЬрд╝ рдлрдВрдХреНрд╢рди рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рджрд┐рдП рдЧрдП рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛ рд╕рд░рдгрд┐рдпреЛрдВ рд╕реЗ рдПрдХ рддрддреНрд╡ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред
рдмреЛрд▓рд┐рдВрдЧрд░ рдмреИрдВрдб рдПрдХ рдмрдбрд╝реЗ рдореВрд▓реНрдп рдЖрдВрджреЛрд▓рди рд╕реЗ рдкрд╣рд▓реЗ рд▓реБрд▓реНрд▓ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдЪрд╛рд░реНрдЯ рдкрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рд╕реЗ рд╡реЛрд▓реНрдЯреИрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди рдХреЛ рдЙрд╕реА рдЪрд╛рд░реНрдЯ рдкрд░ рдУрд╡рд░рд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЪрд▓рддреА рдФрд╕рдд рд╕реЗ рд╕реНрдердЧрд┐рдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рдЯрд┐рдкреНрдкрдгреАрдЗрд╕ рд╕реВрдЪрдХ рдореЗрдВ рдПрдХ рдЦрд╛рдореА рд╣реИ - рдпрд╣ рдШрд╛рддреАрдп рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрднреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рди рднреВрд▓реЗрдВ рдХрд┐ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди рдХреЛ рднреА рддреЗрдЬреА рд╕реЗ рд╕рдВрддреБрд▓рд┐рдд рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдШрд╛рддреАрдп рдореВрд╡рд┐рдВрдЧ рдПрд╡рд░реЗрдЬ (рдИрдПрдордП)рдЪрд▓рддреА рдФрд╕рдд рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдХреИрд╕реЗ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЗрд╕рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп, рдПрди рдЕрдВрддрд┐рдо рд╕рдорд╛рдкрди рдХреАрдорддреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреБрдЫ рд╡рдЬрди рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдкреБрд░рд╛рдиреА рдХреАрдорддреЛрдВ рдХреЗ рдпреЛрдЧрджрд╛рди рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдо рдПрдХ рднрд╛рд░рд┐рдд рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕реВрддреНрд░ рдкрд░ рдЖрддреЗ рд╣реИрдВред
\ bar x = \ frac {\ sum x_i} {N} = \ frac {\ _ 1 \ _ cdot x_i} {\ sum 1} \ quad \ Rightarrow \ quad \ widetilde {x} = \ _rac {\ sum x_i w_i } {\ _ w_i}
\ bar x = \ frac {\ sum x_i} {N} = \ frac {\ _ 1 \ _ cdot x_i} {\ sum 1} \ quad \ Rightarrow \ quad \ widetilde {x} = \ _rac {\ sum x_i w_i } {\ _ w_i}
рдЕрдЧрд░
wi=qi рдФрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдЪреБрдиреЗрдВ
q рдПрдХ рд╕реЗ рдХрдо рд╣реИ, рддреЛ рд╣рдо рдПрдХ рдЕрд╕реАрдо рд░реВрдк рд╕реЗ рдХрдо рд╡рдЬрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдирд╡реАрдирддрдо рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХреАрдорддреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдВред

рдпрджрд┐
рдкреВрдВрдЫ рдпреЛрдЧрджрд╛рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЧрдгрдирд╛ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдкреВрд░реА рд▓рдВрдмрд╛рдИ рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдХреЗ, рдЖрдк рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкрд░рд┐рднрд╛рд╖рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
1 + q + q ^ 2 + ... + q ^ n \ underset {n \ to \ infty} {\ underset {q <0} {\ approx}} \ frac {1} {1-q} \\ \ mathrm {EMA} _ {curr} = \ frac {\ sum x_i q ^ i} {\ sum q ^ i} \ рд▓рдЧрднрдЧ (1-q) \ sum x_i q ^ i \\ \ mathrm [EMA} _ {рдЕрдЧрд▓рд╛ } = \ frac {x_ {рдЕрдЧрд▓рд╛} + q \ cdot \ sum x_i q ^ i} {1 + q \ cdot \ sum q ^ i} = = (1-q) \ cdot \ left [x_ {рдЕрдЧрд▓рд╛} + \ _o cdot \ sum x_i q ^ i \ right] \\ \ mathrm {EMA} _ {рдЕрдЧрд▓рд╛} = (1-q) \ cdot x_ {рдЕрдЧрд▓рд╛} + q \ cdot \ mathrm {EMA} _ [рд╡рдХреНрд░}
рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдХреБрдЫ рдореВрд▓реНрдп рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдЕрд▓реНрдлрд╛=1тИТq рдПрдХ рдЪреМрд░рд╕рд╛рдИ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВред
рдпрд╣ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд▓реЗрддреЗ рд╣реИрдВ
рдЕрд▓реНрдлрд╛=2/(рдПрди+1) рдКрдкрд░ рдИрдПрдордП рдФрд░ рдПрд╕рдПрдордП рднрд╛рд░ рдХреЗ рджреНрд░рд╡реНрдпрдорд╛рди рдХрд╛ рдХреЗрдВрджреНрд░ рд╕рдорд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдб рдореЗрдВ, рдпрд╣ рд╕рдм рдмрд╣реБрдд рдЖрд╕рд╛рди рд▓рдЧ рд░рд╣рд╛ рд╣реИред
function ema($close, window, weight = null) { weight = weight ? weight : 2 / (window + 1); let ema = [ mean($close.slice(0, window)) ]; for (let i = 1; i < $close.length; i++) { ema.push($close[i] * weight + ema[i - 1] * (1 - weight)); }; return ema; }
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдПрдХ рд╣реА рдЪрд▓рддреА рдФрд╕рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИред

рдЙрдкрдпреЛрдЧ рдХреА рдХреНрд╖рдорддрд╛ рдЖрдкрдХреЗ рдЕрдиреБрднрд╡ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдЗрд╕ рд╕рд╛рдЗрдЯ рдкрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЪреБрдиреЗ рдЧрдП рд╣реИрдВред
рдореВрд╡рд┐рдВрдЧ рдПрд╡рд░реЗрдЬ рдХрдиреНрд╡рд░реНрдЬреЗрдВрд╕ / рдбрд╛рдЗрд╡рд░реНрдЬреЗрдВрд╕ (рдПрдордПрд╕реАрдбреА)1979 рдореЗрдВ рдЬреЗрд░рд╛рд▓реНрдб рдЕрдкреЗрд▓ рдПрдХ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдореВрд▓реНрдп рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдкреНрд░рднрд╛рд╡реА рджреЛрд▓рдХ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ред рдпрд╣ рджреЛ рдИрдПрдордП рдЯреНрд░реЗрдВрдб рдЗрдВрдбрд┐рдХреЗрдЯрд░реНрд╕ рдХреЛ рдПрдХ рдкрд▓ рдЗрдВрдбрд┐рдХреЗрдЯрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рджреЛ рджреБрдирд┐рдпрд╛рдУрдВ рд╕реЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рд▓реЗрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рд╡рд╣, рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдмреЛрд▓рддрд╛ рд╣реИ, рдПрдХ рд╡реНрдпреБрддреНрдкрдиреНрди рдкрд╛рддрд╛ рд╣реИред рдпрд╣ рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдФрд░ рдПрдХ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдВрдбреЛ рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдУрд╡рд░рд▓реЗ рдирд╣реАрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрдХреЗрддрдХ рд╣реИрдВ рдЬреЛ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдВрдбреЛ рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдЕрдиреНрдп рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЧрдгрдирд╛ рд╕реВрддреНрд░ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдПрдХ рдЫреЛрдЯреА рдФрд░ рдЫреЛрдЯреА рдЦрд┐рдбрд╝рдХреА рдХреЗ рд╕рд╛рде рджреЛ рдИрдПрдордП рд▓реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 26 рдФрд░ 12 рдЗрдХрд╛рдЗрдпрд╛рдВ, рдФрд░ рдШрдЯрд╛рдпрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд▓рд╛рдЗрди рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдХреЗрддрдХ рд╣реЛрдЧреАред 3 рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рдПрдХ рдЪрд░рдг рдХреЗ рд╕рд╛рде рдЗрд╕ рдЕрдВрддрд░ рд╕реЗ рдПрдХ рдФрд░ рдИрдПрдордП рд▓реЗрддреЗ рд╣реБрдП, рд╣рдо рдПрдХ рд╕рд┐рдЧреНрдирд▓ рд▓рд╛рдЗрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдмрд╛рдж рдореЗрдВ рдЧреЗрд░рд╛рд▓реНрдб рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХреА рдЧрдгрдирд╛ рджреЛ рдкрд┐рдЫрд▓реЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рднрд╛рд░рд┐рдд рдФрд╕рдд рд╡реНрдпреБрддреНрдкрдиреНрди рд╣реИред
function macd($close, wshort, wlong, wsig) { let line = pointwise((a, b) => a - b, ema($close, wshort), ema($close, wlong)); let signal = ema(line, wsig); let hist = pointwise((a, b) => a - b, line, signal); return { line : line, signal : signal, hist : hist }; }
рд╕рдВрдХреЗрддрдХ рдкрд░реАрдХреНрд╖рдг, рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдорд╛рдирдХ рддреНрд░реБрдЯрд┐рд╕рдВрдХреЗрддрдХреЛрдВ рдХреЗ рдЕрд░реНрде рдХреЗ рд╕рд╛рде рд╕рдЯреАрдХ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдЖрдк рдЧреБрдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЕрдкрдиреА рдЧрдгрдирд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдк рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдорд╛рдзреНрдп рд╡рд░реНрдЧ рддреНрд░реБрдЯрд┐, рдЬрд┐рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ
mathrmNRMSE= leftред sqrt frac sum( hatxiтИТxi)2N Middle/( maxxiтИТ minxi) $
рдЫреЛрдЯреЗ рдФрд░ рдмрдбрд╝реЗ рджреЛрдиреЛрдВ рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЙрд▓рд░ рдореЗрдВ рдмрд┐рдЯрдХреЙрдЗрди рдХреА рдХреАрдордд 20,000 рдбреЙрд▓рд░ рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ $ 10 рдХрд╛ рдЕрдВрддрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдПрдХ altcoin рдХреА рдЧрдгрдирд╛ рдХрдИ рд╕рд╛рддреЛрд╢реА рдореЗрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
function nrmse(f, g) { let sqrDiff = pointwise((a, b) => (a - b) * (a - b), f, g); return Math.sqrt(mean(sqrDiff)) / (Math.max(...f) - Math.min(...f)); }
рдирд┐рд╖реНрдХрд░реНрд╖рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдЖрдк рдмреБрдирд┐рдпрд╛рджреА рд╕рдВрдХреЗрддрдХреЛрдВ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдЙрдирдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрджрд░реНрд╢ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ рдЬрд╝рд┐рдЧрдЬрд╝реИрдЧ рд╕рдВрдХреЗрддрдХ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдЬреЛ рдХрд┐ рд╡реНрдпрд╛рдкрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд┐рдХреНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрд╣ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡реНрдпрд╛рдкрд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЕрд▓рдЧ рд╕рдВрдХреЗрддрдХ рдЪреБрдирдиреЗ рдФрд░ рдЙрдирдХреЗ рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рд╕рдордп рдХреЗ рд╕рд╛рде рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рдкреИрд░рд╛рдореАрдЯрд░ рдмрджрд▓рддреЗ рд╣реИрдВред
рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛1.
рд╕реНрдЯреЙрдХрдЪрд╛рд░реНрдЯреНрд╕ - рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рд╕реВрдЪреА
2.
рдХреНрд░рд┐рдкреНрдЯреЛрд╡реИрдЪ - рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЯреНрдпреВрди рдХрд┐рдП рдЧрдП рд╕рдВрдХреЗрддрдХ рдкреИрд░рд╛рдореАрдЯрд░
3.
рдЧрд┐рддреБрдм - рд╕реНрд░реЛрдд рдХреЛрдб