Избранное трейдера Ajax
Доля вложений нерезидентов на счетах иностранных депозитариев в Национальном расчетном депозитарии (НРД) в общем объеме выпусков облигаций федерального займа (ОФЗ) 18-22 мая 2020 года:
| Код | 18 мая | 19 мая | 20 мая | 21 мая | 22 мая |
| SU24020RMFS8 | 0,00% | 0,00% | 0,00% | 0,00% | 0,00% |
| SU24021RMFS6 | 61,91% | 61,55% | 61,55% | 61,55% | 61,55% |
| SU25083RMFS5 | 8,32% | 8,38% | 8,43% | 8,43% | 8,44% |
| SU25084RMFS3 | 13,02% | 13,02% | 13,02% | 13,05% | 13,05% |
| SU26205RMFS3 | 14,27% | 14,27% | 14,33% | 14,32% | 14,37% |
| SU26207RMFS9 | 62,10% | 61,86% | 63,65% | 63,45% | 64,19% |
| SU26209RMFS5 | 27,24% | 27,24% | 27,22% | 27,26% | 27,26% |
| SU26211RMFS1 | 34,89% | 35,06% | 35,06% | 34,87% | 34,34% |
| SU26212RMFS9 | 70,70% | 70,76% | 70,64% | 69,83% | 69,84% |
| SU26214RMFS5 | 4,43% |
Эффективность математики только в поиске закономерности рыночного движения — паттернов которые способны реально материализовать вашу прибыль.

--
-- Выполнение действий с массивами.
--
local pairs = pairs
local type = type
module(...)
--- Создать копию массива (таблицы)
-- @return копию массива (таблицы)
function copy(array)
local copy_array = {}
if type(array) ~= "table" then
return array
end
for k, v in pairs(array) do
if type(v) == "table" then
copy_array[k] = copy(v)
else
copy_array[k] = v
end
end
return copy_array
end
--- Узнать, начинается ли индексация в массиве с нуля или с единицы.
-- @return 0 или 1
function base(array)
if array[0] ~= nil then
return 0
else
return 1
end
end
--- Вычислить число элементов в массиве.
-- @return число элементов в массиве
function size(array)
local n = 0
for _, _ in pairs(array) do
n = n + 1
end
return n
end
--- Проверить пустой или нет массив.
-- @return true/false
function isEmpty(array)
for _, _ in pairs(array) do
return false
end
return true
end
--- Получить первый индекс массива, где ничего не записано. Поиск начинается с 1.
-- @return первый индекс массива, где ничего не записано
function firstEmptyIndex(array)
local i = 1
while array[i] ~= nil do
i = i + 1
end
return i
end


Тем, кто не читал предыдущий топик этой темы, рекомендую для начала ознакомиться с ним [1].
В комментариях к предыдущему топику меня критиковали за неоптимальность кода Python. Однако, текст читают люди с совершенно разной подготовкой — от почти не знающих Python или знающих другие языки программирования, до продвинутых пользователей. Последние легко могут обнаружить неоптимальность кода и заменить его своим. Тем не менее, код должен быть доступен и новичкам, возможно не обладающим знанием пакетов и продвинутых методов. Поэтому, в коде я буду, по возможности, использовать только базовые конструкции Python, не требующие глубоких знаний, и которые могут легко читаться людьми, программирующими на других языках. Вместе с тем, по мере изложения, без фанатизма, буду вводить и новые элементы Python.
Если вы хотите как-то улучшить или оптимизировать код, приводите его в комментариях — это только расширит и улучшит изложенный материал.
Ну, а сейчас мы займемся разработкой и тестированием индикаторов. Для начала нам нужна простейшая стратегия с использованием МА — его и построим. Самой лучшей по характеристикам МА является ЕМА. Формула ЕМА: