пятница, 17 августа 2018 г.

Торговый робот SWTv4_Exp. Описание и настройка параметров

Торговый робот SWTv4_Exp. Описание и настройка параметров

Завершено описание окончательной редакции торгового робота - SWTv4_Exp. Отличие от предыдущих версий - возвращена независимая настройка на тренды. Т.е. каждый тренд можно по отдельности включить и выключить из учета в торговле робота.
В дальнейшем обозначение v4 из названия робота планируется исключить, поскольку предыдущие версии выведены из обращения.

1.1. Список параметров и их назначение.

При сбрасывании робота на график торгуемого инструмента появляется диалоговое окно для настройки параметров, показанное на рисунке v4.1.1 (Описание прежних редакций робота смотрите по метке Робот в списке меток в верхней части главной страницы блога или в нижней части страницы Параметры настройки SWT-робота)
Позиции открываются по торговым сигналам в направлении движения рынка определяемом условиями фильтрации входов по параметрам принимаемых во внимание трендов.
Позиции закрываются по достижению цели, стопом, трейлинг-стопом или по реверсу, т.е. при формировании условий для торговли в противоположном направлении, а также по развороту локального тренда, если задан соответствующий режим приоритета. Также позиции закрываются по параметрам эквити торгового счета с помощью глобальных переменных (описание ниже по тексту) и по прочим условиям, задаваемым трейдером.



Рис.v4.1.1. Диалоговое окно настройки параметров торгового робота.



FiltrLongTrend - при значении параметра true включается фильтр долгосрочного тренда. При значении параметра false долгосрочный тренд роботом не учитывается.

FiltrMediumTrend - при значении параметра true включается фильтр среднесрочного тренда. При значении параметра false среднесрочный тренд роботом не учитывается.

FiltrShortTrend - при значении параметра true включается фильтр краткосрочного тренда. При значении параметра false краткосрочный тренд роботом не учитывается.

FiltrLocalTrend - при значении параметра true включается фильтр локального тренда. При значении параметра false локальный тренд роботом не учитывается.

FiltrDailyTrend - при значении параметра true включается фильтр дневного тренда. При значении параметра false дневной тренд роботом не учитывается.

FiltrIdayTrend - при значении параметра true включается фильтр внутридневного тренда. При значении параметра false внутридневной тренд роботом не учитывается.

FiltrHourTrend - при значении параметра true включается фильтр часового тренда. При значении параметра false часовой тренд роботом не учитывается.

AdaptiveAdjustmentMode - при значении параметра true включается режим адаптивной настройки трендов, отключающий учет коррекционного режима трендов если тренд на уровень младше направленный.
При значении параметра false адаптивной настройки нет, все тренды учитываются независимо друг от друга.

AutoMM - выбор режима автоматического определения размера (объема) позиции. Значение true соответствует автоматическому определению размера позиции, значение false - ручной выбор размера позиции, задаваемый параметром LotsForManualMM.

AdvancedMM - при значении параметра true в тестах и в торговле включается рост объемов пропорциональный корню квадратному от эквити. При значении параметра false зависимость объема от эквити линейная.

RiskPercForTradeAutoMM - максимальный процент риска на сделку при AutoMM=true и размере стопа по волатильности, задаваемого через параметры робота. При отсутствии стопа объем считается исходя из размера волатильности краткосрочного тренда плюс волатильность локального: V240+V60.
Процент риска считается от рискового капитала: средства за минусом уровня допустимой просадки счета AllowedAbsoluteDrawdownLevel, задаваемого в глобальных переменных терминала. Если уровень AllowedAbsoluteDrawdownLevel не задан, то риск считается исходя из общего объема средств на счете. Если заданный или рассчитанный размер лота больше допустимого в торговом терминале, то в советнике автоматически устанавливается максимально допустимый размер лота. Если заданный или рассчитанный размер лота меньше допустимого в торговом терминале, то в советнике автоматически устанавливается минимально допустимый размер лота.

LotsForManualMM - размер лота для торговли фиксированным объемом, задаваемым вручную, и действующий при AutoMM=false.

