Yury Kirillov
Yury Kirillov
  • Information
10+ years
experience
0
products
0
demo versions
0
jobs
0
signals
0
subscribers
Internet money miner
Yury Kirillov
Added topic How do I make the output on a chart in monospaced font?
Comment() - displays information in proportional font on the chart, but has difficulties with formatting tables, for example. How can I display the information on the chart in monospaced font using Comment()
shared author's Roman Korotchenko article
Evaluating the ability of Fractal index and Hurst exponent to predict financial time series
Evaluating the ability of Fractal index and Hurst exponent to predict financial time series

Studies related to search for the fractal behavior of financial data suggest that behind the seemingly chaotic behavior of economic time series there are hidden stable mechanisms of participants' collective behavior. These mechanisms can lead to the emergence of price dynamics on the exchange, which can define and describe specific properties of price series. When applied to trading, one could benefit from the indicators which can efficiently and reliably estimate the fractal parameters in the scale and time frame, which are relevant in practice.

shared author's Maxim Dmitrievsky article
Grokking market "memory" through differentiation and entropy analysis
Grokking market "memory" through differentiation and entropy analysis

The scope of use of fractional differentiation is wide enough. For example, a differentiated series is usually input into machine learning algorithms. The problem is that it is necessary to display new data in accordance with the available history, which the machine learning model can recognize. In this article we will consider an original approach to time series differentiation. The article additionally contains an example of a self optimizing trading system based on a received differentiated series.

Automated-Trading
Automated-Trading
Индикаторы: Ping
Ping : Реал-тайм индикатор лага котировок внутри самого терминала. Для торговли важным параметром является актуальность текущей цены. На него влияет множество факторов, самый популярный из которых - сетевой пинг между терминалом и торговым сервером
shared author's BPASoftware Thai Co. Ltd article
Automated Optimization of an EA for MetaTrader 5
Automated Optimization of an EA for MetaTrader 5

This article describes the implementation of a self-optimization mechanism under MetaTrader 5.

Yury Kirillov
Yury Kirillov
https://smart-lab.ru/blog/533624.php
Об оценивании волатильностей и ковариаций
14 апреля 2019, 22:56
Eugene Logunov
Yury Kirillov
Yury Kirillov
https://smart-lab.ru/blog/533447.php
Куда пойти работать кванту
12 апреля 2019, 20:38
Eugene Logunov
Если вы хорошо знаете математику, умеете программировать и вам интересна работа в качестве Quantitative Researcher / Quantitative Trader / Quantitative Portfolio Manager / etc. — то обратите внимание на этот список из 69 компаний.

Одни занимаются высокочастотной торговлей, маркетмейкингом и арбитражем. Другие — управляют активами с использованием количественных методов. Третьи — занимаются оптимальным исполнением ордеров. Самая малость — разрабатывают low-latency инстраструктуру и предоставляют её своим клиентам. Примерно у десяти, кажется, есть офисы в России. Остальные — в Нью-Йорке, Чикаго, Лондоне, Берлине и т.д.

Компании приведены в порядке максимально близком к алфавитному. Все сайты работают, один-два могут не открываться из России, но обязательно откроются через прокси.

