# <Скрипты для TradingView>

Раздел: Ручные торговые стратегии и системы
Автор темы: FxMen
Создана: 2023-09-04 16:15
Ответов: 486 | Просмотров: 127615
Страница 21 из 25
Источник: https://forexsystemru.com/threads/91851/page-21

---

## jrockefeller — 2025-07-29 17:44

Версия 1 и версия 2 индикатороа ложатся друг на друга (не отличаются)

Вот же код стандартного подвального , совершенно небольшой ,с мтф внутри
Из него следует сделать канальный, единственно верный
Тогда я смогу вас рекомендовать

//@version=6
indicator("Williams Percent Range", shorttitle="Williams %R", format=format.price, precision=2, timeframe="", timeframe_gaps=true)
length = input(title="Length", defval=14)
src = input(close, "Source")
_pr(length) =>
    max = ta.highest(length)
    min = ta.lowest(length)
    100 * (src - max) / (max - min)
percentR = _pr(length)
obPlot = hline(-20, title="Upper Band", color=#787B86)
hline(-50, title="Middle Level", linestyle=hline.style_dotted, color=#787B86)
osPlot = hline(-80, title="Lower Band", color=#787B86)
fill(obPlot, osPlot, title="Background", color=color.rgb(126, 87, 194, 90))
plot(percentR, title="%R", color=#7E57C2)

## FxMen — 2025-08-01 19:50

> Цитата (jrockefeller):
> Версия 1 и версия 2 индикатороа ложатся друг на друга (не отличаются)
>
> Вот же код стандартного подвального , совершенно небольшой ,с мтф внутри
> Из него следует сделать канальный, единственно верный
> Тогда я смогу вас рекомендовать
>
>
> //@version=6
> indicator("Williams Percent Range", shorttitle="Williams %R", format=format.price, precision=2, timeframe="", timeframe_gaps=true)
> length = input(title="Length", defval=14)
> src = input(close, "Source")
> _pr(length) =>
>     max = ta.highest(length)
>     min = ta.lowest(length)
>     100 * (src - max) / (max - min)
> percentR = _pr(length)
> obPlot = hline(-20, title="Upper Band", color=#787B86)
> hline(-50, title="Middle Level", linestyle=hline.style_dotted, color=#787B86)
> osPlot = hline(-80, title="Lower Band", color=#787B86)
> fill(obPlot, osPlot, title="Background", color=color.rgb(126, 87, 194, 90))
> plot(percentR, title="%R", color=#7E57C2)

Вам и здесь никто ничего не хочет дать. )))

## jrockefeller — 2025-08-01 21:13

Зачастую не дотягивают до моего уровня

## FxMen — 2025-08-02 15:25



## FxMen — 2025-08-02 15:26



## FxMen — 2025-08-02 15:30



## FxMen — 2025-08-02 15:44



## jrockefeller — 2025-08-02 17:17

**Не работают LWMA линии можете найти причину?**

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at Mozilla Public License, version 2.0
// © ChartPrime
//@version=5
indicator("MA Multi-Timeframe ", overlay = true, max_bars_back = 4000, max_polylines_count = 100)

// --------------------------------------------------------------------------------------------------------------------}
// 𝙐𝙎𝙀𝙍 𝙄𝙉𝙋𝙐𝙏𝙎
// --------------------------------------------------------------------------------------------------------------------{
int   length = input.int(20, "Length", inline = "-1")
float source = input.source(close, "", inline = "-1")
string typeMA0 = input.string(title = "MA1 >>", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], inline ="0")
string typeMA1 = input.string(title = "MA2 >>", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], inline="1")
string typeMA2 = input.string(title = "MA3 >>", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], inline="2")
string typeMA3 = input.string(title = "MA4 >>", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], inline="3")
string ma_tf0 = input.timeframe("360", "",  inline="0")
string ma_tf1 = input.timeframe("D",   "",  inline="1")
string ma_tf2 = input.timeframe("W",   "",  inline="2")
string ma_tf3 = input.timeframe("M",   "",  inline="3")
string styleMA0 = input.string(title = "", defval = "Solid", options=["Solid", "Dotted", "Dashed"], inline="0")
string styleMA1 = input.string(title = "", defval = "Solid", options=["Solid", "Dotted", "Dashed"], inline="1")
string styleMA2 = input.string(title = "", defval = "Solid", options=["Solid", "Dotted", "Dashed"], inline="2")
string styleMA3 = input.string(title = "", defval = "Solid", options=["Solid", "Dotted", "Dashed"], inline="3")

color color0 = input.color(#1bc6dd, "",  inline="0")
color color1 = input.color(#1b8fdd, "",  inline="1")
color color2 = input.color(#6f1bdd, "",  inline="2")
color color3 = input.color(#dd1bc3, "",  inline="3")

// --------------------------------------------------------------------------------------------------------------------}
// 𝙄𝙉𝘿𝙄𝘾𝘼𝙏𝙊𝙍 𝘾𝘼𝙇𝘾𝙐𝙇𝘼𝙏𝙄𝙊𝙉𝙎
// --------------------------------------------------------------------------------------------------------------------{
request(tf, expression)=>
    request.security(syminfo.tickerid, tf, expression, lookahead = barmerge.lookahead_on)
var tbl = table.new(position.top_right, 10, 10,
                     bgcolor      = color.new(color.gray, 90),
                     frame_color  = color.gray,
                     frame_width  = 2,
                     border_color = color.new(color.gray, 80),
                     border_width = 1)
table_cell(row, txt, tf, trend, color)=>
    table.cell(tbl, 0, 0, "MA Type:", text_color = chart.fg_color)
    table.cell(tbl, 1, 0, "Timeframe:", text_color = chart.fg_color)
    table.cell(tbl, 2, 0, "Price:", text_color = chart.fg_color)
    table.cell(tbl, 0, row, "🞛 " + txt, text_color = color)
    table.cell(tbl, 1, row, tf, text_color = color)
    table.cell(tbl, 2, row, trend ? "⮙" : "⮛", text_color = trend ? color.lime : color.fuchsia, text_size = size.large)

ma(tf, color, type, extend, styleMA, cell)=>
    color color_ = color.new(color, 85)
    string style = switch styleMA
        "Solid" => line.style_solid
        "Dashed"=> line.style_dashed
        "Dotted"=> line.style_dotted
    series float expression = switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)
    series float ma = request(tf, expression)
    line.delete(
         line.new(bar_index, ma, bar_index+extend, ma, color = color, style = style)
               )
    line.delete(
         line.new(bar_index, ma, bar_index+extend, ma, color = color_, style = style, width = 5)
               )
    label.delete(
         label.new(bar_index+extend, ma, type + ": " + tf,
                     style = label.style_diamond,
                     color = color_,
                     textcolor = chart.fg_color,
                     size = size.small
                     )
               )
    label.delete(
         label.new(bar_index+extend, ma,
                     style = label.style_diamond,
                     color = color,
                     size = size.tiny
                     )
               )
    if barstate.islast
        cp = array.new<chart.point>()
      
        for i = 0 to 4000
            cp.push(chart.point.from_index(bar_index*, ma))
        polyline.delete(polyline.new(cp, curved = false, line_color = color, line_style = style))
        polyline.delete(polyline.new(cp, curved = false, line_color = color_, line_style = style, line_width = 5))
        table_cell(cell, type, tf, close > ma, color)

// --------------------------------------------------------------------------------------------------------------------}
// 𝙑𝙄𝙎𝙐𝘼𝙇𝙄𝙕𝘼𝙏𝙄𝙊𝙉
// --------------------------------------------------------------------------------------------------------------------{
ma(ma_tf0, color0, typeMA0, 15, styleMA0, 1)
ma(ma_tf1, color1, typeMA1, 30, styleMA1, 2)
ma(ma_tf2, color2, typeMA2, 45, styleMA2, 3)
ma(ma_tf3, color3, typeMA3, 60, styleMA3, 4)
// --------------------------------------------------------------------------------------------------------------------}*

## jrockefeller — 2025-08-02 18:24

Хочешь прославиться?
Cделай стандартные индикаторы со стандартными настройками(не пропуская ни строчки)
Как в любом мобильном терминале МТ4- 5
Вот их то и не хватает на Trading View

## FxMen — 2025-08-03 14:40

> Цитата (jrockefeller):
> **Не работают LWMA линии можете найти причину?**
>
>
>
> // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at Mozilla Public License, version 2.0
> // © ChartPrime
> //@version=5
> indicator("MA Multi-Timeframe ", overlay = true, max_bars_back = 4000, max_polylines_count = 100)
>
> // --------------------------------------------------------------------------------------------------------------------}
> // 𝙐𝙎𝙀𝙍 𝙄𝙉𝙋𝙐𝙏𝙎
> // --------------------------------------------------------------------------------------------------------------------{
> int   length = input.int(20, "Length", inline = "-1")
> float source = input.source(close, "", inline = "-1")
> string typeMA0 = input.string(title = "MA1 >>", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], inline ="0")
> string typeMA1 = input.string(title = "MA2 >>", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], inline="1")
> string typeMA2 = input.string(title = "MA3 >>", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], inline="2")
> string typeMA3 = input.string(title = "MA4 >>", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], inline="3")
> string ma_tf0 = input.timeframe("360", "",  inline="0")
> string ma_tf1 = input.timeframe("D",   "",  inline="1")
> string ma_tf2 = input.timeframe("W",   "",  inline="2")
> string ma_tf3 = input.timeframe("M",   "",  inline="3")
> string styleMA0 = input.string(title = "", defval = "Solid", options=["Solid", "Dotted", "Dashed"], inline="0")
> string styleMA1 = input.string(title = "", defval = "Solid", options=["Solid", "Dotted", "Dashed"], inline="1")
> string styleMA2 = input.string(title = "", defval = "Solid", options=["Solid", "Dotted", "Dashed"], inline="2")
> string styleMA3 = input.string(title = "", defval = "Solid", options=["Solid", "Dotted", "Dashed"], inline="3")
>
> color color0 = input.color(#1bc6dd, "",  inline="0")
> color color1 = input.color(#1b8fdd, "",  inline="1")
> color color2 = input.color(#6f1bdd, "",  inline="2")
> color color3 = input.color(#dd1bc3, "",  inline="3")
>
> // --------------------------------------------------------------------------------------------------------------------}
> // 𝙄𝙉𝘿𝙄𝘾𝘼𝙏𝙊𝙍 𝘾𝘼𝙇𝘾𝙐𝙇𝘼𝙏𝙄𝙊𝙉𝙎
> // --------------------------------------------------------------------------------------------------------------------{
> request(tf, expression)=>
>     request.security(syminfo.tickerid, tf, expression, lookahead = barmerge.lookahead_on)
> var tbl = table.new(position.top_right, 10, 10,
>                      bgcolor      = color.new(color.gray, 90),
>                      frame_color  = color.gray,
>                      frame_width  = 2,
>                      border_color = color.new(color.gray, 80),
>                      border_width = 1)
> table_cell(row, txt, tf, trend, color)=>
>     table.cell(tbl, 0, 0, "MA Type:", text_color = chart.fg_color)
>     table.cell(tbl, 1, 0, "Timeframe:", text_color = chart.fg_color)
>     table.cell(tbl, 2, 0, "Price:", text_color = chart.fg_color)
>     table.cell(tbl, 0, row, "🞛 " + txt, text_color = color)
>     table.cell(tbl, 1, row, tf, text_color = color)
>     table.cell(tbl, 2, row, trend ? "⮙" : "⮛", text_color = trend ? color.lime : color.fuchsia, text_size = size.large)
>
> ma(tf, color, type, extend, styleMA, cell)=>
>     color color_ = color.new(color, 85)
>     string style = switch styleMA
>         "Solid" => line.style_solid
>         "Dashed"=> line.style_dashed
>         "Dotted"=> line.style_dotted
>     series float expression = switch type
>         "SMA" => ta.sma(source, length)
>         "EMA" => ta.ema(source, length)
>         "SMMA (RMA)" => ta.rma(source, length)
>         "WMA" => ta.wma(source, length)
>         "VWMA" => ta.vwma(source, length)
>     series float ma = request(tf, expression)
>     line.delete(
>          line.new(bar_index, ma, bar_index+extend, ma, color = color, style = style)
>                )
>     line.delete(
>          line.new(bar_index, ma, bar_index+extend, ma, color = color_, style = style, width = 5)
>                )
>     label.delete(
>          label.new(bar_index+extend, ma, type + ": " + tf,
>                      style = label.style_diamond,
>                      color = color_,
>                      textcolor = chart.fg_color,
>                      size = size.small
>                      )
>                )
>     label.delete(
>          label.new(bar_index+extend, ma,
>                      style = label.style_diamond,
>                      color = color,
>                      size = size.tiny
>                      )
>                )
>     if barstate.islast
>         cp = array.new<chart.point>()
>
>         for i = 0 to 4000
>             cp.push(chart.point.from_index(bar_index*, ma))
>         polyline.delete(polyline.new(cp, curved = false, line_color = color, line_style = style))
>         polyline.delete(polyline.new(cp, curved = false, line_color = color_, line_style = style, line_width = 5))
>         table_cell(cell, type, tf, close > ma, color)
>
> // --------------------------------------------------------------------------------------------------------------------}
> // 𝙑𝙄𝙎𝙐𝘼𝙇𝙄𝙕𝘼𝙏𝙄𝙊𝙉
> // --------------------------------------------------------------------------------------------------------------------{
> ma(ma_tf0, color0, typeMA0, 15, styleMA0, 1)
> ma(ma_tf1, color1, typeMA1, 30, styleMA1, 2)
> ma(ma_tf2, color2, typeMA2, 45, styleMA2, 3)
> ma(ma_tf3, color3, typeMA3, 60, styleMA3, 4)
> // --------------------------------------------------------------------------------------------------------------------}*

Проблема с отсутствием LWMA линий в вашем индикаторе связана с тем, что в коде не реализована обработка этого типа скользящей средней.

## FxMen — 2025-08-03 15:26

Дружище, вы когда на ТВ берёте индикатор, вы разве не смотрите его характеристики? 
У данного автора там по-ему всё прописывается, и код там без ошибок, а вы опять выложили код с ошибками.

## FxMen — 2025-08-03 15:28

Вот добавил  "LWMA" и "HMA"

## FxMen — 2025-08-03 15:48

> Цитата (jrockefeller):
> Хочешь прославиться?
> Cделай стандартные индикаторы со стандартными настройками(не пропуская ни строчки)
> Как в любом мобильном терминале МТ4- 5
> Вот их то и не хватает на Trading View

В TradingView для мобильного есть почти все стандартные индикаторы из MT4/MT5, но их нужно искать под правильными названиями.

## jrockefeller — 2025-08-05 17:01

Хорошо-LWMA нашли
----------------------------------------

В Энвелопесе цена движется в 3 раза быстрее его линий конверта
Где этот множитель в коде?
--------------------------------------
второй вопрос
У всех ли подвальных осцилляторов центральная линия осцилятора равна мувингу 28?
-------------------------------------------

//@version=6
indicator(title="Envelope", shorttitle="Env", overlay=true, timeframe="", timeframe_gaps=true)
len = input.int(20, title="Length", minval=1)
percent = input(10.0, "Percent")
src = input(close, title="Source")
exponential = input(false, "Exponential")
basis = exponential ? ta.ema(src, len) : ta.sma(src, len)
k = percent/100.0
upper = basis * (1 + k)
lower = basis * (1 - k)
plot(basis, "Basis", color=#FF6D00)
u = plot(upper, "Upper", color=#2962FF)
l = plot(lower, "Lower", color=#2962FF)
fill(u, l, color=color.rgb(33, 150, 243, 95), title="Background")

## FxMen — 2025-08-06 13:17

> Цитата (jrockefeller):
> Хорошо-LWMA нашли
> ----------------------------------------
>
> В Энвелопесе цена движется в 3 раза быстрее его линий конверта
> Где этот множитель в коде?
> --------------------------------------
> второй вопрос
> У всех ли подвальных осцилляторов центральная линия осцилятора равна мувингу 28?
> -------------------------------------------
>
> //@version=6
> indicator(title="Envelope", shorttitle="Env", overlay=true, timeframe="", timeframe_gaps=true)
> len = input.int(20, title="Length", minval=1)
> percent = input(10.0, "Percent")
> src = input(close, title="Source")
> exponential = input(false, "Exponential")
> basis = exponential ? ta.ema(src, len) : ta.sma(src, len)
> k = percent/100.0
> upper = basis * (1 + k)
> lower = basis * (1 - k)
> plot(basis, "Basis", color=#FF6D00)
> u = plot(upper, "Upper", color=#2962FF)
> l = plot(lower, "Lower", color=#2962FF)
> fill(u, l, color=color.rgb(33, 150, 243, 95), title="Background")

Ответ на первый вопрос:
В коде индикатора **Envelope** множитель, который определяет, насколько цена движется быстрее линий конверта, задаётся параметром percent.

Формула для верхней и нижней линий:

pinescript

Copy

Download
upper = basis * (1 + k)  
lower = basis * (1 - k)  
где k = percent / 100.0.

Если цена движется **в 3 раза быстрее**, чем линии конверта, это означает, что:

- Когда цена поднимается на X%, верхняя линия поднимается на X/3%.

- Соответственно, множитель k должен быть 1/3 от движения цены.

**Где это в коде?**
В данном коде нет явного указания на множитель "3", но если подразумевается, что percent = 10.0, то:

- k = 0.1 (10% / 100).

- Если цена изменится на 30%, то верхняя линия изменится на 10% (то есть в 3 раза медленнее).

**Вывод:**
Множитель "3" не прописан явно, но он может быть выведен из соотношения percent и фактического движения цены. Если нужно, чтобы линии конверта реагировали в 3 раза медленнее, то percent должен быть в 3 раза меньше, чем амплитуда колебаний цены.

Ответ на второй вопрос:
**Нет, не у всех осцилляторов центральная линия равна мувингу 28.**

В вашем коде Envelope центральная линия (basis) — это либо **SMA(20)**, либо **EMA(20)** (в зависимости от выбора пользователя).

Однако в некоторых осцилляторах (например, **MACD**, **Stochastic RSI**, **CCI**) центральная линия может быть:

- **Нулевой** (как в MACD).

- **50** (как в RSI).

- **Динамической** (как в Bollinger Bands, где это SMA).

**Примеры:**

- **MACD** – центральная линия 0 (не мувинг).

- **Stochastic** – обычно 20 и 80 (уровни перекупленности/перепроданности), но центральная линия может быть 50 или скользящей.

- **CCI** – центральная линия 0.

**Вывод:**
Только в некоторых осцилляторах центральная линия может быть мувингом (например, в **Bollinger Bands** – это SMA), но не обязательно с периодом 28. В вашем коде Envelope это SMA/EMA с длиной len (по умолчанию 20).

## jrockefeller — 2025-08-06 21:31

> Цитата (FxMen):
> Ответ на первый вопрос:
> В коде индикатора **Envelope** множитель, который определяет, насколько цена движется быстрее линий конверта, задаётся параметром percent.
>
> Формула для верхней и нижней линий:
>
> pinescript
>
> Copy
>
> Download
> upper = basis * (1 + k)
> lower = basis * (1 - k)
> где k = percent / 100.0.
>
> Если цена движется **в 3 раза быстрее**, чем линии конверта, это означает, что:
>
> 

> 
- Когда цена поднимается на X%, верхняя линия поднимается на X/3%.
> 
- Соответственно, множитель k должен быть 1/3 от движения цены.
> 

> **Где это в коде?**
> В данном коде нет явного указания на множитель "3", но если подразумевается, что percent = 10.0, то:
>
> 

> 
- k = 0.1 (10%
> 

>
> Ответ на первый вопрос:
> В коде индикатора **Envelope** множитель, который определяет, насколько цена движется быстрее линий конверта, задаётся параметром percent.
>
> Формула для верхней и нижней линий:
>
> pinescript
>
> Copy
>
> Download
> upper = basis * (1 + k)
> lower = basis * (1 - k)
> где k = percent / 100.0.
>
> Если цена движется **в 3 раза быстрее**, чем линии конверта, это означает, что:
>
> 

> 
- Когда цена поднимается на X%, верхняя линия поднимается на X/3%.
> 
- Соответственно, множитель k должен быть 1/3 от движения цены.
> 

> **Где это в коде?**
> В данном коде нет явного указания на множитель "3", но если подразумевается, что percent = 10.0, то:
>
> 

> 
- k = 0.1 (10% / 100).
> 
- Если цена изменится на 30%, то верхняя линия изменится на 10% (то есть в 3 раза медленнее).
> 

> **Вывод:**
> Множитель "3" не прописан явно, но он может быть выведен из соотношения percent и фактического движения цены. Если нужно, чтобы линии конверта реагировали в 3 раза медленнее, то percent должен быть в 3 раза меньше, чем амплитуда колебаний цены.
> ОтНетОтНе
>
> В вашем коде Envelope центральная линия (basis) — это либо **SMA(20)**, либо **EMA(20)** (в зависимости от выбора пользователя).
>
> Однако в некоторых осцилляторах (например, **MACD**, **Stochastic RSI**, **CCI**) центральная линия может быть:
>
> 

> 
- **Нулевой** (как в MACD).
> 
- **50** (как в RSI).
> 
- **Динамической** (как в Bollinger Bands, где это SMA).
> 

> **Примеры:**
>
> 

> 
- **MACD** – центральная линия 0 (не мувинг).
> 
- **Stochastic** – обычно 20 и 80 (уровни перекупленности/перепроданности), но центральная линия может быть 50 или скользящей.
> 
- **CCI** – центральная линия 0.
> 

> **Вывод:**
> Только в некоторых осцилляторах центральная линия может быть мувингом (например, в **Bollinger Bands** – это SMA), но не обязательно с периодом 28. В вашем коде Envelope это SMA/EMA с длиной len (по умолчанию 20).

Хорошо что вы разобрались что есть еще одна настройка в стандартном индикаторе ENVelope
Без нее все обречены на провал
Удивите народ
Это будет ваш прогресс
Прогресс ограничен скоростью

Тот кто знает с чего начать всегда достигает цели

## jrockefeller — 2025-08-07 19:41

> Цитата (jrockefeller):
> Хорошо что вы разобрались что есть еще одна настройка в стандартном индикаторе ENVelope

Мы до сих пор ее найти не можем
1 шаг отступа
2 изменение цены
ничего не меняется-это пол индикатора

## FxMen — 2025-08-09 22:11



## FxMen — 2025-08-11 21:14



## jrockefeller — 2025-08-12 19:43

**Проясните как сделать ускорение в 4 раза а не 3
Какую цифру сменить в коде на какую
Провентелируйте тему**
???????????????
???????????
??????
Ответ на первый вопрос:
В коде индикатора **Envelope** множитель, который определяет, насколько цена движется быстрее линий конверта, задаётся параметром percent.

Формула для верхней и нижней линий:

pinescript

Copy

Download
upper = basis * (1 + k)
lower = basis * (1 - k)
где k = percent / 100.0.

Если цена движется **в 3 раза быстрее**, чем линии конверта, это означает, что:

- Когда цена поднимается на X%, верхняя линия поднимается на X/3%.

- Соответственно, множитель k должен быть 1/3 от движения цены.

**Где это в коде?**
В данном коде нет явного указания на множитель "3", но если подразумевается, что percent = 10.0, то:

- k = 0.1 (10% / 100).

- Если цена изменится на 30%, то верхняя линия изменится на 10% (то есть в 3 раза медленнее).

**Вывод:**
Множитель "3" не прописан явно, но он может быть выведен из соотношения percent и фактического движения цены. Если нужно, чтобы линии конверта реагировали в 3 раза медленнее, то percent должен быть в 3 раза меньше, чем амплитуда колебаний цены.

---

Следующая страница: https://forexsystemru.com/threads/91851/page-22
