Логотип Парус Инвестора
Парусник
Цена деления цифровой шкалы
Системы и стратегии

Учебник по языку программирования Easy Language
Запись моделей OptionStation

Запись моделей OptionStation (Pricing, Volatility, and Bid/Ask) в EasyLanguage - больше напоминает пример трансляции значений вычисления математических процедур EasyLanguage. Чтобы сделать это, Вы только должны знать, как читать все связанные с опционом данные (см. предыдущий раздел в этой главе "Чтение Данных OptionStation") и синтаксис EasyLanguage.

Этот раздел описывает, как OptionStation исполняет вычисления, а также зарезервированные слова, которые Вы будете использовать, чтобы создать ваши собственные модели.


Механизм ценового моделирования

OptionStation использует Механизм ценового моделирования для текущего анализа и прогнозного(?) анализа.

Текущий анализ состоит из оценки Ценовой Модели с использованием большинства информации текущей цены для основного актива и всех опционов, а так же текущей даты и времени. Это делается прежде всего в окне Position Analysis, чтобы следить за текущей цепочкой опциона и позициями в реальном/задержанном масштабе времени.

Прогнозный анализ состоит из оценки Ценовой Модели Оценки с использованием рыночных предположений. Изменяя дату и время, лежащих в основе цены или волатильности, OptionStation может определить, сколько позиция может стоить при определенных обстоятельствах. Это делается в процессе Поиска Позиции и в окне Position Chart, где OptionStation находит лучшую позицию на указанном пользователем рыночном предположении.

Математика Ценовой, Волатильной и Bid/Ask Моделей сложная и расширенная, и цель данного раздела состоит в том, чтобы прояснить, как эти модели используются OptionStation, не объясняя их математические принципы.

Чтобы ордер Ценовой Модели дал ценные результаты, он должно иметь все следующие части информации:

  1. цена основного актива
  2. цена реализации опциона
  3. процентные ставки
  4. время до истечения опциона
  5. волатильность

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

Как только Механизм ценового моделирования получил первые четыре части информации, он пробежит модели OptionStation и получит MIV (Рыночная Ожидаемая неустойчивость) на необработанном Предложении и Спросе; MIV на Закрытии; Теоретическое Значение опциона; Delta, Gamma, Rho, Theta, Vega; смоделированные Предложение и Спрос; MIV на смоделированном Предложении и Спросе; и смоделированную Волатильность (не обязательно в этом ордере).

Когда Механизм ценового моделирования заканчивает вычисления, вся эта информация становится доступной для анализа опционов и основного актива.

Механизм ценового моделирования расширяет данные опционов, которые посылаются от datafeed к GlobalServer и OptionStation со всеми, определенными опция, упомянутыми ранее, данными. Все это делается через итеративный процесс в пять шагов, описанный далее.


Итеративный процесс с пятью шагами

Механизм ценового моделирования OptionStation вычисляет все цены через процесс с пятью шагами. Этот процесс включает три различные модели: Ценовая Модель, Модель Волатильности и Модель Предложения/Спроса.



Этот процесс повторяется для каждого опциона, доступного OptionStation в отдельный момент времени. Другими словами, OptionStation выполняет итерации через этот процесс так много раз как установлено в портфеле символа для основного анализируемого актива.


Шаг 1: Получение MIV от Ценовой Модели

Цель этого шага состоит в том, чтобы найти Рыночную Ожидаемую неустойчивость (MIV) для последнего необработанного Bid и Ask, посланных datafeed для опциона. Это - итеративный процесс (как показано на рисунке 5-10), который разумно выбирает различные значения волатильности для выполнения Ценовой Модели, чтобы оценить, какая волатильность необходима, чтобы получить цену, равную последнему значению Bid и Ask, полученных от GlobalServer.

Поэтому, зная последнюю торговую цену основного актива, страйк и количество дней до истечения опциона, процентную ставку и последнюю торговую цену опциона, OptionStation выполняет итерации через Ценовую Модель, подавая в нее различные значения волатильности, чтобы попробовать приблизить настолько возможно близко результат Ценовой Модели к последней цене, переданной от datafeed. То же самое также делается со значениями Bid и Ask.

