Wealth-Lab - Создание торговых систем в ChartScript Editor

: Function ereg() is deprecated in /home/marketprofit/msnet/html/sites/all/modules/paging/paging.module on line 193.


Рассмотрим простейший пример создания торговой системы на основе двух простых скользящих средних (SMA) в Wealth-Lab Developer. Пусть нам необходимо создать торговую систему со следующими правилами: 1. Если SMA с периодом усреднения 8 больше SMA с периодом 21, то необходимо купить по цене закрытия текущего бара. 2. Если же SMA с периодом 8 становится меньше SMA с периодом 21, то необходимо закрыть позицию и продать по цене закрытия текущего бара. О том, как нанести на диаграмму графики скользящих средних описано в разделе "Работа с графиками цен и индикаторами". Выберите пункт меню "File>New ChartScript".
В открывшемся окне "ChartScript Window" войдите на вкладку "Editor". Вы увидите, что Wealth-Lab автоматически создал код сценария, который является простейшим шаблоном для торговой системы. В коде при помощи комментариев уже обозначены места, куда необходимо вписать свои торговые правила для входа и выхода из позиции (Entry Rules и Exit Rules). Как следует из кода сценария, суть заключается в том, чтобы при последовательном переборе баров при помощи оператора цикла, проверять выполнение некоторых условий и на основании их истинности открывать и закрывать торговые позиции.
ChartScripts
Разместим наши торговые правила между операторами begin и end. В результате получим следующий код:
ChartScripts
К начальному коду были добавлены следующие выражения:

if (SMA(bar,#Close,8)>SMA(bar,#Close,21)) then BuyAtClose(bar,'buy MA'); if SMA(bar,#Close,8) где, SMA - функция для вычисления простой скользящей средней (Simple Moving Average). Синтаксис:

SMA( Bar: integer; Series: integer; Period: integer ): float;

Bar - номер бара; Series - последовательность усредняемых параметров, в нашем случае - это цена закрытия #Close; Period - период усреднения. BuyAtClose - функция, которая устанавливает длинную позицию по цене закрытия определенного бара. Синтаксис:

BuyAtClose( Bar: integer; SignalName: string );

Bar - номер бара; SignalName - название сигнала, этот параметр может быть пустым. Это имя отражается, например, на вкладке "Trades" и необходимо для идентификации сигналов, которых может быть несколько. SellAtClose - продает и закрывает открытую длинную позицию по по цене закрытия определенного бара. Синтаксис:

SellAtClose( Bar: integer; Position: integer; SignalName: string );

Bar - номер бара; Position - номер, идентификатор закрываемой позиции. Для закрытия всех длинных позиций нужно указать #All. Мы использовали здесь функцию LastPosition,которая возвращает номер последней открытой позиции Эта функция удобна в торговых системах, которые работают только с одной открытой позицией за один трейд. SignalName - название сигнала. После того, как Вы внесли изменения в код, сохраните его и нажмите F5, или кнопку Если в скрипте отсутствуют ошибки, то на ценовом графике вы увидите результат работы системы, а именно сигналы на покупку и продажу в соответствие с указанными в скрипте правилами.