Начните заработывать на Forex прямо сейчас! Регистрация займёт не больше минуты!

Учимся писать эксперты для MetaTrader. Урок №22

Вопрос – ответ

"… Я пишу пользовательский индикатор, в виде гистограмы, как мне сделать что бы в одном случае столбик индикатора имел один цвет, а в другом другой?…"

Как я понял из письма, если значение индикатора "проходит" по одному условию то оно рисутся одним цветом, если по другому ( не "проходит" по прошлому), то другим.

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

if УСЛОВИЕ SetIndexValue(shift,ind) else SetIndexValue2(shift,ind2);

"… В моем эксперте нужно входить в рынок через указанное количество баров после условия входа, точнее нужно делать повторную проверку, как это можно сделать?… "

Этот момент можно сделать двумя способами.
Первый способ.

В эксперте, во внешней переменной указать временной фрейм к которому прикреплен эксперт. Например, если торговля ведется на Н1, переменная, например, timeframe(3600), т.е. 3600 секундн-1 час. В эксперте при выполнении первного условия запоминать текущее время (t1=curtime), а потом для проверки использовать такую связку:

if curtime-t1>timeframe*N then {…………….

curtime – количество секунд прошедших с 0 часов, 1 января 1970 года.
t1- значение curtime N секунд назад
N- количество нужных баров

Второй способ.

Второй способ более универсален. При первом условии в переменную, например, Barr сохраняется номер текущего бара, bars, Barr=bars.

if Barr+N>=bars then {…….

N- количество нужных баров

"… Как сделать чтобы в пользовательском индикаторе отображалось 3 линии?.. "

Если Вы используте индикатор в новом окне, т.е., не в окне с ценам, то никак. МТ на текущий момент поддерживает только 2 массива данных пользовательского индикатора.

Если индикатор используется в одном окне с ценами, то можно написать несколько (разбить на несколько) индикаторов и использовать их одновремменно.

" …Я написал пользовательский индикатор, он нормально работает, но отображается не на всей истории котировок. Почему?…"

Дело в том, что сложные пользовательские индикаторы, содержащие в себе серьезные рассчеты "подвешивают" МТ. С такими индикаторами МТ может довольно сильно тормозить, если это происходит, уместным будет ограничить отображение индикатра на N последних барах. Если нужно протестировать исхорию с использование этого индикатора, лучше встроить его в эксперт.

На всякий случай ограничение отображение индикатора будет выглядеть так:

For shift = 0 To Nbars Begin

или так

For shift =Nbars Downto 0 Begin

"…Мой эксперт иногда очень долго пытается открыть позицию, а иногда открывает сразу. Почему так происходит?…"

В функции установки ордера, четвертым параметром идет параметр "slippage".

SetOrder(operation,lots,price,slippage,stoploss,takeprofit,color)

От него зависит скорость и точность исполнения ордера. Slippage это максимально допустимое проскальзывание для того что бы ордер открылся. На спокойном рынке, например, для евры можно использовать значение менее 3 пунктов, на американской сессии лучше, на мой взгляд, использовать 3-4 пункта.

Заключение

Если у Вас остались вопросы по этому материалу или возникли новые, обязательно пишите мне и я очень постараюсь ответить всем.

Халхальян Артур
[email protected]

Все материалы рубрики Трейдеру Forex

Forex журнал на subscribe.ru