От этого процесса OptionStation получает MIV на закрытии, MIV на Bid и MIV на Ask.


Шаг 2: Модель Волатильности

Цель этого второго шага состоит в том, чтобы найти волатильность для специфического опциона. Модель Волатильности вычисляет волатильность для каждого опциона, используя необработанный MIV, полученный на Шаге 1 и метод поиска Newton-Raphson, использующий опцию Vega (для получения описания этого метода обратитесь к Option Volatility & Pricing, by Sheldon Natenberg, McGraw-Hill, 1994. Page 446).


Шаг 3: Оценка Модели

Цель этого третьего шага (и второго после прохождения Ценовой Модели), состоит в вычислении Теоретического Значения частей опциона, а так же значений всех греков (Delta, Gamma, Theta, Rho и Vega).

(nie. Greeks" - Греки". Коэффициенты, название которым дали буквы греческого алфавита. Являются промежуточными результатами расчетов по модели Блэка-Шоулза и используются для оценки различных рисков опционных сделок.)

Используя цену основного актива, цену реализации и дни до истечения опциона, процентные ставки и образцовую волатильность, вычисленную на Шаге 2, OptionStation пробежит Ценовую Модель и установит Теоретическое Значение опциона и все значения ее греков.


Шаг 4: Модель Bid/Ask

Цель этого четвертого шага состоит в том, чтобы вычислить смоделированное значение Предложения и Спроса опциона. Учитывая, что цены Bid и Ask не всегда точно передаются datafeeds, иногда желательно смоделировать значения Bid и Ask.

Когда Модель Bid/Ask противоречит выбранным необработанным Bid и Ask, Модель Bid/Ask, использует все значения, полученные в течение первых трех шагов и вычисляет сильный(?) Bid/Ask, который заменяет значения, переданные от datafeed.


Шаг 5: Получение Смоделированного MIV с Теоретической Моделью

Этот пятый шаг делается с намерением вычислить значения MIV для смоделированного Bid и Ask, рассчитанных в Шаге 4. Как и Шаг 1 это - итерационный шаг, когда Модель Волатильности и Vega выполняются неоднократно с различными значениями для волатильности, пытаясь найти MIV для сильного Bid и Ask при значениях последних, полученных на Шаге 4.


Модификация Логики Механизма ценового моделирования

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

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



Update all symbols for this underlying when any symbol for this underlying ticks. Все значения для всех опционов рассчитываются всякий раз, когда есть обновление в любом основном активе или символах опциона. Это - наиболее трудоемкий режим OptionStation и в большинстве случаев приведет к ненужным вычислениям, поскольку все смоделированные значения постоянно пересчитываются по получении тиков от datafeed.

Update each symbol as it ticks or the underlying ticks. Рекомендуемая установка; когда определенный опциона тикает(?), смоделированные значения модифицируются; и когда основной актив тикает, смоделированные значения для всех опционов модифицируются.

Update each symbol as it ticks. Эта установка - наименее трудоемкий выбор; смоделированные значения для определенного опциона модифицируются, когда опцион тикает. Смоделированные значения не модифицируются, когда основной актив тикает.

Эти три параметра настройки могут быть основаны или на каждом торговом тике или на каждом тике Bid и Ask, который получен от datafeed, или на обоих, в зависимости от установки соответствующего флажка в поле Calculation Dependencies.

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


Зарезервированные слова Моделей

Большинство зарезервированных слов моделей - слова функции "set", в которых они устанавливают различные значения для опционов (например, Theoretical Value, Delta). Эти те же самые слова, когда используется в других EasyLanguage документах, получают значения, а не устанавливают их.


TheoreticalValue(num)

Это зарезервированное слово используется в Ценовой Модели, чтобы установить Теоретическое Значение опциона. Когда это зарезервированное слово используется в другой методике анализа, оно используется, чтобы получить Теоретическое Значение опциона.


Синтаксис:

TheoreticalValue(num)

Параметры:

Num - числовое выражение, представляющее Теоретическое Значение опциона. Этот параметр необходим только при установке значения в Ценовой Модели, но не при получении этого значения.


Пример:

Например, при записи Ценовой Модели, если значение Теоретического Значения сохранено в переменной Value1, то Теоретическое Значение для опциона устанавливается следующим образом:

TheoreticalValue(Value1);

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

Value1 = TheoreticalValue of option;

Обратите внимание на использование спецификатора Of Option. Для получения информации относительно спецификаторов, см. выше раздел в этой главе, названный "Чтение Данных OptionStation".


Delta(num)

Это зарезервированное слово используется в Ценовой Модели, чтобы установить Delta опциона. Когда это зарезервированное слово используется в другой методике анализа, оно используется, чтобы получить Delta опциона.


Синтаксис:

Delta(num)

Параметры:

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


Пример:

Например, при записи Ценовой Модели, если значение Delta сохранено в переменной Value1, то Delta для опциона устанавливается следующим образом:

Delta(Value1); 

При записи других методик анализа, следующие команды получают Delta опциона:

Value1 = Delta of option;

Обратите внимание на использование спецификатора Of Option. Для получения информации относительно спецификаторов, см. раздел выше в этой главе, названный "Чтение Данных OptionStation".


Gamma(num)

Это зарезервированное слово используется в Ценовой Модели, чтобы установить Gamma опциона. Когда это зарезервированное слово используется в другой методике анализа, то оно используется, чтобы получить Gamma опциона.


Синтаксис:

Gamma(num)

Параметры:

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


Пример:

Например, если в Ценовой Модели значение Gamma сохранено в переменной Value1, то Gamma для опциона устанавливается следующим образом:

Gamma(Value1);

При записи других методик анализа, следующие команды получают Gamma опциона:

Value1 = Gamma of option;

Обратите внимание на использование спецификатора Of Option. Для получения информации относительно спецификаторов, см. раздел выше в этой главе, названный "Чтение Данных OptionStation".


Rho(num)

Это зарезервированное слово используется в Ценовой Модели, чтобы установить Rho опциона. Когда это зарезервированное слово используется в другой методике анализа, оно используется, чтобы получить Rho опциона.


Синтаксис:

Rho(num)

Параметры:

Num - числовое выражение, представляющее Rho опциона. Этот параметр необходим только при установке значения в Ценовой Модели, но не при получении этого значения.


Пример:

Например, если в Ценовой Модели Оценки значение Rho сохранено в переменной Value1, то Rho для опциона устанавливается следующим образом:

Rho(Value1); 

При записи других методик анализа, следующие команды получают Rho опциона:

Value1 = Rho of option;

Обратите внимание на использование спецификатора Of Option. Для получения информации относительно спецификаторов, см. раздел выше в этой главе, названный "Чтение Данных OptionStation".


Theta(num)

Это зарезервированное слово используется в Ценовой Модели, чтобы установить Theta для опциона. Когда это зарезервированное слово используется в другой методике анализа, оно используется, чтобы получить Theta опциона.


Синтаксис:

Theta(num)

Parameters:

Num - числовое выражение, представляющееTheta опциона. Этот параметр необходим только при установке значения в Ценовой Модели, но не при получении этого значения.


Пример:

Например, если в Ценовой Модели значение Theta сохранено в переменной Value1, то Theta опциона устанавливается, используя:

Theta(Value1);

При записи других методик анализа, следующие команды получают Theta опциона:

Value1 = Theta of option;

Обратите внимание на использование спецификатора Of Option. Для получения информации относительно спецификаторов, см. раздел выше в этой главе, названный "Чтение Данных OptionStation".


Vega(num)

Это зарезервированное слово используется в Ценовой Модели, чтобы установить Vega для опциона. Когда это зарезервированное слово используется в другой методике анализа, оно используется, чтобы получить Vega опциона.


Синтаксис:

Vega(num)

Параметры:

Num - числовое выражение, представляющее Vega опциона. Этот параметр необходим только при установке значения в Ценовой Модели, но не при получении этого значения.