3Red Trading ( www.3redpartners.com/ )
ADG Capital Management ( www.adgcapitalmanagement.com/ )
AIM Tech (бывший AIM Fund) ( www.aimtech.com/ )
Akuna Capital ( akunacapital.com/ )
Algo Capital (бывший Nord Capital) ( algocapital.ru/ )
Allston Trading ( www.allstontrading.com/ )
AQR Capital Management ( www.aqr.com/ )
Aspect Capital Ltd ( www.aspectcapital.com/ )
Belvedere Trading LLC ( www.belvederetrading.com/ )
BlackEdge Capital ( www.blackedge.com/ )
Bluefin Trading LLC ( www.bluefintrading.com/ )
Bluefire Capital ( www.bluefirecapital.com/ )
Chicago Trading Company / CTC ( www.chicagotrading.com/ )
Chopper Trading ( www.choppertrading.com/ )
Circulum Vite LLC ( www.circulumvite.com/ )
Citadel LLC ( www.citadel.com/ )
Consolidated Trading LLC ( www.consolidatedtrading.com/ )
Cutler Group LP ( www.cutlergrouplp.com/ )
D. E. Shaw Group ( www.deshaw.com/ )
DRW Trading Group (приобрели Vigilant Global) ( drw.com/ )
Eclipse Trading ( www.eclipsetrading.com/ )
exp(capital) ( expcapital.com/ )
Five Rings Capital ( fiverings.com/ )
Flow Traders ( www.flowtraders.com/ )
Geneva Trading ( www.geneva-trading.com/ )
GSA Capital Partners LLP ( www.gsacapital.com/ )
Headlands Technologies LLC ( www.headlandstech.com/ )
Hehmeyer Trading Group ( www.hehmeyer.com/ )
Hudson River Trading / HRT (приобрели Sun Trading LLC) ( www.hudson-trading.com/ )
IMC Trading B.V. ( www.imc.com/us/ )
Informed Portfolio Management / IPM ( www.ipm.se/ )
Jane Street ( www.janestreet.com/ )
Jump Trading ( www.jumptrading.com/ )
Liquid Capital Group ( www.liquidcapital.com/ )
Mosaic Finance Bienvenue ( www.mosaicfinance.fr/en/market-making )
Optiver ( www.optiver.com/eu/en/ )
PDT Partners ( www.pdtpartners.com/ )
PEAK6 Investments LLC ( www.peak6.com/ )
Profluent Trading ( www.profluenttrading.com/ )
QBF (ex- QB Finance) ( qbfin.ru/ )
Quantitative Brokers ( quantitativebrokers.com/ )
QuantPort Asset Management (подразделение Jefferies Investment Advisers) ( www.quantport-am.com/about-us/ )
QuantRes ( quantres.com/ )
Quantstellation ( quantstellation.com/ )
Quantum Brains ( quantumbrains.com/ )
Renaissance Technologies LLC ( www.rentec.com/ )
Research Affiliates ( www.researchaffiliates.com/ )
REVO Capital LLC ( http://www.revocm.com/ )
Ronin Capital ( www.ronin-capital.com/ )
Simplex Investments ( www.simplexinvestments.com/ )
Susquehanna International Group / SIG ( sig.com/ )
swissQuant Group AG ( www.swissquant.com/ )
Teza Technologies ( www.teza.com/ )
Thesys Technologies, LLC / Tradeworx ( www.thesystech.com/index.html )
ThunderBid ( www.thunder.bid/ )
Tibra Capital ( www.tibra.com/ )
Tower Research Capital / Spire Europe Limited / Latour Trading LLC ( www.tower-research.com/ )
Tradebot Systems ( www.tradebot.com/ )
TradeLink Holdings LLC ( www.tradelinkllc.com/ )
TransMarket Group LLC / TMG (бывший Aardvark Financial) ( www.transmarketgroup.com/ )
TRZ Funds ( www.trzfunds.com/ )
Two Sigma Investments ( www.twosigma.com/ )
Valkyrie Trading ( www.valkyrietrading.com/ )
Virtu Financial (приобрели KCG Holdings, бывшие Getco & Knight Capital Group) ( www.virtu.com/ )
Volant Trading ( volanttrading.com/ )
Winton Capital Management ( www.winton.com/ )
Wolverine Trading ( www.wolve.com/ )
WorldQuant / Millennium Management ( www.worldquant.com/home/ www.mlp.com/home/ )
Wunder Fund ( wunderfund.io/ )

P.S.
1) Если я пропустил какую-то интересную компанию — обязательно пришлите мне название!
2) Банков в списке нет. Почему? Я так захотел.
3) Нет, мне не платят за рекламу :)
Yury Kirillov
Yury Kirillov
Книги и образовательные ресурсы по алгоритмической торговле
Алгоритмическая торговля — интересная область, которая позволяет ИТ-специалистам применить свои технические знания на фондовом рынке и извлечь из этого ту или иную выгоду. В нашем блоге мы неоднократно рассматривали различные темы, связанные с созданием торговых роботов, но недостаточно внимания уделяли теоретическим вопросам, с которыми сталкиваются начинающие трейдеры.