NMaxNumberOrdersInMarket - максимальное количество ордеров в рынке по инструменту, открываемых советником по торговым сигналам. Позиции по сигналам волн (комментарий SWT), позиции по прорыву канала волатильности (комментарий vSWT) и позиции сеточного алгоритма  (комментарий GrSWT) учитываются совместно. Т.е. если робот открыл максимальное количество разрешенных позиций по сигналу волн, то сделки на прорыв канала волатильности открываться уже не будут. И наоборот. Ограничение не распространяется на позиции, открываемые сеточным алгоритмом (комментарий GrSWT), поскольку позиции сетки открываются в направлении роста прибыли и незначительно увеличивают общие риски торговли.

TheSizeTakeProfit_0_6 - целое число от 0 до 6. Задает размер ордера тейк-профит:
0 - ордер тейк-профит не устанавливается;
1 - ордер тейк-профит равен волатильности часового тренда V01;
2 - ордер тейк-профит равен волатильности внутридневного тренда V05;
3 - ордер тейк-профит равен волатильности дневного тренда V15;
4 - ордер тейк-профит равен волатильности локального тренда V60;
5 - ордер тейк-профит равен волатильности краткосрочного тренда V240;
6 - ордер тейк-профит равен волатильности среднесрочного тренда V1440.

TheSizeStopLoss_0_5 - целое число от 0 до 5. Задает размер ордера стоп-лосс, устанавливаемого при открытии позиции:
0 - ордер стоп-лосс не устанавливается;
1 - ордер стоп-лосс равен волатильности часового тренда V01 плюс волатильность внутричасового V00 плюс удвоенный спред;
2 - ордер стоп-лосс равен волатильности внутридневного тренда V05 плюс волатильность часового V01 плюс удвоенный спред;
3 - ордер стоп-лосс равен волатильности дневного тренда V15 плюс волатильность внутридневного V05 плюс удвоенный спред;
4 - ордер стоп-лосс равен волатильности локального тренда V60 плюс волатильность дневного V15 плюс удвоенный спред;
5 - ордер стоп-лосс равен волатильности краткосрочного тренда V240 плюс волатильность локального V60 плюс удвоенный спред.
Поправка по волатильности задает доверительный интервал для стопа. Поправка на размер спреда необходима для инструментов, у которых спред больше параметров волатильности для младших трендов.

TheChannelStopProfit - при значении параметра true режим установки стопов и целей на границах каналов волатильности для соответствующего тренда (индикатор SWT_SRLvls). При значении параметра false установка ордеров производится по параметрам волатильности (см. размер стопов и целей, указанный в предыдущих пунктах описания TheSizeStopLoss_0_5 и TheSizeTakeProfit_0_6).

TheMovingStopLoss - при значении параметра true происходит подтягивание ордера стоп-лосс за позицией при продвижении позиции в зону прибыли. Параметр работает и в зоне прибыли и в зоне убытка, чем отличается от классического трейлинг-стопа, который начинает действовать только в случае, если прибыль по позиции превысила заданное значение.
.
LowRiskEntry - при значении параметра true позиции открываются со стопом в размере ордера стоп-лосс для часового тренда (V01+V00 + удвоенный спред). Действие параметра не распространяется на начальный уровень стоп-лосс позиций сеточного алгоритма. При использовании этого режима и включенном параметре TheMovingStopLoss=true все стопы по инструменту подтягиваются к соответствующей границе канала.
Рекомендуется использовать с осторожностью. В общем случае результат непредсказуем и требует отдельного исследования и тестирования. По умолчанию режим отключен. 

TheBreakevenStop - параметр вывода стопа в безубыточное состояние и остановка дальнейшего движения При значении параметра true движущийся стоп и трейлинг-стоп прекращают (не начинают) движение при достижении уровня безубыточного стопа. Полезно на затяжных трендах с большими откатами.

TrailingStopAdaptive - при значении параметра true работает трейлинг стоп в размере ордера стоп-лосс для часового тренда (V01+V00 + удвоенный спред). При значении параметра false используется размер трейлинг стопа, задаваемый вручную параметром TrailingStopManualSize.