Пример:

Например, если в Ценовой Модели значение Vega сохранено в переменной Value1, тогда оно может быть установлено с использование следующих инструкций:

Vega(Value1); 

При записи других методик анализа, следующие команды получают Vega опциона:

Value1 = Vega of option;

Обратите внимание на использование спецификатора Of Option. Для получения информации относительно спецификаторов, см. раздел выше в этой главе, названный "Чтение Данных OptionStation".


ModelVolatility(num)

Это зарезервированное слово используется в Модели Волатильности, чтобы установить волатильность опциона. Когда это зарезервированное слово используется в другой методике анализа, оно используется, чтобы получить волатильность опциона.


Синтаксис:

ModelVolatility(num)

Параметры:

Num - числовое выражение, представляющее смоделированную волатильность опциона. Этот параметр необходим только при установке значения в Модели Волатильности, но не при получении этого значения.


Пример:

Например, если в Модели Волатильности значение волатильности сохранено в переменной Value1, то волатильность опциона устанавливается следующим образом:

ModelVolatility(Value1);

Следующее выражение может использоваться, чтобы назначить волатильность опциона на переменную в Ценовой Модели:

Value1 = ModelVolatility of option;

Обратите внимание на использование спецификатора Of Option. Для получения информации относительно спецификаторов, см. раздел выше в этой главе, названный "Чтение Данных OptionStation".


Ask(num)

Это зарезервированное слово используется в Модели Bid/Ask, чтобы установить Ask на опцион. Когда это зарезервированное слово используется в другой методике анализа, то оно используется, чтобы получить Ask опциона.


Синтаксис:

Ask(num)

Параметры:

Num - числовое выражение, представляющее смоделированный Ask опциона. Этот параметр необходим только для установки значения в Модели Bid/Ask, но не при получении этого значения.


Пример:

Например, если в Модели Bid/Ask, значение Ask сохранено в переменной Value1, то значение Ask устанавливается следующим образом:

Ask(Value1); 

Следующее выражение может использоваться, чтобы назначить Ask опциона на переменную в Ценовой Модели:

Value1 = Ask of option;


Bid(num)

Это зарезервированное слово используется в Модели Bid/Ask, чтобы установить Bid на опцион. Когда это зарезервированное слово используется в другой методике анализа, оно используется, чтобы получить Bid опциона.


Синтаксис:

Bid(num)

Parameters:

Num - числовое выражение, представляющее смоделированный Bid опциона. Этот параметр необходим только для установки значения в Модели Bid/Ask, но не при получении этого значения.


Пример:

Например, если в Модели Bid/Ask, значение Bid сохранено в переменной Value1, то значение Bid устанавливается следующим образом:

Bid(Value1);

Следующее выражение может использоваться, чтобы назначить Bid опциона на переменную в Ценовой Модели:

Value1 = Bid of option;


ModelPrice

ModelPrice используется во всех трех моделях (Pricing, Bid/Ask, and Volatility), чтобы обратиться к цене основного актива при выполнении прогнозного анализа (для получения дополнительной информации см. предыдущий раздел " Механизм ценового моделирования").


Синтаксис:

ModelPrice data alias

Параметры:

Нет; однако, Вы должны использовать псевдоним данных Of Asset (Of - опускаемое слово, которое делает выражение более удобным для чтения).


Примечания:

Очень важно использовать ModelPrice при обращении к цене основного актива в любой из моделей; оно будет использоваться в прогнозном анализе, выполняемом Механизмом ценового моделирования (например, при создании Position Charts).

Когда Вы используете это зарезервированное слово, его значение изменяется по мере необходимости, чтобы получить Теоретические Значения позиции в прогнозном анализе, таким образом генерируя данные P/L данные для любого числа различных значений основного актива.


Пример:

Например, следующее выражение может использоваться, чтобы назначить цену основного актива на переменную в Ценовой Модели:

Value1 = ModelPrice of asset;


TargetType