В нашем сегодняшнем материале — подборка книг, которые помогут лучше подготовиться к началу работы на фондовом рынке и написанию механических торговых систем. Для достижения наибольшей эффективности материала, мы приводим советы экспертов, которые занимаются алгоритмической торговлей на российском и зарубежных фондовых рынках.
https://habr.com/ru/company/iticapital/blog/257971/
Konstantin Zharitov
Konstantin Zharitov 2019.04.06
Протестировал больше 200 советников и могу сказать, что основная проблема как раз в том, что разработчики в первую очередь программисты, а не трейдеры. По работе 99,9% советников видно, что создатели не понимают куда, как и почему движется цена, слишком сильно полагаются на индикаторы, фиксированные значения TP и SL, мало внимания уделяют мани-менеджменту и сопровождению позиций.
По-хорошему, если вы программист, хорошо владеете программированием и хотите написать робота, то берёте в команду опытного грамотного трейдера и по его чётким указаниям пишете робота, а не пытаетесь в попыхах изучить трейдинг и что-то там сварганить на основе полутора книжек и трёх статей из интернета.
Vasiliy Kolesov
Vasiliy Kolesov 2019.04.06
Согласен полностью с Konstantinum. У иных разработчиков по 10-15 советников в продаже, а мониторингов работы этих советников нет. Спрашивается, зачем нужен советник, если не им торговать?
Yury Kirillov
Yury Kirillov
Индикатор ожидаемого движения для опционной торговли (Часть 2 устройство индикатора)
05 апреля 2019, 11:25 FZF
В первой части мы рассмотрели «теорему о средней волатильности» где, обозначили такое свойство:волатильности могут на разных таймфреймах значительно отличаться друг от друга. Но они всегда будут со временем сходится к одному значению.

Вот, на этом свойстве и будет построен индикатор. Для индикатора нам нужны волатильности на различных таймфреймах. В качестве индикатора волатильности берутся два стандартных индикатора, но которые по сущности показывают одно и тоже.

Price Channel (PC) или ценовой канал. Индикатор представляет из себя две линии, которые ограничивают канал колебаний цены. Верхняя граница канала обозначает уровень локального максимума за прошедшие N периодов, а нижняя граница – уровень локального минимума за тот же промежуток времени. Таким образом, цена ограничивается максимальными точками колебаний – экстремумами за N периодов.
Индикатор ожидаемого движения для опционной торговли (Часть 2 устройство индикатора)

Средний Истинный Диапазон (Average True Range, ATR) . Если кратко, то это усредненное значение длин свечей за определенный период. По сути, это Price Channel одной свечи, усредненный за N периодов. (В моем случае он считается через простое усреднение).

Задача индикатора ожидаемого движения заключается в том, чтобы измерить волатильность на разных «таймфреймах», сравнить их и выявить значительные расхождения между ними. Для этого используются следующие составляющие:

Price Channel N периодов (РК1), как показатель волатильности за N периодов ;

Price Channel 2*N периодов (РК2), как показатель волатильности за 2*N периодов ;

Price Channel 4*N периодов (РК4), как показатель волатильности за 4*N периодов ;

ATR N периодов, как базовое значение с условным N0=1.

Получив эти значения, вычисляем отношения ATR к РК масштабе ATR:

L1=ATR/PK1*КОРЕНЬ(N); L2=ATR/PK2*КОРЕНЬ(2*N); L3=ATR/PK4*КОРЕНЬ(4*N);

L1 – это расхождение в волатильности с базовой величиной самого короткого периода. На графике эта величина будет присутствовать в виде зеленой линии. Ее значение выше единицы показывает, что последние N периодов рынок стоял в слишком узком диапазоне цен.

Далее вычисляется среднее (L1+L2+L3)/3. Эта величина отражает усредненное отклонение волатильности с базовой величиной самого короткого периода. На графике эта величина будет присутствовать в виде синей линии. Ее значение выше единицы показывает, что последние 4*N периодов рынок стоял в слишком узком диапазоне цен. Этот показатель говорит, что возможно, рынку пора делать движение и выравнивать значения волатильностей. Для фильтрации шумов есть пороговое значение F (filter): сигнал принимается во внимание когда (L1+L2+L3)/3 > F

И основная сигнальная линия ( на графике отображается красным) вычисляется как L1*(L1+L2+L3)/3 при условии что (L1+L2+L3)/3 > F. Если условие не выполняется, значение равно(1).

Значение сигнальной линии выше единицы показывает, что назревает движение для выравнивания значений волатильности.

