Учимся писать эксперты для 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 пункта.
Заключение
Если у Вас остались вопросы по этому материалу или возникли новые, обязательно пишите мне и я очень постараюсь ответить всем.
Халхальян Артур
artur@fxtest.ru