TrailingStopManualSize - размер трейлинг-стопа, задаваемого вручную. Активен, если адаптивный трейлинг стоп отключен (параметр  TrailingStopAdaptive=false). При значении 0 - ручной трейлинг-стоп отсутствует. Если значение больше 0, но меньше минимально допустимого в торговом терминале, то устанавливается минимально допустимое + спред.

Grid - при значении параметра true в дополнение к основным торговым алгоритмам включается сеточный алгоритм, наращивающий объем по мере продвижения рынка в направлении торгуемого тренда. Запуск алгоритма производится по первой сделке данного направления. Сеточный алгоритм работает независимо от состояния фильтров до тех пор, пока не сформируется сигнал закрытия позиций данного направления.
Шаг сетки равен размеру стопа для часового тренда V (V=V01+V00+удвоенный спред) с поправкой на множитель шага сетки GridStepFaktor. С ростом волатильности шаг сетки растет, с уменьшением - снижается.
Стоп-лосс сетки равен размеру стопа для часового тренда V=V01+V00 с поправкой на множитель стопа сетки GridStopFaktor.
Тейк-профит для позиций сетки устанавливается равным тейк-профиту для основного алгоритма.

GridStepFaktor - множитель переменного шага сетки в единицах V (установка по умолчанию 0.45).

GridStopFaktor - множитель стопа сетки в единицах V. Установка по умолчанию GridStopFaktor=0, при этом стопы по позициям сетки устанавливаются и обрабатываются на общих основаниях. При других значениях множителя инициирующий стоп будет установлен в соответствии с выбранным значением множителя с дальнейшей модификацией на общих основаниях, т.е. трейлинг-стопом и/или движущимся ордером стоп/лосс, если соответствующие режимы включены и если стоп сетки попадает в диапазон действия этих режимов.

UpLevel и DownLevel - уровни старта сеточного алгоритма при ручном запуске сетки в момент загрузки робота. Используются после выключения терминала. если необходимо восстановить работу сеточного алгоритма от какого либо уровня. Могут использоваться для инициации работы сеточного алгоритма без использования основных торговых алгоритмов.

TimeOutOpenNewPosMinutes -  интервал в минутах блокировки открытия по торговому сигналу однотипной позиции с целью исключения эффекта "дребезга" индикаторов вблизи пороговых уровней. По умолчанию установлено значение 60 минут - средний период цикла часового тренда.
Установка интервала меньше 12 минут заблокирована программно.
Ограничение по времени не распространяется на позиции, открываемые сеточным алгоритмом, а также не действует, если данному типу торгового сигнала не открыто ни одной позиции и суммарное количество позиций в рынке позволяет инициировать сделку.

ControlManualPosByExpert - при значении параметра true советник управляет позициями, открытыми вручную, устанавливая размером стопа, трейлингом и закрывая позиции, при поступлении соответствующих сигналов.

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

HideLabels - при значении параметра true отключается режим отображения меток, показывающих состояние торгового робота. Используется при желании разгрузить график от лишних графических элементов.

TestOfExpert - при значении параметра true с целью ускорения работы программы отключаются избыточные режимы индикации.

Параметр AbsoluteDrawdownLevelForTest задает уровень допустимой абсолютной просадки при тестировании. При реальной торговле параметр просадки задается в области глобальных переменных торгового терминала (клавиша F3).

Параметр EquityProfitTargetStepPerc задает шаг цели по прибыли для тестов. В реальной торговле этот параметр задается в области глобальных переменных торгового терминала (клавиша F3).

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

TickValueFaktor - по умолчанию 1. Позволяет компенсировать иногда встречающиеся ошибки сервера по цене тика торговых инструментов. Это проще, чем бороться с ветряными мельницами технической поддержки.


1.2. Глобальные переменные.

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



Рис.v4.1.2. Область глобальных переменных торгового терминала

С помощью системы глобальных переменных задаются следующие параметры:
- задание уровня начального баланса торгового счета для очередного торгового цикла (устанавливается при необходимости, начало цикла определяется трейдером);
- задание уровня допустимой абсолютной просадки по счету для очередного торгового цикла;
- задание единого для всех копий роботов уровня целей прибыли для выхода по эквити;
- задание единого для всех копий роботов уровня стоп-лосс для выхода по эквити;
- установка защитного выхода при аномально высокой волатильности.