На каком таймфрейме и с каким периодом использовать этот индикатор, зависит от того, какой величины движение вы хотите поймать. Показания индикатора можно (нужно) использовать, когда вы собираетесь продавать опционы. Поскольку он предупреждает о возможном движении.
Индикатор ожидаемого движения для опционной торговли (Часть 2 устройство индикатора)

Далее идет код индикатора. Его нужно скопировать в текстовый файл, присвоить ему расширение .lua и положить его в каталог Квика в папку LuaIndicators

По умолчанию (period ) N=14; (filter) F=1,2 ; индикатор должен появиться в списке индикаторов под именем "FZF_dVOL2". Свои индикаторы я начинаю с FZF чтобы потом их легче было искать в общем списке и они стоят в одной кучке.

Settings=
{
Name = "FZF_dVOL2",
period = 14,
filter = 1.2,
line =
{
{
Name = "FZF_L1",
Color = RGB(0, 255, 0),
Type = TYPE_LINE,
Width = 1
},
{
Name = "FZF_L2",
Color = RGB(0, 255, 255),
Type = TYPE_LINE,
Width = 1
},
{
Name = "FZF_L3",
Color = RGB(255, 0, 0),
Type = TYPE_LINE,
Width = 2
}
}
}
function Init()
return 3
end

function OnCalculate(index)
if index < (Settings.period*4+1) then
return nil
else
local sum = 0
local ATR=0
for i = index-Settings.period+1, index do
sum = sum + math.max(math.abs(C(i-1) - L(i)),math.abs(H(i) - C(i-1)),(H(i) - L(i)))
end

ATR=sum/Settings.period --посчитали АТР

-- прайс канал с периодом 1
MAX1 = H(index)
MIN1 = L(index)
for i = 0, (Settings.period-1) do
if MAX1 L(index-i) then MIN1 = L(index-i) end
end
-- прайс канал с периодом *2
MAX2 = H(index)
MIN2 = L(index)
for i = 0, (Settings.period*2-1) do
if MAX2 L(index-i) then MIN2 = L(index-i) end
end
-- прайс канал с периодом *4
MAX4 = H(index)
MIN4 = L(index)
for i = 0, (Settings.period*4-1) do
if MAX4 L(index-i) then MIN4 = L(index-i) end
end
local L1= 0
local L2= 0
local L3= 0

L1=ATR/(MAX1 - MIN1)*math.sqrt(Settings.period)
L2=ATR/(MAX2 - MIN2)*math.sqrt(Settings.period*2)
L3=ATR/(MAX4 - MIN4)*math.sqrt(Settings.period*4)

local LL1= 0
local LL2= 0
local LL3= 0

LL1 = L1 --короткий канал
LL2 = (L1+L2+L3)/3 -- Среднее
if(LL2 < Settings.filter) then
LL3=1
else
LL3 = L1*(L1+L2+L3)/3
end

return LL1, LL2 , LL3

end
end
Yury Kirillov
Yury Kirillov
Индикатор ожидаемого движения для опционной торговли (Часть 1 теория)
04 апреля 2019, 16:12
https://smart-lab.ru/blog/531816.php
Хочу представить вам индикатор для Квика, который дает сигнал о возможном боковом движении базового актива. Индикатор построен на анализе структуры волатильности базового актива.

Для того, чтобы понять как, где и с какими параметрами применять этот индикатор, нужно понять на чем он основан и в каких ситуациях может иметь прогнозную ценность. Поэтому начнем с теории.

Кто пытался самостоятельно посчитать волатильность базового актива в годовом выражении, то знает, что надо взять данные по какому-нибудь таймфрейму за статистически значимый период и посчитать по нему волатильность. Потом, чтобы привести значение волатильности к годовому значению, нужно полученное значение умножить на корень из годового количества свечей таймфрейма взятого для расчета. В этом расчете могут применяться всякие коэффициенты, чтобы учесть выходные и праздники, либо брать для расчета только количество рабочих дней, но суть не в этом.

Если мы хотим посчитать волатильность на длительном периоде исходя из данных более мелких периодов, то волатильность посчитанная на мелких периодах нужно умножить на корень из числа мелких периодов входящих в большой период.
Индикатор ожидаемого движения для опционной торговли (Часть 1 теория)

То есть, мы можем рассчитывать разные волатильности разных периодов друг из друга.

Сформулируем некое следствие из вышеуказанной формулы.

