Форум трейдеров » Торговые роботы, советники, индикаторы » Механические торговые системы: проектирование и применение
+ Подписаться
Страница 13 из 52 ПерваяПервая ... 3111213141523 ... ПоследняяПоследняя
  1. 8,713
    Комментарии
    98
    Темы
    15649
    Репутация Pro
     
    Старожил

    7 Медалей
    3.4.11.3. Осциллятор A/D Чайкина
    Формула индикатора со ссылкой на встроенный индикатор «Accumulation/Distribution indicator»:

    mov( ad(), 3, E) - mov( ad(), 10, E)

    И та же формула, записанная в явном виде, используя данные п. 3.4.11.1:

    mov(cum((((C-L)-(H-C))/(H-L)) * V),3,E)-mov(cum((((C-L)-(H-C))/(H-L)) * V),10,E)

    Без разницы, какое выражение использовать, результат получим один и тот же:



    Рис.3.42.
  2. 8,713
    Комментарии
    98
    Темы
    15649
    Репутация Pro
     
    Старожил

    7 Медалей
    3.4.11.4. Баланс Объема (On Balance Volume)
    Следующая формула предназначена для расчета индикатора баланс объема («On Balance Volume»):

    cum( if( C > ref(C,-1),+V, if( C < ref(C,-1),-V, 0) ))

    Во внутренних скобках встроенной функции кумуляции (Cumulate) стоит многоступенчатое логическое выражение с использованием функций if.
    Поясним логику расчетов.
    Функция cum просто рассчитывает сумму массива в скобках. Рассмотрим, чему равны элементы этого массива, предварительно вспомнив логику функции if. Функция If(F,A,B) принимает значение A при истинном F (F=1), и принимает значение B при F=0.

    В качестве F у нас используется выражение C > ref(C,-1), т.е. проверяется условие, что текущая цена закрытия больше цены закрытия предыдущего интервала.

    В качестве A у нас используется +V, т.е. объем сделок, взятый со знаком +.
    Таким образом, если текущая цена закрытия больше предыдущей, то внутренний аргумент функции кумуляции принимает значение +V и предыдущему значению суммы прибавляется объем сделок текущего интервала.
    Если же условие C > ref(C,-1) не выполняется, то внутренний аргумент функции кумуляции принимает значение

    if( C < ref(C,-1),-V, 0)
    т.е. это тоже функция, которая принимает значения –V, если C < ref(C,-1), т.е. текущая цена закрытия меньше цены закрытия предыдущего интервала , и 0, если условие C < ref(C,-1) не выполняется.
    В результате функция кумуляции выполняет следующие действия:
    - прибавляет к предыдущему значению объем текущего интервала, если цена закрытия больше предыдущей;
    - вычитает из предыдущего значения объем текущего интервала, если цена закрытия меньше предыдущей;
    - ничего не делает, если цены зарытия совпадают.

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

    Cum( V*((C>Ref(C,-1)) - (C<Ref(C,-1))) )

    Логику этой формулы можете проследить самостоятельно.

    График индикатора представлен на рисунке 3.43.



    Рис.3.43.
  3. 8,713
    Комментарии
    98
    Темы
    15649
    Репутация Pro
     
    Старожил

    7 Медалей
    3.4.11.6. Коэффициент изменения цены (Price Rate-Of-Change)
    Следующая формула рассчитывает 12-дневную степень изменения цены (“Price Rate-Of-Change”):
    (( C - ref(C,-12)) / ref(C,-12)) * 100
    Можно также использовать функцию roc():
    roc( close, 12, % )



    Рис.3.44.
  4. 8,713
    Комментарии
    98
    Темы
    15649
    Репутация Pro
     
    Старожил

    7 Медалей
    3.4.11.7. Объемно-ценовой тренд (Price Volume Trend)
    Следующая формула использует функцию cum() для расчета объемно-ценового тренда
    cum( ((C - ref(C,-1)) / ref(C,-1)) * V)
    Эту формулу также можно написать при помощи функции roc(), как показано ниже:
    cum( roc(close, 1, %) * volume )



    Рис.3.45.
  5. 8,713
    Комментарии
    98
    Темы
    15649
    Репутация Pro
     
    Старожил

    7 Медалей
    3.4.11.8.Волатильность Чайкина (Volatility, Chaikin)
    Формула волатильности показанная ниже использует 10-дневную скользящую среднюю и 12-дневный rate-of-change:
    roc( mov( high-low, 10, E), 12, %)



    Рис.3.46.
  6. 8,713
    Комментарии
    98
    Темы
    15649
    Репутация Pro
     
    Старожил

    7 Медалей
    На этом с примерами закончим.
    При желании вы сами сможете построить сотни самых различных индикаторов, основываясь на собственных идеях и/или литературных источниках.
  7. 8,713
    Комментарии
    98
    Темы
    15649
    Репутация Pro
     
    Старожил

    7 Медалей
    3.5. Термины и определения

    Знание (или запоминание) этих терминов для работы с Конструктором индикаторов не обязательно, но при чтении литературных источников может облегчить понимание того, что хотели сказать другие авторы, использующие Метасток.

    КОММЕНТАРИЙ (COMMENT): Текст, записанный внутри формулы, но не являющийся ее частью. Комментарий должен быть заключен в фигурные скобки {комментарий}.

    КОНСТАНТА (CONSTANT): Специфический тип параметра, который требует функция. Константы можно подразделить на следующие группы:

    - КОНСТАНТА МЕТОДОВ РАСЧЕТА (CALCULATION METHOD CONSTANT): Используются, чтобы определить способ расчета. Имеются процентный и абсолютный способы (PERCENT и POINTS их аббревиатуры, соответственно, % и $);
    - СРАВНИТЕЛЬНЫЕ КОНСТАНТЫ (COMPARISON CONSTANT): используются с функцией if(), для определения операции сравнения. К ним относятся: >, >=, <, <=, <>, =;
    - ФОРМУЛЬНАЯ КОНСТАНТА (FORMULA CONSTANT) : используется с функцией fml() для ссылки на другую формулу. Формульная константа специфицируется как имя другой формулы заключенное в двойные кавычки (например, fml( "My Formula" ) );
    - КОНСТАНТЫ СКОЛЬЗЯЩИХ СРЕДНИХ (MOVING AVERAGE TYPE CONSTANT): Используются для определения метода расчета скользящей средней. Имеются следующие методы : ЭКСПОНЕНЦИАЛЬНЫЙ (EXPONENTIAL), ПРОСТОЙ (SIMPLE), ВРЕМЕННОЙ (TIME SERIES), ТРИАНГУЛЯРНЫЙ (TRIANGULAR) , ПЕРЕМЕННЫЙ (VARIABLE), или ВЗВЕШЕННЫЙ (WEIGHTED). Могут использоваться аббревиатуры, соответственно E, S, T, TRI, VAR, или W;
    - ЧИСЛОВЫЕ КОНСТАНТЫ (NUMERIC CONSTANT): Одиночное числовое значение. Функции требующие числовую константу не могут воспринимать массивы данных, так как массивы данных скорее всего содержат множественные, а не одиночные числовые значения. Например "10" является числовой константой в формуле "mov(C, 10, E)."

    МАССИВ ДАННЫХ (DATA ARRAY): массив данных определяет специфическим образом организованную информацию (данные), которые используются в формуле. Массивы данных могут быть следующего вида:

    - МАССИВ ЗНАЧЕНИЙ ФУНКЦИЙ (FUNCTION RESULT ARRAY): массивы, которые создаются в результате выполнения функции;
    - ЛИТЕРАЛЬНЫЙ МАССИВ (LITERAL ARRAY): массив данных определяющий использование одиночных числовых констант;
    - МАССИВ ЦЕН (PRICE ARRAY) : Массив содержащий информацию о максимальных (high), минимальных (low) ценах , ценах закрытия (сlose) и т.д.

    ФОРМУЛА (FORMULA): комбинация комментариев, констант, функций, математических операторов и/или идентификаторов массива цен.

    ФУНКЦИЯ (FUNCTION): предопределенные математические операции, в которые могут подставляться параметры, в результате которых создается необходимый массив данных.

    МАТЕМАТИЧЕСКИЙ ОПЕРАТОР (OPERATOR, MATHEMATICAL) : “+”, “-” , “*”, “/”.

    ПАРАМЕТР (PARAMETER): идентификатор значений подставляемых в функцию, если функция имеет несколько параметров, они отделяются запятой.

    ПРИОРИТЕТ (PRECEDENCE): порядок в котором выполняются операции в формуле (см. “Operator Precedence”).

    ИДЕНТИФИКАТОРЫ МАССИВА ЦЕН (PRICE ARRAY IDENTIFIERS): символы или слова используемые для ссылки на массив цен (Open, High, Low, Close, Volume, Open Interest, и выбранный график “Plot”).
  8. 8,713
    Комментарии
    98
    Темы
    15649
    Репутация Pro
     
    Старожил

    7 Медалей
    3.6. Сообщения об ошибках

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

    3.6.1. Математические ошибки в индикаторах.

    Деление на ноль (Division by zero). В формулу какое либо значение делиться на ноль. Например, в формуле "(ref(close, -1)-open)/(high - low)" деление на ноль может возникнуть, если “high” будет равно “low”.

    Ошибочная экспонента (Invalid exponentiation). Ошибка возникает при неправильном использовании экспонент.

    Неправильный логарифм (Invalid log). Возникает при попытке рассчитать десятичный логарифм 0 или отрицательного числа. Например, формула "log(high - low)" генерирует ошибку, если “high” и “low” будут равны.

    Неправильная степень (Invalid power). Возникает при попытке возвести в степень отрицательное число, если значение степени меньше 1.
    Modulus by zero. Возникает, если второй параметр в функции mod() [определение остатка от деления] равен 0. Например, формула "mod(close, high - low)" будет генерировать ошибку, если “high” равно “low”.

    Отрицательный квадратный корень (Negative square root). Возникает при попытке извлечь квадратный корень из отрицательного числа. Например, формула "sqrt(open - close)" возвратит ошибку, если “close” больше, чем “open”.
  9. 8,713
    Комментарии
    98
    Темы
    15649
    Репутация Pro
     
    Старожил

    7 Медалей
    3.6.2. Сообщения об ошибках

    Чаще всего встречаются сообщения об ошибках при попытке отобразить график индикатора с “неполной” формулой. В этом разделе приведены пояснения по наиболее общим случаям сообщений об ошибках.

    A reference to a formula name is no longer valid. (Ссылка на имя формулы непригодна)
    Сообщение появляется при попытке ссылки на несуществующую формулу.

    Does not contain an executable formula. (Не содержит исполнимой формулы)
    Попытка выполнить пользовательский индикатор, в котором нет действительных (“валидных”) формул.

    Formula too complex. (Формула слишком сложная)
    Эта ошибка появляется в случае слишком глубокого вложения функций (не формул) или, когда сложное математическое выражение, использующее множество математических операторов, не сгруппировано при помощи круглых скобок.
    Эту проблему может устранить группирование операторов при помощи круглых скобок, однако, лучшее решение - это разбиение сложной формулы на несколько небольших формул с помощью использования оператора присваивания, а затем монтирование их в главную формулу.
    Другой вариант решения проблемы, когда небольшие формулы записываются в виде индикаторов и монтируются с помощью функции fml().

    Insufficient memory to continue formula execution.(Недостаточно памяти для продолжения выполнения формулы)

    MetaStock ran out of memory to store temporary values. (Метасток выгрузился из памяти, чтобы сохранить временные значения)

    Overflow in function. (Переполнение в функции)
    Результат расчета в формуле слишком большой для запоминания.
    Формулу в этом случае нужно модифицировать, чтобы результат стал меньше. Например, разделить определенные массивы данных или результаты функций на 100.

    Too many numeric constants defined in formula.(Слишком много числовых констант определено в формуле)
    Максимум 20 различных числовых констант может быть использовано в каждой формуле. Эта ошибка может быть устранена разделением формулы на несколько небольших формул и затем соединением их при помощи функции fml().

    Value out of valid range in function.(Значение выходит за диапазон)
    Имеется ошибочный параметр в функции.
    Например, следующие формулы будут генерировать эту ошибку:
    Формула mov(C, -5, E), потому что “-5” является некорректным значением для временного периода скользящей средней.
    Формула mov(C, 200, E), если загруженных данных меньше чем 200 периодов.
    Формула mov(macd(), 74, E), если было загружено данных меньше, чем 100 периодов. Дело в том, что MACD выводится на экран, начиная с 26 дня (периода) и естественно, что скользящая средняяя MACD с периодом 74, начнет выводиться на экран начиная с 100 дня (периода).
  10. 8,713
    Комментарии
    98
    Темы
    15649
    Репутация Pro
     
    Старожил

    7 Медалей
    4. Проектирование и тестирование торговых систем

    4.1. Тест системы.

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

    Используя Местасток можно:
    • разработать торговую систему, задавая и модифицируя собственные правила торговли;
    • протестировать торговую систему;
    • проверить результаты тестирования и просмотреть характер исполнения торговых правил на графиках цен при помощи стрелок покупки/продажи и линии баланса (equity line) на графике, а также при помощи табличных отчетов;
    • автоматически оптимизировать параметры торговых правил, чтобы улучшить результаты;
    • сравнить различные торговые системы, чтобы определить ту, которая лучше всего работает на данном рынке в определенном периоде исторических данных.

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

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

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

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

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

Вверх
РегистрацияX

чтобы писать, читать, комментировать