Настройка параметров производится в диалоговом окне глобальных переменных, которое вызывается нажатием клавиши F3 или выбором соответствующего пункта в разделе меню Сервис.

TheInitialAccountBalance - начальный баланс торгового счета.
AllowedAbsoluteDrawdownLevel - допустимый уровень абсолютной просадки.
EquityProfitTarget - уровень целевого профита по эквити в единицах баланса торгового счета. Если ноль, то не включается. При достижении заданного уровня все открытые позиции закрываются, устанавливается новый уровень цели с учетом процентного шага по прибыли и работа роботов продолжается.
EquityProfitTargetPerc - процентный шаг уровня целей по прибыли. При достижении целей профита по эквити все позиции закрываются, устанавливается новый уровень цели и работа роботов продолжается.
EquityStopLoss - уровень допускаемого плавающего убытка по эквити в единицах баланса торгового счета. При достижении заданного уровня все открытые позиции закрываются, а работа пула роботов блокируется до принятия трейдером решения о продолжении торговли.
Block - параметр блокировки работы роботов. При уровне средств на счете, отличном от нуля, производится проверка, не вышли ли параметры счета за заданные границы по убыткам. Если вышли, то работа советников блокируется. Если сумма средств на счете меньше или равна нулю, работа советника также блокируется, хотя это в общем-то и не нужно.
Внимание. Если вы пополнили счет при нулевом балансе или ранее был достигнут заданный вами предельный уровень просадки, то при возобновлении работы проверьте значение глобальной переменной GV_Block и установите при необходимости нулевое значение переменной. При значении переменной "1" работа роботов заблокирована.
TheHftCloseMode - глобальная переменная торгового терминала, которая управляет закрытием позиций по всем инструментам при броске цен против позиции на величину 2*V в пределах минуты, а также в безусловном порядке независимо от настройки других параметров подтягивает стоп на величину 2*V при броске цен в сторону открытой позиции. Используется для аварийного выхода из рынка при резком росте волатильности, чаще всего вследствие сильной реакции на новости. В обычном режиме влияния на параметры открытых ордеров обычно не оказывает. Использовать с осторожностью. На некоторых инструментах приводит к необоснованной ликвидации позиций на тонком рынке. Вместо глобальной переменной можно пользоваться локальным параметром HftMode, значение которого настраивается в каждом отдельном экземпляре робота.
GlobalAccountNumber - номер торгового счета. При смене торгового счета появляется диалоговое окно предупреждений с предложением проверить и при необходимости задать параметры глобальных переменных для нового торгового счета ("Type F3 anf check the GlobalVariables for new account"). Все исходные установки при этом сбрасываются до нуля, а работа пула роботов блокируется - рис.v4.1.3.



Рис.v4.1.3. Предупреждение о необходимости проверить установку глобальных переменных торгового терминала при смене торгового счета


1.3. Индикация параметров настройки.

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


Рис.v4.1.4. Индикация параметров настройки

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