Теорема о средней волатильности

Волатильности, посчитанные с использованием различных таймфреймов (различного разбиения на временные промежутки), стремятся к одному и тому же значению.

Как бы доказательство:

Если волатильность крупного таймфрейма больше волатильности мелкого таймфрейма, то существует такой устойчивый прибыльный алгоритм торговли где, позиция на пробой торгового канала в большинстве случаев приносит прибыль.

Если волатильность крупного таймфрейма меньше волатильности мелкого таймфрейма, то существует такой устойчивый прибыльный алгоритм торговли где, позиция во внутрь торгового канала в большинстве случаев приносит прибыль.

Поскольку мы не наблюдаем толпы зарабатывающих трейдеров ни на одной из этих стратегий торговли, это означает, что волатильности на разных таймфреймах за длительный период времени равны между собой.



Ключевая фраза : за длительный период времени. Это означает, что в каждой отдельной ситуации волатильности могут на разных таймфреймах значительно отличаться друг от друга. Но они всегда будут со временем сходится к одному и тому значению. То есть разница волатильностей, есть график колеблющийся вокруг средней линии.

На этом свойстве и основан индикатор ожидаемого движения. Его подробное описание и код будут в следующей части. А пока, пусть те, кто только начинает работу с опционами, переварят полученную информацию.
Yury Kirillov
Yury Kirillov
Торгуем в перевёрнутом стакане!
Yury Kirillov
Yury Kirillov
ИНТЕРВЬЮ С МАТЕМАТИКОМ, ВЗЛОМАВШИМ УОЛЛ СТРИТ - Джим Саймонс - TED на русском
https://www.youtube.com/watch?v=sYbN-PdXD5I
Yury Kirillov
Yury Kirillov
Про математически оптимальное плечо.
13 декабря 2018, 10:07 _sk_
https://smart-lab.ru/blog/510509.php

Решил написать пост для тех, кто хотел бы разобраться с математикой управления капиталом и расчётом оптимального плеча. Для лучшего понимания начнём с простого примера, потом обобщим его и выведем некоторую формулу. При этом понадобятся математические знания конца средней школы.

Допустим, мы придумали торговую систему, которая даёт следующие прибыли/убытки с равными шансами: -10%, +20%, -5% и +5%. Если сделать 4 трейда по этой системе, вкладывая весь имеющийся в наличии капитал, и каждый из исходов произойдёт ровно по одному разу, то капитал C превратится в
C*(1-0.1)*(1+0.2)*(1-0.05)*(1+0.05) = C*1.0773,
т.е. вырастет на 7.73%.

Пусть у нас есть возможность получить бесплатное плечо и вкладывать удвоенный капитал, тогда по сравнению с исходным капиталом прибыли/убытки составят уже -20%, +40%, -10% и +10%. В этом случае исходный капитал после 4-х трейдов превратится в
C*(1-0.2)*(1+0.4)*(1-0.1)*(1+0.1) = C*1.1088,
т.е. вырастет на 10.88%, что выгоднее торговли по номиналу.

Если ещё увеличить плечо, скажем, вкладывая упятерённый капитал, то прибыли/убытки на исходный капитал будут -50%, +100%, -25% и +25%, а капитал после 4-х трейдов превратится в
C*(1-0.5)*(1+1)*(1-0.25)*(1+0.25) = C*0.9375,
т.е. капитал не вырос, а уменьшился на 6.25%. Что называется, перебрали с плечом.

Получается, что есть оптимальный коэффициент плеча k, для которого торговля будет самой выгодной. Это k можно подобрать, чтобы произведение
(1-k*0.1)*(1+k*0.2)*(1-k*0.05)*(1+k*0.05)
стало самым большим.

Оставим пока подбор k, и задумаемся, почему рассмотрены только 4 трейда, когда на практике их много. Дело в том, что если совершается большое число N трейдов, то примерно N/4 из них дадут -10%, примерно N/4 дадут +20% и т.д. Пренебрежём этим «примерно» (всё равно из-за случайности по всякому может быть), и будем считать, что точно по N/4 трейдов будет у каждого исхода. Тогда надо максимизировать
(1-k*0.1)^(N/4) * (1+k*0.2)^(N/4) * (1-k*0.05)^(N/4) * (1+k*0.05)^(N/4),
где знак ^ означает возведение в степень.

