Рассмотрим простейший пример создания торговой системы на основе двух простых скользящих средних (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). Как следует из кода сценария, суть заключается в том, чтобы при последовательном переборе баров при помощи оператора цикла, проверять выполнение некоторых условий и на основании их истинности открывать и закрывать торговые позиции.
Разместим наши торговые правила между операторами begin и end. В результате получим следующий код:
К начальному коду были добавлены следующие выражения:
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, или кнопку
Если в скрипте отсутствуют ошибки, то на ценовом графике вы увидите результат работы системы, а именно сигналы на покупку и продажу в соответствие с указанными в скрипте правилами.