InitAB - обозначение параметра TheInitialAccountBalance и заданное числовое значение начального баланса.
ADDL - обозначение параметра AllowedAbsoluteDrawdownLevel  и заданное значение допустимого уровня абсолютной просадки.
EqSL - обозначение параметра EquityStopLoss и заданное числовое значение допустимого абсолютного уровня снижения средств в единицах баланса торгового счета.
EqTP - обозначение параметра EquityProfitTarget и заданный уровень целевого профита по эквити в единицах баланса торгового счета.
EqTP Prc - обозначение параметра EquityProfitTargetPerc и заданное числовое значение процентного шага по новой цели прибыли.
Hft+Bl - комбинированный индикатор, значения десятичных разрядов которого несут следующую информацию:
- первый разряд слева - значение параметра HftMode;
- второй разряд слева - значение параметра Block.
Man+Gr+N - комбинированный индикатор, значения десятичных разрядов которого несут следующую информацию:
- первый разряд слева - значение параметра ConrolManualPosByExpert;
- второй разряд слева - значение параметра Grid;
- третий разряд слева - значение параметра NMaxNumberOrdersInMarket.
AdvMM+Lot - комбинированный индикатор, значения десятичных разрядов которого несут следующую информацию:
- первый разряд слева - значение параметра AdvancedMM;
- второй разряд слева - значение параметра LotsForManualMM.
Amm+Risk - комбинированный индикатор, значения десятичных разрядов которого несут следующую информацию:
- первый разряд слева - значение параметра AutoMM;
- второй разряд слева - значение параметра RiskPercForTradeAutoMM.
Pr+St+Ms - комбинированный индикатор, значения десятичных разрядов которого несут следующую информацию:
- первый разряд слева - значение параметра TheSizeTakeProfit_0_6;
- второй разряд слева - значение параметра TheSizeStopLoss_0_4;
- третий разряд слева - значение параметра TheMovingStopLoss.
AdTrS+Br - комбинированный индикатор, значения десятичных разрядов которого несут следующую информацию:
- первый разряд слева - значение параметра TrailingStopAdaptive;
- второй разряд слева - значение параметра TheBreakevenStop.
ChSP+LrE - комбинированный индикатор, значения десятичных разрядов которого несут следующую информацию:
- первый разряд слева - значение параметра TheChannelStopProfit;
- второй разряд слева - значение параметра LowRiskEntry.
Long, Medium, Short, Local, Daily, IDay, Hourly - комбинированные индикаторы, знак которых показывает состояние фильтров трендов и направление движения по каждому тренду. Значения десятичных разрядов несут следующую информацию:
- знак - направление движения при действующем фильтре;
- первый разряд слева: 1 - тренд принимается во внимание, 0 - фильтр тренда отключен;
- второй разряд слева - значение параметра настройки адаптивного режима AdaptiveAdjustmentMode;
- третий разряд слева - характер движения:
- 1 - коррекция;
- 2 - тренд;
- 0 - фильтр отключен.
UpLvl и DnLvl показывают верхний и нижний уровни старта сеточного алгоритма при ручном запуске сетки в момент загрузки робота или текущие уровни, на которых будут открываться позиции.
Нулевые значения означают, что сеточный алгоритм или не включен или еще не запущен.
TOF показывает тип фильтра волн SWT-метода, установленный по умолчанию 2. В текущей редакции робота настройка на тип фильтра не производится.
В верхнем левом углу графика расположены еще две метки, добавленные для удобства пользователей:
TrendDirection, которая принимает значения UPDOWN и No Trend. Метка указывает на направление торговли, сформированное группой настраиваемых трендов - локальным, краткосрочным, среднесрочным и долгосрочным - в соответствии с выбранным значением вектора фильтрации и режимом адаптивной настройки.
ReadyToTrade,  которая принимает значения UPDOWN и Not Ready. Метка указывает на готовность и направление проведения сделки по торговому сигналу в зависимости от постоянно включенных фильтров часового, внутридневного и дневного трендов.
Сделка производится если направление торговли по обоим меткам совпадает. При отключенных фильтрах локального, краткосрочного, среднесрочного и долгосрочного трендов робот торгует по группе младших трендов, фильтры которых остаются постоянно включенными.
Метки полезны для быстрой оценки ситуации, что бывает полезным, если торговля роботом совмещается с агрессивной ручной торговлей в направлении действующих трендов, а также для торговли внутри дня.

Алгоритм работы не является черным ящиком и абсолютно прозрачен. Пояснения по деталям формирования торговых сигналов и особенностям их фильтрации в материалах блога.

2. SWT-метод. Пояснения к параметрам настройки робота.

2.1. Признак тренд-коррекция.