Мы можем убрать N из степени (поскольку большее положительное число при возведении в некоторую степень даёт больший результат, чем меньшее положительно число при возведении в ту же степень) и максимизировать выражение
(1-k*0.1)^(1/4) * (1+k*0.2)^(1/4) * (1-k*0.05)^(1/4) * (1+k*0.05)^(1/4).
Здесь показатели степеней 1/4 — не что иное, как вероятности каждого из исходов.

Теперь становится понятно, как обобщить исходный пример. Пусть есть трейды, которые случаются с вероятностями p1, ..., pn и дают прибыли/убытки x1, ..., xn. Для подбора оптимального плеча нужно найти такое k, что произведение
(1+k*x1)^p1 *… * (1+k*xn)^pn
будет максимально. Поскольку x и p — это некоторые известные числа, то произведение зависит только от k, т.е. является некоторой функцией f(k).

Я пропущу математические выкладки, поскольку:
1) кто знает, тот сообразит;
2) кто не знает, тот смотрит на итоговую приближённую формулу ниже;
3) кто хочет намёков, тот:
а) находит логарифм от произведения (его максимум достигается при том же k, что и у исходного произведения, а вычислять дальше будет проще),
б) вычисляет его производную и приравнивает к нулю (в точке максимума она нулевая);
в) решать полученное уравнение неудобно, поэтому заменить выражения вида 1/(1+k*x) по формуле геометрической прогрессии на 1-k*x+(k*x)^2 — … и пренебречь всеми членами, начиная с квадратов, после чего придти к уравнению на k, которое уже легко решить.

Итоговая приближённая формула имеет вид:
k = (p1*x1+...+pn*xn) / (p1*x1^2+...+pn*xn^2).

Замечания по поводу формулы понятны:
1) она приближённая, но можно подбирать точное значение k для максимума численно;
2) плечо не бесплатно, но это можно учесть отдельно;
3) в реальном трейдинге вероятности и прибыли/убытки либо неизвестны, либо могут меняться со временем;
4) случайность никуда не денется, может просто повезти/не повезти даже при оптимальных действиях.

В любом случае, лучше понимать, что происходит пусть в модельном примере и делать выводы уже применительно к трейдингу, чем вообще ничего не понимать.

Удачи в торговле!
Yury Kirillov
Yury Kirillov
Как вывести деньги с ИИС 29 ноября 2018, 12:14 invest-schet.ru
https://smart-lab.ru/blog/507792.php
shared author's Dmitriy Gizlyk article
Reversal patterns: Testing the Double top/bottom pattern
Reversal patterns: Testing the Double top/bottom pattern

Traders often look for trend reversal points since the price has the greatest potential for movement at the very beginning of a newly formed trend. Consequently, various reversal patterns are considered in the technical analysis. The Double top/bottom is one of the most well-known and frequently used ones. The article proposes the method of the pattern programmatic detection. It also tests the pattern's profitability on history data.

shared author's Serhii Shevchuk article
Using OpenCL to test candlestick patterns
Using OpenCL to test candlestick patterns

The article describes the algorithm for implementing the OpenCL candlestick patterns tester in the "1 minute OHLC" mode. We will also compare its speed with the built-in strategy tester launched in the fast and slow optimization modes.

shared author's Stanislav Korotky article
DIY multi-threaded asynchronous MQL5 WebRequest
DIY multi-threaded asynchronous MQL5 WebRequest

The article describes the library allowing you to increase the efficiency of working with HTTP requests in MQL5. Execution of WebRequest in non-blocking mode is implemented in additional threads that use auxiliary charts and Expert Advisors, exchanging custom events and reading shared resources. The source codes are applied as well.

Yury Kirillov
Yury Kirillov
Дружественные сигналы (советник LibreNetka):
Hail-fellow signals (Librenetka expert):
https://www.mql5.com/ru/signals/450729
https://www.mql5.com/ru/signals/472221
Nigel Davis
Nigel Davis 2018.11.21
Hello Yury. You might want to consider following me in order for us to grow your account
uickly and safely
Yury Kirillov
Yury Kirillov
О «теореме Ферма» теории вероятностей или о нормальности «бытия» (много буков)
16 октября 2018, 16:41 А. Г.
https://smart-lab.ru/blog/499678.php