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

    7 Медалей
    3.3.3.3. Уровень приоритета операторов

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


    Рис.3.10. Уровень приоритета операторов.

    Выражение “H+L/2” (без скобок) будет считаться Метастоком как “L/2” плюс “Н”, поскольку деление имеет более высокий приоритет. Этот результат будет отличен от значения получаемого в случае "(H + L) / 2."
    Для простоты контроля приоритета рекомендуется всегда использовать скобки.
  2. 8,713
    Комментарии
    98
    Темы
    15649
    Репутация Pro
     
    Старожил

    7 Медалей
    3.3.3.4. Операторы присваивания и сдвига

    Оператор присваивания:

    :=

    Оператор присваивания значений параметру индикатора для ввода с клавиатуры:

    N1:=Input(“Имя переменной”, Min, Max, По умолчанию).

    Так, например, запись M:=Input(“Период”, 10, 120, 24) обеспечит возможность задания с клавиатуры значений параметра индикатора, который будем обозначаться во внутренних формулах индикатора буквой M, а во внешнем интерфейсе будет иметь имя "Период". Диапазон изменения значений от 10 до 120, по умолчанию параметру M присваивается значение 24.

    Оператор присваивания вида внутренней функции индикатора:

    F:= формула функции

    Например, определив M:=(h+l)/2, в дальнейшем можно пользоваться обозначением M для медианной цены, а не переписывать формулу каждый раз.

    Оператор сдвига (ссылка):

    Ref(C,-n).

    Например, Ref(C,-1) равно значению цены закрытия на один интервал назад. Ref(H,+1) равно значению максимальной цены на один интервал вперед, т.е. будущей цены.

    Оператором Ref() нужно пользоваться крайне осторожно при положительных сдвигах, так как можно создать очень эффективную, но неработоспособную торговую стратегию, которая «подсматривает» в будущее.
  3. 8,713
    Комментарии
    98
    Темы
    15649
    Репутация Pro
     
    Старожил

    7 Медалей
    3.3.4. Формулы и параметры функций

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

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

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

    Большой, но не полный перечень функций приведен в справочном разделе на форуме.
    Исчерпывающие сведения о функциях для любой используемой версии Метасток приведены в разделе программы, вызываемой диалогом «Помощь».

    Функция sqrt() требует задание параметра, находящегося внутри скобок (например, “CLOSE” как в предыдущей формуле).
    Другие функции, такие как macd(), вообще не требуют никаких параметров.
    Так, например, следующая формула суммирует квадратный корень максимальной цены со значением индикатора MACD:

    sqrt(HIGH ) + macd().

    Некоторые функции требуют нескольких параметров внутри скобок. Например, для функции “Price Oscillator” необходимо 4 параметра:

    oscp( 10, 20, EXPONENTIAL, % ).

    В приведенной выше формуле Метасток рассчитывает 10-20 экспоненциальный Ценовой осциллятор при процентном методе калькуляции.
    Если Вы забыли вставить необходимый параметр, Метасток выдаст окно с напоминанием о требуемом параметре.
  4. 8,713
    Комментарии
    98
    Темы
    15649
    Репутация Pro
     
    Старожил

    7 Медалей
    3.3.5. Контроль ошибок в формулах

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

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

    Именем функции скользящей средней является "mov".

    Вводим mov и нажимаем ОК.
    Курсор будет позиционирован после имени “mov” и появится сообщение “символ “(“ должен стоять непосредственно за именем функции”.

    Добавляем “(“, т.е. в поле будет mov(, и нажимаем ОК.
    Курсор будет позиционирован после “(” и появится сообщение “Цена или функция предполагается”.

    Вводим ценовой идентификатор “CLOSE”, т.е. mov(CLOSE, и опять нажимаем ОК, и т.д.

    Если продолжить этот процесс, то Метасток будет выдавать посдсказки до тех пор, пока синтаксис формулы не будет правильным, т.е. mov(CLOSE, 10, EXPONENTIAL).

    Таким образом, если есть сомнения в правильности синтаксиса формулы или функции, достаточно нажать ОК.
  5. 8,713
    Комментарии
    98
    Темы
    15649
    Репутация Pro
     
    Старожил

    7 Медалей
    3.3.6. Подстановка функций в качестве аргумента другой функции

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

    Пример 1.

    stdev( stoch(5,3) 10 )

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

    Пример 2.

    mov( rsi(15), 10, SIMPLE)

    Рассчитывается 10-периодная простая скользящая средняя 15-периодного индекса относительной силы (RSI).

    Пример 3.

    mov( mov( rsi(15), 20, W), 10, SIMPLE)

    Рассчитывается 20-периодная взвешенная скользящая средняя от 15-периодного RSI, а затем рассчитывается 10-периодная простая скользящая средняя от первой скользящей средней.
  6. 5
    Комментарии
    0
    Темы
    5
    Репутация Pro
     
    Новичок

    2 Медалей
    Цитата Сообщение от neophyte Посмотреть сообщение

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

    Я конвертирую данные по схеме:
    "С Метастоком в комплекте идет программа Даунлоадер. График МТ сохраняете в формате .prn, потом открываете даунлодер, нажимаете кнопку "convert", в открывшемся окошке выберете file type: ASCII text, file name - ваш сохраненный .prn-файл и жмете ОК (в выскочившем окошке указываете название для нового графика). Запускаете Метасток и открываете файл сконвертированный при помощи Даунлодера."

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

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

    7 Медалей
    3.3.7. Функция if()

    Функция if() используется для создания общепринятой конструкции (если ... то). Функция включает пять параметров как показано в следующем примере.

    if( CLOSE > (HIGH+LOW)/2, +V, -V ).

    Эта формула возвращает +V, если цена закрытия больше чем средняя цена, и -V, если условие не выполняется.
  9. 8,713
    Комментарии
    98
    Темы
    15649
    Репутация Pro
     
    Старожил

    7 Медалей
    3.3.8. Использование операторов «And» и «Or»

    Если формула требует выполнения нескольких условий, эти условия можно комбинировать при помощи операторов «and» и «or».

    Например, если необходимо, чтобы Метасток генерировал +1, если MACD больше 0 и RSI больше 70, то соотвествующая формула будет выглядеть следующим образом.

    If( macd() > 0 AND rsi(14) > 70, +1, 0 ).

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

    If(macd() > 0 AND rsi(14) > 70 AND CCI(14) > 100 AND close > mov(close, 10, e), +1, 0).

    Операторы AND и OR можно сочетать и комбинировать внутри одной формулы.
    Например,

    If((macd() > 0 OR close > mov(close, 10, e)) AND rsi(14) > 70, +1, 0)

    Формула представленная выше возвращает “+1”, если MACD больше 0 или если цена закрытия больше ее скользящей средней, а RSI больше 70 при выполнении любого из двух первых условий.

    Заметим, что вокруг условия OR были поставлены круглые скобки. Это обусловлено тем, что оператор AND имеет более высокий приоритет и связанное с ним условие в противном случае было бы выполнено первым, что не соответствует нашей задаче. (См. 3.3.3.3. Уровень приоритета операторов.)
  10. 8,713
    Комментарии
    98
    Темы
    15649
    Репутация Pro
     
    Старожил

    7 Медалей
    3.3.9. Ссылка на другие пользовательские индикаторы

    Пользовательские индикаторы могут ссылаться на другие пользовательские индикаторы при помощи функции fml().
    Например, функция "fml( "My MACD")" возвращает значение формулы которая имеет имя "My MACD". Полного имени не требуется, достаточно той части, которая делает имя уникальным.
    Следующая формула отображает значение формулы с именем "Down Day", если цена закрытия меньше или равна 10-дневной скользящей средней цены закрытия. В противном случае, отображается значение формулы "Up Day".

    if ( close <= mov(close, 10, E), fml("Down Day"), fml("Up Day") ).

    Ссылка на формулы - путь позволяющий упростить разработку и восприятие сложных формул. Формула, включенная в другую формулу в качестве параметра, также может включать в качестве параметра другую формулу и т.д.
    Циклические ссылки (т.е. например, когда формула "My MACD" вызывает формулу "My RSI", а последняя в свою очередь опять вызывает формулу "My MACD") недопустимы и приводят к ошибке, сообщение которой появляется при попытке отображения графика формулы.

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

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