Индикаторы направления тренда расположены в окне индикатора SWT.
Индикатор направления тренда для волны четвертого уровня - бирюзовая гистограмма - отображается жирной линией темно-синего цвета. Расположение индикатора на верхней и нижней границах канала волатильности означают соответственно восходящий и нисходящий тренд.
Расположение индикатора внутри канала в области положительных значений - нисходящая коррекция.
Расположение индикатора внутри канала в области отрицательных значений - восходящая коррекция.
Аналогичный индикатор для волны третьего уровня - красная гистограмма - отображается тонкой линией темно-синего цвета.
Всего в SWT-роботе напрямую используются индикаторы долгосрочного, среднесрочного, краткосрочного, локального, дневного и внутридневного трендов, отображаемые волнами четвертого уровня соответственно графиков масштаба D1, H4, H1, M15, M5 и M1.
При использовании адаптивных режимов настройки на рынок учитываются параметры основного (волна четвертого уровня графика недельного масштаба) и часового (волна третьего уровня графика М1) трендов.
Признаки трендов комбинируются в зависимости от выбранного режима настройки, разрешая или запрещая открытие/закрытие позиций торговым роботом по торговым сигналам или признакам разворота торгуемого движения.

2.2. Формирование торговых сигналов.

Торговые сигналы для открытия позиций при использовании робота бывают трех типов:
1 - вход по сигналу волн;
2 - вход по прорыву канала волатильности;
3 - вход по сеточному алгоритму.

2.2.1. Вход по сигналу волн.



Сигнал по движению волн формируется по данным графика минутного масштаба и бывает двух типов:
- пересечение волной второго уровня (гистограмма василькового цвета) нулевой линии (вверх - покупка, вниз - продажа);
- восстановление роста волны в области положительных значений (покупка) или снижения в области отрицательных значений (продажа).
Торговые сигналы используются для открытия позиции при трех условиях:
- открытие позиции разрешено по признаку торгуемого движения (фильтр трендов);
- в рынке находится количество ордеров меньше максимально разрешенного значения, задаваемого параметром NMaxNumberOrdersInMarket; 
- превышен интервал "дребезга" TimeOutOpenNewPosMinutes с момента открытия предыдущей позиции по сигналу волн.

2.2.2. Вход по прорыву канала волатильности.



Сигнал по прорыву канала волатильности формируется при прорыве текущих уровней поддержки/сопротивления, рассчитанных индикатором SWT_SRLvls на графике минутного масштаба. Прорыв верхней границы канала - сигнал на покупку. Прорыв нижней границы - сигнал на продажу.
Торговые сигналы по прорыву канала волательности используются для открытия позиции при трех условиях:
- открытие позиции разрешено по признаку торгуемого движения (фильтр трендов);
- в рынке находится количество ордеров меньше максимально разрешенного значения, задаваемого параметром NMaxNumberOrdersInMarket;
- превышен интервал "дребезга" TimeOutOpenNewPosMinutes с момента открытия предыдущей позиции по торговому сигналу.
Сквозная индикация текущих значений канала волатильности на графиках всех масштабов возможна с помощью индикатора SWT_VolatilityCh с параметром таймфрейма 1.

2.2.3. Вход по сеточному алгоритму.

Сеточный алгоритм включается опцией Grid=true. Полезен на затяжных трендах после резкого перелома предыдущего характера движения, так как позволяет с незначительным дополнительным риском нарастить объем позиции и получить прибыль большего размера. чем без использования сетки.
Инициация сеточного алгоритма производится открытием позиции по одному из двух типов торговых сигналов, рассмотренных выше.
Открытие позиции формирует уровень сетки, при превышении которого в случае покупок (или снижении, если речь идет о продажах) открывается дополнительная позиция того же направления и формируется новый уровень сетки. Текущий уровень срабатывания сеточного алгоритма отображается в индикации параметров робота. На рисунке внизу это уровень покупок 0.7850 выше текущего состояния рынка.



Размеры шага сетки и стопа сеточного алгоритма задаются в настройках робота и зависят от текущей волатильности рынка для часового тренда с учетом волатильности внутричасового тренда и спреда - параметр V.
Позиции сеточного алгоритма маркируются меткой "GrSWT". Количество их ничем не ограничено, не влияет на количество позиций, открываемых по сигналам, и определяется только размером торгуемого движения и волатильностью рынка.
Инициировать работу сеточного алгоритма можно и при загрузке робота, задавая в параметрах настройки верхний или нижний уровень срабатывания сетки (или оба уровня, если выбор направления не определен).

========================================================

Комментариев нет:

Отправить комментарий