Это зарезервированное слово допустимо только в Ценовых Моделях. Оно возвращает числовое значение, соответствующее шагу Механизма ценового моделирования, для которого вызывается Ценовая Модель.


Синтаксис:

TargetType

Примечания:

Это зарезервированное слово возвращает одно из этих четырех значений:

  1. Теоретическое значение и вычисленные греки
  2. значения MIV на необработанных данных
  3. значения MIV для смоделированных значений Bid/Ask
  4. колл Механизма поиска позиции

Пример:

Например, если есть вычисления, рассчитанные при определенных значениях Рыночной Ожидаемой Волатильности на необработанных данных, и они не необходимы для остальной части процесса, то Вы можете использовать инструкцию IF-THEN с TargetType. Следующая инструкция IF-THEN исполняет команды только тогда, когда Ценовая Модель вызывается, чтобы вычислить значения MIV на необработанных данных:

If TargetType = 1 Then Begin
    {здесь инструкция EasyLanguage}
End;


FirstOption

Это зарезервированное слово допустимо только в Моделях Волатильности. Оно возвращает значение true/false. Если оцениваемый опцион самый первый из анализируемых, то это зарезервированное слово возвратит True; если это - любой другой опцион - возвратится False.


Синтаксис:

FirstOption


Примечания:

Это зарезервированное слово ускоряет вычисления, которые должны быть выполнены только однажды для полной цепочки опциона.


Пример:

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

If FirstOption Then Begin
{Здесь вычисляется волатильность, полученное значение назначается на глобальную переменную GVValue1}
End;
ModelVolatility (GVValue1);

Обратите внимание, что в вышеупомянутом примере, GVValue1 - глобальная переменная OptionStation. Описание глобальных переменных см. в следующем разделе "Глобальные переменные OptionStation."


TickType

TickType возвращает различные значения в зависимости от того, было ли вычисление Механизма ценового моделирования и индикаторов инициализировано новой ценой основного актива, опциона или смоделированного тика.


Синтаксис:

TickType

Примечания:

Это зарезервированное слово возвращает одно из этих четырех значений:

  1. Asset (актив) (акция или индекс)
  2. Future (фьючерс)
  3. Option {опцион}
  4. Model (модель)

Это зарезервированное слово дает возможность Вам оптимизировать ваши EasyLanguage вычисления для получения максимальной производительности; Вы можете управлять исполнением методикой анализа вычислений.


Пример:

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

If TickType = 0 OR TickType = 1 Then Begin
    {здесь инструкция EasyLanguage}
End;

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

Анализ опциона очень интенсивен в смысле объема вычислений. Одна из причин этого - то, что все три модели (Pricing, Volatility и Bid/Ask) нужно назвать доступными для каждого опциона каждый раз, когда получены новые данные. Однако, некоторые из вычислений избыточны и их можно избежать.

Например, некоторые методики анализа опциона используют общее для всех опционов значение волатильности (вместо отличных значений волатильности для каждого опциона). В этом случае вызывать Модель Волатильности для каждого опциона было бы избыточно и тратой ресурсов. Также, смоделированные значения Bid and Ask могут использовать ассиметричную информацию, сгенерированную в Модели Волатильности.

Вместо того чтобы дублировать эти комплексные вычисления, Вы можете использовать в моделях метки-заполнители, которые поддерживают некоторое значение вдоль всех опционов и/или вдоль документов EasyLanguage OptionStation. Эти метки - заполнители называют Глобальными переменными OptionStation.

Есть три различных типа Глобальных переменных OptionStation: Глобальные переменные Ценовой Модели, Глобальные переменные Модели Волатильности и Глобальные переменные Модели Bid/Ask. Каждый из них обсуждается ниже.


Глобальные переменные Ценовой Модели

Значения Глобальных переменных Ценовой Модели могут быть установлены только в Ценовой Моделей, но они могут читаться из Модели Волатильности, Модели Bid/Ask, Стратегии Поиска и индикаторов.


Синтаксис:

GPValueNum

Параметры:

Num - число от 0 до 99.


Примечания:

Глобальные переменные предобъявлены; Вы не должны объявлять их, используя Инструкцию Объявления.


Пример:

Например, Ценовая Модель может быть написана так, чтобы вычислять установку дивиденда только один раз для первого опциона, а затем использовать это значение для всех других опционов (команды ниже - часть Годового дивиденда Ценовой Модели):

If FirstOption Then Begin
    DivOffset = OS_AnnualDividend (AnnDiv, TInDays, IntRate);
    GPValue2 = DivOffset;
End;
Price = Price - GPValue2; 


Глобальные переменные Модели Волатильности

Значения Глобальных переменных Модели Волатильности могут быть установлены только в Моделях Волатильности, но они могут читаться из Ценовой Модели, Модели Bid/Ask, Стратегии Поиска и индикаторов.


Синтаксис:

GVValueNum

Параметры:

Num - число от 0 до 99.


Примечания:

Глобальные переменные предобъявлены; Вы не должны объявлять их, используя Инструкцию Объявления.


Пример:

Например, при вычислении волатильности для цепочки опциона, Вы можете вычислить это значение один раз и сделать это значение доступным для всех других опционов, используя Глобальные переменные Волатильности:

If FirstOption then Begin
{здесь инструкция EasyLanguage для вычисления волатильности}
    GVValue1 = OurVolty;
End;
ModelVolatility (GVValue1); 


Глобальные переменные Модели Bid/Ask

Значения Глобальной переменной Модели Bid/Ask может быть установлено только в Модели Bid/Ask, но они могут читаться из Ценовых Моделей, Моделей Волатильности, Поиска Стратегии и индикаторов.


Синтаксис:

GBValueNum

Параметры:

Где num - число от 0 до 99.


Примечания:

Глобальные переменные предобъявлены; Вы не должны объявлять их, используя Инструкцию Объявления.


Пример:

Например, Модель Bid/Ask может сохранить промежуточные вычисления, которые могли бы быть полезны для индикаторов и Поиска Стратегий, используя глобальные переменные:

GBValue1 = Value1;




Содержание (Contents)
ГЛАВА 1: Введение
Что такое EasyLanguage?
Что Вы можете Создать?
Дополнительные Ресурсы
ГЛАВА 2: Основные Элементы EasyLanguage
Как работает EasyLanguage
О Языке
Ссылка на Ценовые Данные
Выражения и Операторы
Ссылка на Предыдущие Значения
Управление Датами и Временем
Использование Переменных
Использование Констант
Управляющие структуры EasyLanguage
Запись Предупреждений
Понятие Массивов
Понятие Функций Пользователя
Методы Вывода
Текстовый Объект на Ценовых Диаграммах
Trendlines на Ценовых Диаграммах
Понятие Полей Данных
Мультимедиа и EasyLanguage
ГЛАВА 3: EasyLanguage для TradeStation
Запись Торговых Сигналов
Механизм Тестирования Торговой Стратегии
Торговые Приказы
Понятие Встроенных Стопов
Запись Индикаторов и Изучений
Запись ShowMe и PaintBar
Запись ProbabilityMap
Запись ActivityBar
ГЛАВА 4: EasyLanguage для RadarScreen
Запись Индикаторов RadarScreen
Запись Индикаторов для Супердиаграмм SE
Определение Доступности Индикаторов
ГЛАВА 5: EasyLanguage для OptionStation
Анализ данных OptionStation
Чтение Данных OptionStation
Запись Индикаторов OptionStation
Запись Индикаторов для Супердиаграмм SE
Запись Поиска Стратегий
Запись Моделей OptionStation
Глобальные переменные OptionStation
ГЛАВА 6: EasyLanguage и Другие Языки
Определение Функции DLL
Использование Функций DLLs
Дополнительно О EasyLanguage DLL Extension Kit
ПРИЛОЖЕНИЕ 1. Синтаксические ошибки EasyLanguage
61 - 223
224 - 307
308 - 569
ПРИЛОЖЕНИЕ 2. Цвета, Размеры и Коды EasyLanguage




На правах рекламы: