Главная > Обучение > Статьи > Приемы работы в Visual JForex, часть 1
Приемы работы в Visual JForex, часть 1

Откройте аккаунт, чтобы оценить удобство работы на MTBankFX.

Рекомендуем вам перед началом работы на реальном аккаунте обязательно потренироваться на демо-аккаунте.

Приемы работы в Visual JForex, часть 1

Для успешного конструирования в Visual JForex не требуется много знаний. Рабочих блоков в конструкторе всего пару десятков, поэтому на первое место выходит логика - как расставлять эти блоки, чтобы получить от робота желаемое действие.

Рассмотрим несколько приемов.

Привязать сделку ко времени

От трейдеров часто поступает вопрос, как привязать то или иное действие робота ко времени. Например, к конкретному часу. Предположим, нам необходимо, чтобы робот начинал работать с 9 утра по Гринвичу, а заканчивал в 16.00.

Решается следующим образом.

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

Рис. 1. Три первых блока. Обратите внимание на период по умолчанию - часовой.

Четвертый блок - GetTimeUnit. В его настройках на выходе укажем Hour. Так мы в виде целого числа получим час бара, так и назовем эту переменную - Chas_Bara.

Рис. 2. Получение часа бара.

Из списка автоматически создаваемых переменных необходимо взять Candle Time, которая находится в массиве Candle 12.

Переходим к указанию часа начала и окончания работы. Здесь будут нюансы. Поскольку мы опираемся на уже закрывшийся бар, то требуемый час нужно уменьшить на 1. Например, если мы хотим, чтобы робот стартовал в 9.00 GMT, то закрывшийся перед этим бар должен быть 8-часовым.

Рис. 3. Настройка новой переменной Chas_Start.

Так мы оформили 5-й блок - If. На первом месте поставили Chas_Bara, на втором - Chas_Start. Выходить будем из знака "=", поскольку час закрывшегося бара должен равняться требуемому часу старта.

Рис. 4. Добавляем торговый блок.

При такой комбинации блоков робот откроет первую сделку ровно в 9.00 по Гринвичу.

Однако нам необходимо добавить и час окончания работы робота. Для этого создаем переменную Chas_Finish. Если нужно, чтобы робот выключался в 16.00 GMT, то эта новая переменная будет иметь значение 15.

Заключить время работы алгоритма в рамки можно так.

Рис. 5. Торговля заключена в часы между 9 и 16 по Гринвичу.

Обратите внимание, как происходит выход из каждого блока. В такой ситуации робот каждый час будет совершать какое-то действие, например, открывать сделку на покупку.

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

Как сделать счетчик

Часто возникает необходимость закрывать позицию после N количества баров. Например, нужно держать позицию открытой только 5 баров.

В таком случае нам нужно убедиться, что позиции открыты. Вызываем блок If и добавляем в него на первое место переменную PositionsAmount из массива Open Positions (находится в списке Positions Info).

Рис. 6. Получить количество открытых позиций.

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

Рис. 7. Увеличение счетчика на 1.

Для этого после блока If ставим блок Calculation и на первое и последнее место добавляем одну и ту же переменную - Schetchik. В настройках указываем сумму, а прибавлять будем "1".

Важно! Стартовое значение переменной Schetchik должно быть "0".

Рис. 8. Настройка переменной Schetchik.

Счетчик поставлен, осталось прописать действие, когда он достигнет, например, значения "5". При этом позицию нужно будет закрыть, а сам счетчик обнулить. Это важно. Поскольку, если его не обнулить, он так и будет увеличиваться на "1".

Рис. 9. Настройка новой переменной лимита счетчика - Limit_Schetchik.

Далее выходим из знака "=" (можно добавить и ">", но необязательно) и подключаем блок Positions Viewer. Он будет читать только открытые позиции и следующим блоком - Close and Cancel Position - будет происходить закрытие этой позиции.

Рис. 10. Закрытие позиции по достижении счетчиком своего лимита.

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

Для этого с помощью блока Assign присвоим значение "0" переменной Schetchik.

Рис. 11. Обнулить счетчик.

Готово. Теперь всякий раз, когда открывается новая позиция, робот начинает отсчет. Как только количество баров, на протяжении которых открыта позиция, достигает 5-ти, робот закрывает позицию и - важно! - обнуляет счетчик.

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

Смотрите также вебинар "Приёмы работы в конструкторе Visual JForex. Как научить робота выполнять всё".

Автор – Молодяшин Роман, тренер MTBankFX